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. 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 !
    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. 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. 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. 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...