webForumDet fria alternativet

Problem med att lista filer fran given mapp

PHP

5 svar · 575 visningar · startad av Lord Moyne

Medlem sedan jan. 2003165 inlägg
Frågan#1

Har ett problem med ett script som skall lista filer fran en agiven mapp.
Scriptet funkar pa en webbserver med en aldre version av PHP, men inte pa den nya. Sokvagen ar riktig, och det gar att lista filerna i mappen utan att det finns en index.html fil i mappen. Det skall tillaggas att jag bara gjort script i ASP tidigare och var tvungen att anvanda PHP i detta fall...

Scriptet hamtar alla filer som slutar pa g (jpg) och som borjar pa 1 och visar dem som thumbnails. Lanken till den storre bilden blir bara "pix/gallery2"

4 bilder skall visas per sida, och scriptet returnerar ratt antal sidor, men dar tar det slut.

Om det ar nagon som orkar kolla detta vore jag mycket tacksam...

Scriptet i sin helhet:

<?php

	$myPath = "/usr/local/www/VIRTUAL_WEB_PAGES/duobrella.com/pix/gallery/";
	$intCount = 0;	

	if(is_dir($myPath)) {
		if ($myDir = opendir($myPath)) {
			while (($file = readdir($myDir)) !== false) {
				if ($last = $file{strlen($file)-1} == 'g') {
					if ($first = $file{0} == '1') {
						$intCount++;
						$myImages[$intCount] = $file;
					}
				}
			}
			closedir($myDir);
		}
	}

	$intNrOfImages = $intCount;

?>

				<tr>
					<td colspan="3" height="179" bgcolor="#FFFFFF" valign="top">
						<table border="0" cellpadding="0" cellspacing="15">
							<tr>
								<td>
									<table border="0" cellpadding="0" cellspacing="2">
										<tr>
											<td width="7"><img src="pix/t.gif"></td>

									<?php

										$page = $page + 0;

										$intPages = ceil($intNrOfImages/4);
										$intStartPoint = 1+4*($page-1);
										$intCount = 0;
										$intCountB = -1;
										while($intCount < 4) {
											$intCount++;
											$intCountB++;
											if (($intCountB+$intStartPoint) <= $intNrOfImages) {
												echo "<td width=150 height=120><a href=pix/gallery/" . substr_replace($myImages[($intStartPoint+$intCountB)], '2', 0, 0) . "><img src=pix/gallery/" . $myImages[($intStartPoint+$intCountB)] . " width=150 height=120 border=0></a></td><td><img src=pix/t.gif width=21 height=1></td>";
											}
										}
									?>
										</tr>
										<tr>
											<td></td>
											<td colspan="4"><img src="pix/t.gif" width="1" height="5"><br><span class="tdsmall">

											<?php

											if ($intNrOfImages <> 0) {

												echo "Page " . $page . " of ". $intPages . "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";

												if ($page == 1) {
													echo "<font color=#999999>Previous page</font> | ";
												} else {
													echo "<a href=gallery.php?page=" . ($page-1) . ">Previous page</a> | ";
												}

												if ($page == $intPages) {
													echo "<font color=#999999>Next page</font>";
												} else {
													echo "<a href=gallery.php?page=" . ($page+1) . ">Next page</a>";
												}
											}

											?>
Medlem sedan sep. 2005114 inlägg
#2

Jag har inte direkt tid att läsa igenom efter vad du hade för fel där, men jag kan skicka en fungerande kodbit jag skrev några år sen.. Kanske hjälper dig hitta dit eget problem.

<?
	$path = "gallery/";
	$path_large = "gallery/full/";
	$imgcount = 0;
	$imglist = array();

	if ($dir = opendir($path)) {
		while($file = readdir($dir)) {
			if (ereg("[^1(.*)\.jpg$]",$file)) {
				array_push($imglist,$file);
				$imgcount++;
			}
		}
	} else {
		print "Mappen $path kunde inte öppnas.";
	}
	
	foreach ($imglist as $img) {
		print "<a href=\"$path_large$img\"><img src=\"$path$img\" /></a>";
	}
	
	print $imgcount . " image(s) found.";
?>
Medlem sedan jan. 2002241 inlägg
#3

Dapper: Kommer kanske lite sent detta inlägget men...

Hur ändrar jag i koden för att bara *.gif/*.jpg/*.bmp ska listas? Som koden är ju listas ju allt, kataloger och annat.

Medlem sedan jan. 20051 130 inlägg
#4

Dwarfen skrev:

Dapper: Kommer kanske lite sent detta inlägget men...

Hur ändrar jag i koden för att bara *.gif/*.jpg/*.bmp ska listas? Som koden är ju listas ju allt, kataloger och annat.

Det undrar jag också! Någon som vet?

Medlem sedan dec. 20025 483 inlägg
#5
if (ereg("^1.*?\.(?:jpg|gif|bmp)$",$file)) {
Medlem sedan okt. 2004129 inlägg
#6

Hittade den här och det fungerade skitbra. Precis vad jag letade efter.

Dock gjorde jag så här för att få med *.jpg och *.gif

Jag laddar bara upp dessa typer av filer så för mig fungerar nedanstående.

if (ereg("[^1(.*)\.gif|.jpg$]",$file)) {
257 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)