Source de affiche_galerie.php

<?php

  // Affiche galerie.php par FE. Janvier 2006
  // script PHP v4.0
  //
  // Crée un tableau avec le contenu du dossier
  // indiqué dans les constantes
  //
  // affiche soit un tableau si pas de variables $_GET
  // ou une image unique si $_GET["numimg"] = n
  //
  // TODO : inclure le fichier dans la page où on veut la galerie
  //

  // constantes

  define("NB_COLS" , 3);
  define("URL_IMG", "./dessins/");
  define("URL_MINIS", "./dessins/miniatures/");
  define("URL_SELF", "./galerie.php");

  // chargement du fichier d'informations

  $dessins_infos = array ();
  $file = fopen(URL_IMG . 'comments-fr.txt', 'r');
  while(! feof($file))
  {
     $strbuf =  trim(fgets($file, 4096));
     array_push($dessins_infos, explode(";" , $strbuf));
  }
  fclose($file);

  // ALGORITHME
  //
  // - soit on affiche un tableau avec les vignettes ($numimg == -1)
  // - soit on affiche une image aggrandie


  $numimg = isset($HTTP_GET_VARS["numimg"]) ? $HTTP_GET_VARS["numimg"] : -1;
  // mieux : utiliser $_GET au lieu de $HTTP_GET_VARS

  if($numimg == -1) {
    // pas de numéro d'image : afficher un tableau avec les vignettes
    // sur trois colonnes

    echo '<table class="table_galerie">';

    $i = 0;

    while($i < count($dessins_infos))
    {

      // préparation des attributs pour <a> et <img>
      //  bien sûr on peut utiliser DOMDocument->createAttribute()
      // si l'environnement est PHP > 5.0
      $href = 'href="' . URL_SELF . '?numimg='. $i . '"';
      $src = 'src="' . URL_MINIS . $dessins_infos[$i][0] . '"';
      $alt=  'alt="'. $dessins_infos[$i][1]. '"';

      // formatage du tableau - modulo NB_COLS pour les line-breaks
      if($i % NB_COLS == 0)
        echo "<tr>";
      echo "  <td>";
      echo "    <a $href>";
      echo "      <img $src $alt>";
      echo "    </a>";
      echo "  </td>";
      if($i % NB_COLS == (NB_COLS - 1))
        echo "</tr>";

      // etc ...
      $i++;
    }
    echo"</table>";

  } else {

    // sinon, il y a un numéro d'image : aficher l'image en grand
    // avec deux liens "précédent" et "suivant"

    $c = count($dessins_infos);

    // calcul de l'indice des images précédente et suivantes
    $p = ($numimg > 0) ? $numimg-1 : $c-1;
    $s = ($numimg < ($c-1)) ? $numimg+1 : 0;

    // préparation des attributs src, alt et href
    //  bien sûr on peut utiliser DOMDocument->createAttribute()
    // si l'environnement est PHP > 5.0
    $href_precedente = 'href="' . URL_SELF . '?numimg=' . $p . '"';
    $href_suivante = 'href="' . URL_SELF. '?numimg='  . $s . '"';
    $src_courante = 'src="' . URL_IMG . $dessins_infos[$numimg][0] . '"';
    $alt_courante = 'alt="' . $dessins_infos[$numimg][1] .'"';
    $class_courante = 'class="grande_image"';
    $href_vignettes = 'href="' . URL_SELF . '"';

    // formatage des liens précédent, suivant et retour vignettes
    echo '  <div class="liens_vignettes">';
    // -- lien image precedente
    echo '    <div>';
    echo "      <a $href_precedente>Image précédente</a>";
    echo '    </div>';
    // -- commentaire sur l'image courante et retour au sommaire
    echo '    <div>';
    echo "      <p><a $href_vignettes>Retour aux vignettes</a></p>";
    echo '      <p>' . $dessins_infos[$numimg][1] . '</p>'; // description
    echo '    </div>';
    // -- lien image suivante
    echo '    <div>';
    echo "      <a $href_suivante>Image suivante</a>";
    echo '    </div>';
    // ...
    echo '  </div>';

    // grande image
    echo "<img $class_courante $src_courante $alt_courante>";

  } // else numimg

  // - THE END -
?>