Page 1 sur 1

1er enregistrement de trop (et vide) avec mysql_fetch_assoc

Posté : 18 sept. 2007, 10:20
par jay64
Bonjour,

J'ai la requête et le bout de code suivant :
<?php
// on liste les clients actifs
$query_ListeClientsActif = "SELECT * FROM Clients WHERE CompteActif = '1' ORDER BY HorodatageInscriptionClient";
$ListeClientsActif = mysql_query($query_ListeClientsActif, $connection_bdd) or die(mysql_error());
$NbClientsActif = mysql_num_rows($ListeClientsActif);

$j=0;	

do {
$j=$j+1;
echo $j;
} while ($row_ListeClientsActif = mysql_fetch_assoc($ListeClientsActif)); ?>

La requete contient normalement très exactement 7 enregistrements (vérifié en SQL directement dans PhpMyAdmin) mais ma boucle tourne 8 fois et $j affiche donc 12345678.

Je ne comprends pas ce qui coince, même si j'ai un doute concernant la fonction mysql_fetch_assoc.

Quelqu'un pourrait-il m'éclairer ?

Merci !

Posté : 18 sept. 2007, 10:25
par Calimero
C'est tout simplement parceque tu as fait un do{...}while(); au lieu d'un while(){...}. La première boucle s'éxécute toujours au moins une fois car le test n'est fait qu'à la fin de la boucle et pas au début.

Posté : 18 sept. 2007, 10:28
par d0m
normal, tu utilises un do...while au lieu d'un while
j'explique :
tu executes ta boucle
do {
$j=$j+1;
echo $j;
}
avant d'avoir affecté la première ligne résultat
while ($row_ListeClientsActif = mysql_fetch_assoc($ListeClientsActif))
de ce fait tu incrémentes la première fois j pour rien et 7 fois ensuite pour les résultats, d'où 1+7 = 8

Posté : 18 sept. 2007, 11:12
par jay64
C'est parfait, merci les gars !

Posté : 18 sept. 2007, 11:27
par fab
Plus qu' ajouter un tag [Résolu] et c'est parfait :)

Posté : 18 sept. 2007, 11:28
par jay64
Le tag y était déjà, je l'ai mis aussitôt ! :lol:

Posté : 18 sept. 2007, 11:35
par pulsar60
Loin de moi l'idée de passer pour l'inculte, mais....qu'est ce que vous appelez Tag siouplait?

Posté : 18 sept. 2007, 11:38
par jay64
c'est un bouton à cocher qu'active le propriétaire du message lorsqu'il considère que son problème est résolu !
Pour le coup, ça active donc un champ dans la BDD du forum, et donc un tag ! Enfin voilà comment je l'explique :roll:

Posté : 18 sept. 2007, 11:41
par pulsar60
Ok merci, j'comprend mieux... V_v