Tableau image php

Xella60 Messages postés 69 Statut Membre -  
Zep3k!GnO Messages postés 2049 Statut Membre -
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. Zep3k!GnO Messages postés 2049 Statut Membre 200
     
    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 !
    0
  2. Xella60 Messages postés 69 Statut Membre 3
     
    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.
    0
    1. Xella60 Messages postés 69 Statut Membre 3
       
      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
      0
  3. Xella60 Messages postés 69 Statut Membre 3
     
    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.";
    }

    ?>
    0
  4. Xella60 Messages postés 69 Statut Membre 3
     
    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.";
    }

    ?>
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Zep3k!GnO Messages postés 2049 Statut Membre 200
     
    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...
    0