1er enregistrement de trop (et vide) avec mysql_fetch_assoc

Eléphant du PHP | 331 Messages

18 sept. 2007, 10:20

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 !

ViPHP
ViPHP | 2287 Messages

18 sept. 2007, 10:25

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.
if(!@work()){ Nespresso(); } else { what(); }
______________________________

d0m
Mammouth du PHP | 1141 Messages

18 sept. 2007, 10:28

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
Modifié en dernier par d0m le 18 sept. 2007, 11:14, modifié 1 fois.

Eléphant du PHP | 331 Messages

18 sept. 2007, 11:12

C'est parfait, merci les gars !

ViPHP
fab
ViPHP | 2657 Messages

18 sept. 2007, 11:27

Plus qu' ajouter un tag [Résolu] et c'est parfait :)
Seul l'intelligent a le pouvoir de se trouver con
try { work(); } catch(FlemmeExeption $e) { sleep(84600); }

Eléphant du PHP | 331 Messages

18 sept. 2007, 11:28

Le tag y était déjà, je l'ai mis aussitôt ! :lol:

Eléphanteau du PHP | 27 Messages

18 sept. 2007, 11:35

Loin de moi l'idée de passer pour l'inculte, mais....qu'est ce que vous appelez Tag siouplait?

Eléphant du PHP | 331 Messages

18 sept. 2007, 11:38

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:

Eléphanteau du PHP | 27 Messages

18 sept. 2007, 11:41

Ok merci, j'comprend mieux... V_v