Tableau image php

Bonjour,

J'aimerai obtenir une "galerie" d'images de ce type : www.maliki.com

J'ai essayé d'utiliser ce code trouver sur le net :

<?php

$serveur = 'localhost';
$utilisateur = 'root';
$motdepasse = 'xx';
$base = 'xx';

mysql_connect($serveur,$utilisateur,$motdepasse) or die ("erreur de connexion serveur");
mysql_select_db($base) or die ("erreur de connexion base");

$query1 = "select count(*) from photos";
$result1 = mysql_query($query1);
$row1=mysql_fetch_row($result1);

$query = "SELECT * from photos";
$result = mysql_query($query);
echo "<table>";
$i=0
while($row = mysql_fetch_row($resultg)){
$a1=$row[0];

for($i;$i<$row1;$i++)
{

echo "<tr>"; //tu vois ici une seule <tr> pour dire que c'est ligne

echo "<td><img src='le chemin de ton image (possible avec une simple requête select et tu stocke le chemin dans un variable)'></td>";
echo "<td><img src='le chemin de ton image'></td>";
echo "<td><img src='le chemin de ton image'></td>";

echo "</tr>";

$i=$i+3;
}

}
echo "</table>"; # on ferme le tableau ici pr qu'il ne répète pas a chaque itération..

?>

Ma table Photos ne contient que 2 champs. La clé primaire et un champ LienPhotos.

Le script fonctionne pas et j'en est absolument besoin.. Mon stage se finit demain midi :(

Merci d'avance !

5 réponses

  1. Yes,
    j'ai écrit ça vite fait hier entre 2 trucs et i'ai fait pas mal de CC d'ou les p'tites erreurs :) mais l'esprit était la.
    pour info :
    $iCptLine == 0;
    Mieux vaut mettre
    $iCptLine = 0; // le double = étant utllisé lors de tests et non lors d'une affectation

    $iCptLine==$iCptLine++;
    Mieux vaut mettre juste $iCptLine++; //c'est la syntaxe raccourci pour $iCptLine += 1;


    Zep3k!GnO
    On est des rangers mec, des rangers...
    1. J'ai résolu mon problème !!! Merci beaucoup pour la piste que tu m'as donné.
      J'ai changé mon compteur de place, de plus $iCptLine == 0 ne renvoyait pas la valeur 0 du coup il n'y avait de pas de passage à la ligne suivante.

      J'ai changé comme ceci:

      $query = "SELECT LienPhotos from photos";
      $result = mysql_query($query) or die('Error mysql : '.mysql_error());

      if(mysql_num_rows($result) > 0){
      echo "<table align='center'>";
      $iCptLine == 0;
      while($row = mysql_fetch_assoc($result))
      {

      if($iCptLine == 0)
      {
      echo "<tr>";
      }

      echo "<td>".$row['LienPhotos']."</td>";

      $iCptLine==$iCptLine++;
      if($iCptLine == 3)
      {
      $iCptLine='';
      echo "$iCptLine";
      echo "</tr>";
      }

      }
      echo "</table>";
      }else{
      echo "Il n'y a pas d'images en base.";
      }

      ?>
      1. J'arrive a afficher mes images mais il me reste un problème !
        Je ne sais pas comment corriger la boucle, en faite quand le compteur = 3 on change de ligne on met le compteur à 0.
        Juste après tu met le compteur a incrémenter, du coup la condition pour ouvrir une ligne ne fonctionne pas!

        Je me retrouve donc avec une ligne à 3 colonnes puis une deuxieme ligne ou TOUTES les images se suivent.

        Merci beaucoup pour la piste, j'essai de corriger la boucle mais j'ai pas d'idée là.

        Voilà mon code actuel:

        <?php

        $serveur = 'localhost';
        $utilisateur = 'root';
        $motdepasse = 'xx';
        $base = 'xx';

        mysql_connect($serveur,$utilisateur,$motdepasse) or die ("erreur de connexion serveur");
        mysql_select_db($base) or die ("erreur de connexion base");

        $query = "SELECT LienPhotos from photos";
        $result = mysql_query($query) or die('Error mysql : '.mysql_error());

        if(mysql_num_rows($result) > 0){
        echo "<table>";
        $iCptLine == 0;
        while($row = mysql_fetch_assoc($result))
        {

        if($iCptLine == 0)
        {
        echo "<tr>";
        }

        echo "<td>".$row['LienPhotos']."</td>";

        if($iCptLine == 3)
        {
        $iCptLine == 0;
        echo "</tr>";
        }

        $iCptLine==$iCptLine++;
        }
        echo "</table>";
        }else{
        echo "Il n'y a pas d'images en base.";
        }

        ?>
        1. Merci de m'avoir répondu, ton code ne fonctionne pas. Il me renvoi toujours "Il n'y a pas d'images en base"

          Alors qu'avec une simple requête qui affiche en liste j'ai bien mes images.
          1. J'ai résolu une partie du problème, tu as écrit:

            if(mysql_num_rows($query) > 0)

            La bonne syntaxe est :

            if(mysql_num_rows($result)> 0)

            Du coup je n'ai plus le message qui dit qu'il n'y a pas d'images en base.

            Par contre mon autre problèmes est :

            Le résultat de la requête s'affiche toujours en ligne ... Et au lieu de m'afficher mes photos cela affiche comme ceci:

            LienPhotos
            LienPhotos
            LienPhotos
            LienPhotos
            LienPhotos
            LienPhotos
            LienPhotos
        2. C'est bien parce que le select count(*) , m'a fait mal au coeur pour la base de donnée... :
          <?php
          define("NB_IMG_PER_LINE", 3);
          
          $serveur = 'localhost';
          $utilisateur = 'root';
          $motdepasse = 'xx';
          $base = 'xx';
          
          mysql_connect($serveur,$utilisateur,$motdepasse) or die ("erreur de connexion serveur");
          mysql_select_db($base) or die ("erreur de connexion base");
          
          $query = "SELECT 'LienPhotos' from 'photos'";
          $result = mysql_query($query) or die('Error mysql : '.mysql_error());
          
          if(mysql_num_rows($query) > 0){
              echo "<table>";
              $iCptLine = 1;
              while($row = mysql_fetch_assoc($result)){
                  if($iCptLine == 1){
                      echo "<tr>";
                  }
                  echo "<td><img src='".$row['LienPhotos']."'/></td>";
                  if($iCptLine == NB_IMG_PER_LINE){
                      $iCptLine = 1;
                      echo "</tr>";
                  }
                  $iCpt++;
              }
              echo "</table>";
          }else{
              echo "Il n'y a pas d'images en base.";
          }
          ?> 
          


          J'ai pas testé le code, mais dans l'esprit ça le fera + avec ça !