Forums Développement Multimédia

Aller au contenu

Problème affichage données dans un tableau

CODE PHP MySQL

5 réponses à ce sujet

#1 hunterkev

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 60 messages

Posté 16 March 2012 - 11:54 AM

Bonjour tout le monde,
je dois afficher ma base de données dans un tableau. Le problème c'est qu'il m'affiche toujours la dernière ligne de ma base. Je sais que ca doit être tout bête mais je sais pas comment faire.
Pouvez-vous m'aider svp ?
Merci d'avance.
Voici un bout de mon code:

$requete = "SELECT * FROM photos ";
$resultat = mysql_query($requete);
$nbresult = mysql_num_rows($resultat);                                                                 
while($row = mysql_fetch_array($resultat)) {
$all = $id .$groupe .$lienphoto .$lieu .$rubrique .$description;
$id = $row["id"];
$groupe = $row["groupe"];
$lienphoto = $dossierphoto .$groupe;
$lieu= $row["lieu"];
$rubrique= $row["rubrique"];
$description= $row["description"];
                                                         
}
?>
<table width="500" border="1" align="center">
  <tr>
        <td align="center">Id</td>
        <td align="center">Lieu</td>
        <td align="center">Rubrique</td>
        <td align="center">Description</td>
        <td align="center">Photo</td>
  </tr>
  <tr>
   <td align="center"><?php echo $id; ?></td>
        <td align="center"><?php echo $lieu; ?></td>
        <td align="center"><?php echo $rubrique; ?></td>
        <td align="center"><?php echo $description; ?></td>
        <td align="center"><img src="http://www.geconomise.com/images/realisations/<? echo $lienphoto;?>1-small.jpg" width="100" height="75" border="0"> </td>
  </tr>
  <tr bgcolor="#5BA3F9">
 
         <td align="center"><?php echo $id; ?></td>
        <td align="center"><?php echo $lieu; ?></td>
        <td align="center"><?php echo $rubrique; ?></td>
        <td align="center"><?php echo $description; ?></td>
        <td align="center"><img src="http://www.geconomise.com/images/realisations/<? echo $lienphoto;?>1-small.jpg" width="100" height="75" border="0"> </td>
  </tr>
</table>
 


#2 dcz.switcher

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 2531 messages

Posté 16 March 2012 - 18:22 PM

Salut,

C'est normal que seul le dernier enregistrement soit affiché car tu n'écris dans ton tableau qu'une fois tous les enregistrements lus

Pour écrire dans ton tableau, tu dois :

1. afficher l'en-tête du tableau
2. lancer la boucle while() et écrire à chaque lecture d'un enregistrement une nouvelle ligne : TR
2. fermer ton tableau

note : je te conseille d'utiliser les tag thead et tbody dans ton tableau, de nombreux plugin les utilisent pour par exemple proposer un tri des colonnes

ça donnerait un truc dans ce goût là :


<table>
        <thead>
                <th>
                        <td>ID</td>
                        <td>Lieu</td>
                </th>
        </thead>

        <tbody>
<?php

while( $row = mysql_fetch_array( $result ) ){
         //ecriture des lignes
         echo "<tr><td>" . $row['ID'] . "</td><td>" . $row['LIEU'] . "</td></tr>" ;
}

?>
        </tbody>
</table>
 

note, tu peux aussi utiliser une autre syntaxe (qu'on retrouve dans wordpress) pour le while

<?php while( $row = mysql_fetch_array( $result ) ) : ?>
        <tr>
                <td><?php echo $row['ID'] ?></td>
        </tr>
<?php endwhile ; ?>

"Ce que l'on conçoit bien s'énonce clairement et les mots pour le dire arrivent aisément"

embryon de site

#3 Goabonga

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 2724 messages

Posté 16 March 2012 - 18:41 PM

Pour faire moins mal à php, il est déconseillé d'assigner directement dans une condition

while ( ($data = fgetcsv ( $handle, 1000, ";" )) !== false ) ...
 


#4 dcz.switcher

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 2531 messages

Posté 16 March 2012 - 18:51 PM

Voir le messageGoabonga, le 16 March 2012 - 18:41 PM, dit :

Pour faire moins mal à php, il est déconseillé d'assigner directement dans une condition

while ( ($data = fgetcsv ( $handle, 1000, ";" )) !== false ) ...
 

Tiens je ne savais pas, quelle est la conséquence de faire avec la mauvaise façon ?
les effets sont notables quelque soit la taille de la réponse ?

En tout cas je n'ai pas lu d'info là dessus dans la doc, c'est dommage
http://fr.php.net/ma...fetch-array.php

Une chose est sûre, c'est toujours bon d'optimiser, merci pour l'astuce :Hola:
"Ce que l'on conçoit bien s'énonce clairement et les mots pour le dire arrivent aisément"

embryon de site

#5 çayjb

    dadaaaa

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 2770 messages

Posté 16 March 2012 - 23:49 PM

Ce n'est pas une question d'optimisation mais de bonnes pratiques. Celle-ci est généralement déconseillée (voir fermement découragée au sein d'une équipe de dév ^^)

Premier problème : en utilisant habituellement l'assignation dans des conditions, une erreur de type if(a=1) alros qu'on voulais faire if(a==1) ne saute pas aussi facilement aux yeux... et ne lève pas d'erreur (du moins directement).
Deuxième problème : quand on ne travaille pas seul sur un code, cette écriture est ambigüe pour la même raison.

Si on part du principe de ne pas assigner directement dans une condition els deux problèmes sont réglés.

ou on part du principe qu'on code juste pour soi et on fait bien comme on trouve joli lol ;) mais les mauvaises habitudes ont la vie dur ensuite.

#6 dcz.switcher

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 2531 messages

Posté 17 March 2012 - 08:28 AM

edit : je déplace ma réponse ici pour ne pas pourrir le post :
http://forums.mediab...ne-requete-sql/
"Ce que l'on conçoit bien s'énonce clairement et les mots pour le dire arrivent aisément"

embryon de site



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)

authorised training centre

Centre de Formation Mediabox - Adobe et Apple Authorised Training Center.

Déclaré auprès de la Direction du Travail et de la Formation Professionnelle

Mediabox : SARL au capital de 62.000€ - Numéro d'activité : 11 75 44555 75 - SIRET : 49371646800035

MEDIABOX, 23, rue de Bruxelles, 75009 PARIS

FFP