La boucle ne s'arrète pas [Résolu]

Signaler
Messages postés
155
Date d'inscription
dimanche 28 septembre 2008
Statut
Membre
Dernière intervention
28 mars 2010
-
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
-
Bonjour,

Je n'arrive pas à stopper la boucle après l'affiche du dernier enregistrement. La boucle continue à afficher les mêmes enregistrements les un derrière les autres. Si j'ai par exemple 2 enregistrements avec le même idchariot, j'aimerais les afficher, mais une seule fois.

CREATE TABLE `anomalie` (
`idano` int(11) NOT NULL auto_increment,
`idchariot` int(10) NOT NULL,
`signalement` varchar(255) NOT NULL,
`date` date NOT NULL,
PRIMARY KEY (`idano`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;


<?php
$requete3 'SELECT anomalie.signalement, anomalie.idchariot FROM anomalie INNER JOIN chariot ON anomalie.idchariot '.$idchariot.'';

$execution_requete3 = mysql_query($requete3);
$total3 = mysql_num_rows($execution_requete3);


if($total3) {

echo ''.\"\n\";
echo '----
';
echo 'Anomalies en cours, ';
echo ''.\"\n\";

while($row = mysql_fetch_array($execution_requete3)) {

echo '----
';
echo ''.$row['signalement'].', ';
echo ''.\"\n\";
}
echo '
'."\n";

}
else echo 'Pas d\'enregistrements dans la base...';

mysql_free_result($execution_requete3);
?>

10 réponses

Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Hello,

la boucle ne s'arrête pas...du tout ? Ou plutôt, affiches-tu plus d'enregistrements que prévus ?
Parce que ta requête est foireuse :
$requete3 = 'SELECT anomalie.signalement, anomalie.idchariot FROM
anomalie
INNER JOIN chariot ON anomalie.idchariot =chariot.idchariot
WHERE anomalie.idchariot= '.$idchariot.'';
Messages postés
155
Date d'inscription
dimanche 28 septembre 2008
Statut
Membre
Dernière intervention
28 mars 2010

lol elle est foireuse

affiches-tu plus d'enregistrements que prévus ?

oui bien trop, en fait j'affiche les bons enregistrements mais en boucle. Ex: s'il y a 2 enregistrements à afficher, ils s'affichent jusqu'en bas de la page.
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Elle donne quoi dans phpmyadmin, ta requête ?
Messages postés
155
Date d'inscription
dimanche 28 septembre 2008
Statut
Membre
Dernière intervention
28 mars 2010

Ca ne ramène aucun enregistrement compte tenu que phpmyadmin ne connait pas la valeur de $idchariot
Messages postés
155
Date d'inscription
dimanche 28 septembre 2008
Statut
Membre
Dernière intervention
28 mars 2010

j'ai remplacé $idchariot par sa valeur dans la table est ça me donne ça :

Affichage des enregistrements 0 - 13 (14 total, Traitement en 0.0011 sec.)

Mais pourquoi 14 enregistrements alors que je n'en ai que 2 dans la table ?
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
...en remplaçant $idchariot par une valeur qui POURRAIT être valide dans ton script...?
Et tu obtiens la même chose avec ma requête ?
Parce que cela m'étonne bcp : ta boucle n'est pas une boucle infinie. En l'état, ton code ne peut pas boucler infiniment. Alors à moins que tu ne montres pas tout le code...je ne vois pas vraiment.
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
A cause de ta mauvaise utilisation de la jointure.
Et avec ma requête ?
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Oh et puis, tant qu'on y est : fais voir ton autre table, "chariot" ?
Messages postés
155
Date d'inscription
dimanche 28 septembre 2008
Statut
Membre
Dernière intervention
28 mars 2010

Mille excuses, j'ai fais l'essai dans phpmyadmin avec ma requête foireuse, avec la tienne tout fonctionne bien en mettant la bonne valeur à idchariot.

Mais pourquoi est-on obligé d'ajouter un where après un ON ?

Merci beaucoup pour ton aide.
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
le ON de la jointure définit...la jointure! La condition sur laquelle tu vas lier tes 2 tables.
Le WHERE est la condition globale de ta requête.