Php: répétition des enregistrement !
manoula -
j'ai un problème dans l'affichage des enregistrements qui se répété 8 fois(pour chaque enregistrement ) .Que dois je faire !!
merci d'avance
3 réponses
Affichage des permis : les enregistrements apparaissent huit fois lors de l'affichage du tableau, ce qui suggère un problème de jointure ou de parcours des résultats dans la requête SQL. Des échanges préconisent l'utilisation de jointures appropriées (INNER JOIN) sur les tables permis, sujet, adresse et architecte, afin d'éviter les doublons et d'obtenir une liste unique. D'autres conseils portent sur la méthode d'itération des résultats et sur l'emploi de SELECT DISTINCT ou d'une boucle while associée à mysql_fetch_array pour parcourir tous les enregistrements sans réinitialiser le jeu de résultats. Plusieurs échanges recommandent aussi de vérifier les clés étrangères et l'ordre de tri, car les doublons peuvent provenir d'une absence de condition de jointure explicite.
-
ma boule de cristal est en panne, je vais donc devoir te demander de nous fournir ton code ;)
-
voila mon code
function afftableau(){ $resultat=mysql_query("SELECT * FROM permis p, sujet s, adresse a, architecte r ORDER BY p.numeros_permis DESC"); if (mysql_num_rows($resultat)>0){ echo' <table border="0" cellpadding="0" cellspacing="0" width="100%" class="Tab"> <thead id="thead"> <tr> <td width="10%" align="center" valign="middle">CIN</td> <td width="10%" align="center" valign="middle">Identifiant</td> <td width="10%" align="center" valign="middle">Nom et Prénom</td> <td width="14%" align="center" valign="middle">Adresse</td> <td width="14%" align="center" valign="middle">Sujet</td> <td width="14%" align="center" valign="middle">Architecte</td> <td width="11%" align="center" valign="middle">Date du dépot</td> <td width="8%" align="center" valign="middle">Note</td> <td width="4%" align="center" valign="middle"></td> <td width="1%" align="center" valign="middle"></td> </tr> </thead> <tbody> '; $type_de_recherche=isset($_POST['recherche'])?$_POST['recherche']:""; $txt_de_recherche=isset($_POST['texterecherche'])?$_POST['texterecherche']:""; for($i=0;$i<mysql_num_rows($resultat);$i++){ $Enreg=mysql_fetch_array($resultat); if ($i%2==0){$bgColor = "";}else{$bgColor = "#CCCCCC";} if ((($type_de_recherche<>"")and($Enreg[$type_de_recherche] ==$txt_de_recherche))or($type_de_recherche=="")){ echo '<tr onmouseover=" onmouseover="this.bgColor=\'#ABABAB\'" onmouseout="this.bgColor=\''.$bgColor.'\'" bgcolor="'.$bgColor.'"> <td align="center" valign="middle">'.$Enreg["CIN"].'</td> <td align="center" valign="middle">'.$Enreg["numeros_permis"].'</td> <td align="center" valign="middle">'.$Enreg["nom"].'</td> <td align="center" valign="middle">'.$Enreg["titre_adresse"].'</td> <td align="center" valign="middle">'.$Enreg["titre_sujet"].'</td> <td align="center" valign="middle">'.$Enreg["titre_archi"].'</td> <td align="center" valign="middle">'.date2string($Enreg["date_depot"]).'</td> <td align="center" valign="middle">'.Etat($Enreg["etat"]).'</td> <td width=4% align=center valign="middle"><a href="Permis_Details.php?Num= '.$Enreg["id"].'"><img src="img/voir.gif" border=0></a> </td> <td width=4% align=center valign="middle"><a href="Permis_Supprime.php?Num='.$Enreg["id"].'" onClick="return confirm(\'Voulez-vous supprimer ce Permis ?\')"><img src="img/supprimer.gif" border=0></a></td> </tr>'; } } echo' <p><a href="Permis_liste.php" class="LienSommaire">retour à la liste compléte </a></p>'; echo '</tbody></table>'; }else{ echo "Il n'y a pas de permis"; } } ?> -
ton problème vient de là :
for($i=0;$i<mysql_num_rows($resultat);$i++){
$Enreg=mysql_fetch_array($resultat);
if ($i%2==0){$bgColor = "";}else{$bgColor = "#CCCCCC";}
if ((($type_de_recherche<>"")and($Enreg[$type_de_recherche] ==$txt_de_recherche))or($type_de_recherche=="")){
echo '<tr onmouseover=" onmouseover="this.bgColor=\'#ABABAB\'" onmouseout="this.bgColor=\''.$bgColor.'\'" bgcolor="'.$bgColor.'">
<td align="center" valign="middle">'.$Enreg["CIN"].'</td>
<td align="center" valign="middle">'.$Enreg["numeros_permis"].'</td>
<td align="center" valign="middle">'.$Enreg["nom"].'</td>
<td align="center" valign="middle">'.$Enreg["titre_adresse"].'</td>
<td align="center" valign="middle">'.$Enreg["titre_sujet"].'</td>
<td align="center" valign="middle">'.$Enreg["titre_archi"].'</td>
<td align="center" valign="middle">'.date2string($Enreg["date_depot"]).'</td>
<td align="center" valign="middle">'.Etat($Enreg["etat"]).'</td>
<td width=4% align=center valign="middle"><a href="Permis_Details.php?Num= '.$Enreg["id"].'"><img src="img/voir.gif" border=0></a>
</td>
<td width=4% align=center valign="middle"><a href="Permis_Supprime.php?Num='.$Enreg["id"].'" onClick="return confirm(\'Voulez-vous supprimer ce Permis ?\')"><img src="img/supprimer.gif" border=0></a></td>
</tr>';
}
}
en gros, tu lui demande de répéter l'action tant que $i < numrow (8 ?)
la solution est donc d'extraire tes echo de la boucle :)