2009-08-21 8 views
0

Quelqu'un m'a demandé de créer une galerie d'images PHP qui lirait les images d'un répertoire, puis créerait des miniatures pour la galerie. Il y a un répertoire avec des thumnails, et un répertoire avec des images fullsize. Je lis les noms de fichier du répertoire/thumb/et insère chaque nom de fichier en tant que valeur dans le fichier thumbArray. De là, je fais écho sur les valeurs dans thumbnail src (<img src="<?php echo $thumbArray[$i]; ?>" />) où $ i est juste un compteur. Ainsi, les images miniatures sont produites à partir du tableau, mais lorsque vous cliquez sur la vignette, il interroge le nom du fichier dans l'URL. En utilisant $ _SERVER ['QUERY_STRING'], je lis ensuite la chaîne de requête et insère la requête, (nom de fichier), dans le grand <img src"<?php echo $_SERVER['QUERY_STRING']; ?>" />. C'est limité cependant. Comme je ne peux maintenant pas lire le tableau, comme un point de référence, et ne peut plus pointer vers l'avant ou vers l'arrière dans le tableau.PHP Galerie d'images array

Ai-je plus de sens maintenant?

S'il vous plaît aider ...

<?php 
    $i = 0; 

    /* Large file name and thumbnail file name must match */ 
    /* Large image size = 480px x 300px */ 
    echo '<img class="frameImg" src="images/large/'.$_SERVER['QUERY_STRING'].'" />'; 

    ?> 
    <p id="prevNext"><a href="#">&lt;&lt; Prev </a> || <a href="#"> Next &gt;&gt;</a></p> 
    </div> 
    <div id="thumbs"> 
    <ul> 
    <?php 
    /* Must change $dir to the full path of directory all the way from root /home/user/domain/images/thumb */ 
    $dir = "*************************"; 
    $dh = opendir($dir); 

    /* Thumbnail file name and large file name must match */ 
    $thumbArray = array(); 
    while (($file = readdir($dh)) !== false) { 
     if ($file != "." && $file != "..") { 
      $thumbArray[$i]=$file; 
      echo '<li id="'.$i.'"><a href="?'.$thumbArray[$i].'"><img src="images/thumb/'.$thumbArray[$i].'" alt="Alt for '.$thumbArray[$i].'" /></a></li>'; 
      $i++; 
     } 
    } 
    closedir($dh); 
    ?> 

Répondre

1

si je vous comprends bien il vous suffit de sélectionner les valeurs suivantes et prev de votre thumbArray $ [$ i] Array.

par ex.

$prevThumb = $thumbArray[($i-1)]; 
$nextThumb = $thumbArray[($i+1)]; 

bien sûr pour le premier et le dernier, vous devez faire très attention. (Et vérifier l'existant de l'élément)


EDIT: ok je comprends.

Réorganisez votre code. vous devez lire votre répertoire sur chaque page. alors pourquoi ne pas le lire en haut de votre code dans un tableau, et faire une boucle dans ce tableau pour construire la liste des vignettes. Pour les boutons prev/next, vous pouvez maintenant utiliser l'index de votre tableau déjà construit pour trouver le nom de fichier de l'image précédente/suivante.

Est-ce que je me suis fait comprendre?

+0

Merci. Je suppose que je ne veux pas effacer. Les boutons next et prev sont supposés être pour la grande image. À l'heure actuelle, le fichier volumineux ne lit pas à partir du tableau, il ne fait que lire depuis l'URL, donc je suis incapable de faire ce que vous avez dit. Essentiellement, ce qui me dérange, c'est d'obtenir la grande image à lire dans le tableau ... –