Frågan 31 okt. 2005 20:04 #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 . " ";
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>";
}
}
?>
dapper Medlem sedan sep. 2005 114 inlägg 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.";
?>
D Dwarfen Medlem sedan jan. 2002 241 inlägg 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.
L learn Medlem sedan jan. 2005 1 130 inlägg
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?
P Peter S Medlem sedan dec. 2002 5 483 inlägg if (ereg("^1.*?\.(?:jpg|gif|bmp)$",$file)) {
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)) {