Boucle While une seule réponse

Résolu
Const4ntine Messages postés 39 Date d'inscription mercredi 4 juin 2008 Statut Membre Dernière intervention 11 décembre 2008 - 22 oct. 2008 à 22:36
Const4ntine Messages postés 39 Date d'inscription mercredi 4 juin 2008 Statut Membre Dernière intervention 11 décembre 2008 - 23 oct. 2008 à 16:21
Bonjour,

J'ai une petite erreur, ou disons que le résultat n'est pas à l'hauteur de mes espérances ;)

J'ai une mauvaise connaissance des boucles while donc ça vient peut etre de là.

En fait, j'ai 2 résultats dans ma requete, correspondant à la création de 2 lignes dans un tableau, hors un seul résultat est retourné, malgré qu'avec
mysql_num_rows, j'ai le nombre 2 qui s'affiche.

Pouvez vous jeter un coup d'oeil ?

Merci

    ----

        Référence,
        Date,
        Statut,
        Montant TTC,
        Facture,
   

<?    $nb=mysql_num_rows($Select);
    echo $nb;
    while($Donnees=mysql_fetch_array($Select)) {
        echo '----
';
        echo '';
        echo $Donnees['ID_Commande'];
        echo ", \";
        echo '';
        $date =  date("j F Y",$Donnees['Payment_Date']);
        echo $date;
        echo ", \";
        echo '';
        echo $Donnees['Status_Commande'];
        echo ", \";
        echo '';
        echo $Donnees['Mc_Gross']." ".$Donnees['Mc_Currency'];
        echo ", \"; 
        echo ', ';
        echo \"\";
    }
?>

8 réponses

coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
23 oct. 2008 à 14:12
$Donnees=mysql_fetch_array($Select);

si tu fais un premier mysql_fetch_array, alors evidement, apres, t'as une ligne en moins.
3
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
23 oct. 2008 à 00:36
salut
ton probleme est vraiment louche...

t'es sur que ca ne t'affiche qu'un resultat ? et que ton mysql_num_rows te renvoie deux ?

si tu remplaces ta boucle par :

while($Donnees=mysql_fetch_assoc($Select)) { print_r($Donnees); echo '<hr/>'; }

t'as combien de lignes et de array(....) ?
0
Const4ntine Messages postés 39 Date d'inscription mercredi 4 juin 2008 Statut Membre Dernière intervention 11 décembre 2008
23 oct. 2008 à 00:59
Une seule ligne et un array :

Array
(
[ID_Commande] => 8
[Payment_Date] => 2147483647
[Status_Commande] =>
[Mc_Gross] => 0.02
[Mc_Currency] => EUR
)
<hr /><!-- Fin du Div Corps--><!-- InstanceEndEditable --><!-- Fin du Div GroupeCentre-->
Mais bien $nb=2

et bien 2 enregistrements dans ma base SQL.

C'est comme si le while n'affichait qu'un seul résultat
0
Const4ntine Messages postés 39 Date d'inscription mercredi 4 juin 2008 Statut Membre Dernière intervention 11 décembre 2008
23 oct. 2008 à 01:04
J'ai testé autre chose, très intéressant et très bizarre.

En rajoutant un 3ème enregistrement, il m'affiche :

Array
(
[ID_Commande] => 8
[Payment_Date] => 2147483647
[Status_Commande] =>
[Mc_Gross] => 0.02
[Mc_Currency] => EUR
)
<hr />Array
(
[ID_Commande] => 50
[Payment_Date] => 6456465
[Status_Commande] =>
[Mc_Gross] => 50
[Mc_Currency] => EUR
)
<hr /><!-- Fin du Div Corps--><!-- InstanceEndEditable --><!-- Fin du Div GroupeCentre-->
Donc en clair il refuse de m'afficher le 2ème enregistrement.

Affaire à suivre ;)

Je vous tiens au courant si je trouve l'erreur (qui doit etre dans ma base de donnée)

Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Const4ntine Messages postés 39 Date d'inscription mercredi 4 juin 2008 Statut Membre Dernière intervention 11 décembre 2008
23 oct. 2008 à 01:20
J'ai regardé dans ma table, les 3 enregistrements sont corrects, bizarre qu'ils n'affichent pas la 2ème.

Je ne comprend vraiment pas, quand je teste le nombre d'enregistrement il me dit bien 3, mais n'en affiche que 2.

Aurais tu une solution ?
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
23 oct. 2008 à 11:31
on peut voir ton code complet ?
0
Const4ntine Messages postés 39 Date d'inscription mercredi 4 juin 2008 Statut Membre Dernière intervention 11 décembre 2008
23 oct. 2008 à 13:31
Explication : Ma première requete va chercher l'adresse email, qui ve me servir dans la 2ème requete pour obtenir toutes les autres informations :

$Select_Uti=mysql_query("
         SELECT
            Adresse_Email
        FROM
            Comptes_Utilisateurs
        WHERE
            ID_Utilisateur='".$ID_Utilisateur."'
     ");
    if(!$Select_Uti) {
        $message = "Une erreur est survenue lors de la tentative de connexion";
    }
    else{
        $Row = mysql_fetch_array($Select_Uti);
        $Adresse_Email=$Row['Adresse_Email'];
        
        $Select=mysql_query("
            SELECT
                ID_Commande,
                Payment_Date,
                Status_Commande,
                Mc_Gross,
                Mc_Currency
            FROM
                Commandes
            WHERE
                Payer_Email='".$Adresse_Email."'
            ORDER BY Payment_Date DESC
        ");
        if(!$Select) {
            $message = "Une erreur est survenue lors de la tentative de connexion";
        }
        else{
            $Donnees=mysql_fetch_array($Select);
            
        }
}
0
Const4ntine Messages postés 39 Date d'inscription mercredi 4 juin 2008 Statut Membre Dernière intervention 11 décembre 2008
23 oct. 2008 à 16:21
Une ligne qui était resté avant que je passe sur une boucle while,

Je ne l'avais pas vu.

Je te remercie, ça marche.

A bientot,
0
Rejoignez-nous