1er enregistrement de trop (et vide) avec mysql_fetch_assoc

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : 1er enregistrement de trop (et vide) avec mysql_fetch_assoc

par pulsar60 » 18 sept. 2007, 11:41

Ok merci, j'comprend mieux... V_v

par jay64 » 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:

par pulsar60 » 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?

par jay64 » 18 sept. 2007, 11:28

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

par fab » 18 sept. 2007, 11:27

Plus qu' ajouter un tag [Résolu] et c'est parfait :)

par jay64 » 18 sept. 2007, 11:12

C'est parfait, merci les gars !

par d0m » 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

par Calimero » 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.

1er enregistrement de trop (et vide) avec mysql_fetch_assoc

par jay64 » 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 !