16. januar 2005 - 13:02Der er
7 kommentarer og 1 løsning
Forrige/næste billede-funktion uden database
Jeg har for lang tid siden lavet et galleri-script, men folk synes der mangler en forrige/næste-funktion, hvilket jeg godt vil give dem ret i, men grunden til at jeg ikke har fået det lavet er at jeg ikke kan få det til at spille som det skal ;-)
Scriptet skal virke uden database, samt være ligeglad med om billederne er navngivet 001, 002... osv.
Den aktuelle kode ser sådan ud (Har klippet det unødvendige ud):
if (is_dir($dir)) { $handle=opendir($dir); $pics=array(); $count=0; while (($filename = readdir($handle))!==false) { if (substr($filename,-4) == ".jpg" || substr($filename,-4) == ".JPG" { if (substr($filename,0,6) == "thumb_") { $pics[$count] = $filename; $count++; } } } closedir($handle); sort($pics); reset($pics); $antal = count($pics);
if (isset($_GET["pic"])) { if (!file_exists(''.$dir.''.$_GET["pic"].'')) { echo '<div align="left">Fejl<br><li>Der findes ikke en fil med dette navn: '.$_GET["pic"].'</div><br><br><br>'; } else {
Du har en variabel der hedder count og santidig bruger du den indbyggede php funktion der hedder count. Det kan godt være php kan hitte ud af det, men det forvirrer mig. (og sikkert også dig når du prøver at rette i koden om ½år)
if (is_dir($dir)) { $handle=opendir($dir); $pics=array(); $count=0; while (($filename = readdir($handle))!==false) { if (substr($filename,-4) == ".jpg" || substr($filename,-4) == ".JPG" { if (substr($filename,0,6) == "thumb_") { $pics[$count] = $filename; $count++; } } } closedir($handle); sort($pics); reset($pics); // hvorfor resette arrayet? du har aldrig itereret med det. $antal = count($pics);
if (isset($_GET["pic"])) { if ( !in_array( $pics, $_GET["pic"] ) ) { echo '<div align="left">Fejl<br><li>Der findes ikke en fil med dette navn: '.$_GET["pic"].'</div><br><br><br>'; $_GET['pic'] = $pics[0]; // vis default istedet } } else { $_GET['pic'] = $pics[0]; // vis default billede }
if ( $antal > 0 ) { echo 'Du ser billed: '.$_GET["pic"].'<br>'; echo '<img src="'.$dir.''.$_GET["pic"].'" alt="'.$_GET["pic"] ." class="boks"></a><br>';
$billednummer = array_search( $pic, $pics ); // find index for billedet
if ( $billednummer > 0 ) { // skriv et 'forrige' link echo "<a href='" .$_SERVER['PHP_SELF'] ."?pic=" .$pics[$billednummer-1] .">Forrige Billede</a><br> } if ( $billednummer < count($pics)-1 ) { // skriv ey 'næste' link echo "<a href='" .$_SERVER['PHP_SELF'] ."?pic=" .$pics[$billednummer+1] .">Næste Billede</a><br> } } else { echo "der er slet ingen billeder i den mappe." } }
Nå, jeg har fået lavet en løsning som virker, med lidt inspiration fra jakobas indlæg... Jakoba: Hvis du vil have point, så lav lige et svar...
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.