Gå til innhold

Skript henter ikke alle bilder fra mappe?


Anbefalte innlegg

Hei.

Har et problem med et knotete php-skript. Håper noen kan hjelpe...

 

Jeg skal hente bilder fra ei mappe, og legge dem ut i en tabell som klikkbare lenker. Problemet er at det ligger 60 bilder i mappa, men slik skriptet er nå, hentes bare 50 ut.

Skriptet ser slik ut:

 

<?php //dette skriptet henter bilder fra ei mappe og skriver ut i htmltabell
 echo "\n";
 echo'<table border="0" width="100%" align="left">'."\n".'<tr>'. "\n";
 $mappe = "bilders";
 $bildeFetch = opendir($mappe);
   
 //Henter ut fra mappe, lager thumbs og skriver ut i tabell med fem celler per rad
 while(false!==($sjekk = readdir($bildeFetch))){
   if($i<5){
     if($sjekk !='..' && $sjekk !='.' && $sjekk !='' && $sjekk !='Thumbs.db'){
       echo '<td align="center" valign="middle">'."\n".'<a href="'.$mappe.'/'.$sjekk.'"title="Klikk for stor versjon">'."\n".'<img            
       src="'.$mappe.'/'.$sjekk.'" width="50" border="0"></a></td>'. "\n";
       $i++;
     }
   }
   else{
     echo '</tr>'. "\n".'<tr>'. "\n";
     $i=0;
   }                
 }      
 echo'</tr>'. "\n".'</table>'. "\n";
?>

 

Jeg veit at det er en dårlig løsning å lage thumbnailer av bildene slik dette skriptet gjør, men det skal jeg fikse seinere (skal lage thumbnails ved upload, og hente opp disse med lenke til storversjon, tenkte jeg). Bildene som ligger ute nå er dessuten bittesmå i utgangspunktet (mobilbilder).

 

Ser noen noe som er totalt feil her?

Lenke til kommentar
Videoannonse
Annonse

Slik det er nå så hopper skriptet over hver femte fil.

 

Prøv heller:

while(false!==($sjekk = readdir($bildeFetch))){

    if($sjekk !='..' && $sjekk !='.' && $sjekk !='' && $sjekk !='Thumbs.db'){

      if($i == 5){
        echo '</tr>'. "\n".'<tr>'. "\n";
        $i=0;
      }     

      echo '<td align="center" valign="middle">'."\n".'<a href="'.$mappe.'/'.$sjekk.'"title="Klikk for stor versjon">'."\n".'<img            
      src="'.$mappe.'/'.$sjekk.'" width="50" border="0"></a></td>'. "\n";
      $i++;
    }        
}  

Endret av svatt
Lenke til kommentar

Men når noe fungerer får man jo lyst til å flikke litt mer på det slik at det fungerer enda bedre...

 

Ser at slik skriptet er nå så skriver det ikke ut tabellen helt html-riktig. Hvis en rad har mindre enn fem bilder, blir det for få celler i forhold til de andre radene. Jeg prøvde å sette en teller som telte nedover og bruke denne til å bestemme colspan, men det funka ikke slik jeg gjorde det.

 

Finnes det en lur måte å få colspan til å bli automatisk riktig på?

Lenke til kommentar

<?php //dette skriptet henter bilder fra ei mappe og skriver ut i htmltabell
echo "\n";
echo'<table border="0" width="100%" align="left">'."\n";
$mappe = "bilders";
$bildeFetch = opendir($mappe);
  
//Henter ut fra mappe, lager thumbs og skriver ut i tabell med fem celler per rad
$perRad = 5;
$i = 0;
while(false!==($sjekk = readdir($bildeFetch))){

   if($sjekk !='..' && $sjekk !='.' && $sjekk !='' && $sjekk !='Thumbs.db'){

     if($i == 0){
       echo '<tr>'. "\n";
       $i=$perRad;
     }     

     echo '<td align="center" valign="middle">'."\n".'<a href="'.$mappe.'/'.$sjekk.'"title="Klikk for stor versjon">'."\n".'<img            
     src="'.$mappe.'/'.$sjekk.'" width="50" border="0"></a></td>'. "\n";

     $i--;
     if($i == 0){
       echo '</tr>'. "\n";
     }     

   }        
} 

if ($i > 0) {
 echo '<td colspan="'.$i.'"></td></tr>'."\n";
}
echo '</table>'. "\n";

 

Nå teller $i ned fra 5 til 0. Hver gang $i er 0, så startes en ny rad. Dersom raden ikke er full, så blir det "ryddet opp" etter while-løkken. Jeg har ikke testet det, men det burde virke.

Endret av svatt
Lenke til kommentar

Takk for hjelpa Svatt, men det funker ikke dessverre.

Det er akkurat samme resultat som før pluss at det skrives ut en <td> med colspan, men ingen bilder nederst.

Tror du du kan se på koden en gang til? Jeg har sett meg totalt blind på det iallfall :dontgetit:

Lenke til kommentar

Jeg har testet det, og her virker det slik jeg mener det skal. Dersom den siste raden har mindre enn fem bilder, så blir det laget en ekstra (tom) celle med colspan lik antall bilder som "mangler" i den siste raden (dvs. cellen fyller opp de tomme plassene i raden). Dersom den siste raden er full, så blir ikke den ekstra cellen (med colspan) laget.

 

Hvis du mener at det siste bildet skal ligge i en celle med colspan, så må skriptet skrives litt om. Men hvis det siste bildet ligger i en slik celle med colspan så vil det ikke være alignet med bildene over.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...