OVH Cloud OVH Cloud

Probleme avec "mysql_fetch_array" ?

6 réponses
Avatar
Georges Saunier
Bonjour,

Utilisateur récent de PHP+MySql, je suis confronté à un problème... étrange.
Dans une table de ma base de donnée, j'ai 3 enregistrements. J'exécute le
code php suivant (cf. infra), je n'ai pas de message d'erreur mais obtient
seulement 2 enregistrements à l'affichage (les deux derniers). Je suis
certain que ce problème est bénin mais je n'ai pas encore trouvé la
solution.

Si quelqu'un a des lumières...

G. Saunier.

// on se connecte au serveur mysql_connect("localhost","mon_login","mon mot
de passe");

//on prépare la requête SQL

$sql = "SELECT * FROM test";

// on choisit la bonne base

mysql_select_db("ma_base");

// On exécute la requête

$result = mysql_query($sql);

// on place les résultats de la requête dans un tableau

$row = mysql_fetch_array($result);

// On affiche les résultats

while ($row = mysql_fetch_array($result))

{

echo $row['nom']."<br>";

}

6 réponses

Avatar
Moi
Bonsoir,

Dans ton exemple de script il faut supprimer cette partie :


// on place les résultats de la requête dans un tableau
$row = mysql_fetch_array($result);


A chaques fois que tu fais appel à mysql_fetch_array() cela appelle un
enregistrement résultant de ta requête.

Donc, dans le script que tu as réalisé tu appelles le premier enregistrement
sur lequel tu ne fais aucun traitement, puis tu boucles à l'aide de while
($row = mysql_fetch_array($result)) {} sur les enregistrements suivants
provenant de ta requête pour faire ton echo.

J'espère avoir répondu simplement ! :-)

Voilà !
Avatar
Thibaut Allender

// on place les résultats de la requête dans un tableau
$row = mysql_fetch_array($result);

// On affiche les résultats

while ($row = mysql_fetch_array($result))

{

echo $row['nom']."<br>";

}


la tu places 2x les resultats dans un tableau...

le premier "$row = mysql_fetch_array($result);" sort le 1er enregistrement
la boucle sort les 2 restants

--
thibaut allender | freelance | web|system developer|designer
+32 496 26 75 76 | http://capsule.org *new version*

Avatar
- Sebastien -
Georges Saunier - Le 21/07/2004
Bonjour,

Dans une table de ma base de donnée, j'ai 3 enregistrements. J'exécute le
code php suivant (cf. infra), je n'ai pas de message d'erreur mais obtient
seulement 2 enregistrements à l'affichage (les deux derniers). Je suis

$sql = "SELECT * FROM test";
mysql_select_db("ma_base");
$result = mysql_query($sql);


OK.

$row = mysql_fetch_array($result);


Là tu lis le premier enregistrement.

while ($row = mysql_fetch_array($result))
{
echo $row['nom']."<br>";
}


Ben du coup il n'en reste plus que 2... normal donc.

Tu dois faire directement la boucle pour mettre en tableau les
résultats.

--
Seb.
ASCA Informatique
Progiciels pour l'officine et la PME
http://www.pharmespace.com

Avatar
Moiron Denis
On 21 Jul 2004 20:17:15 GMT
"Georges Saunier" wrote:


// on se connecte au serveur
[...]

Jusque là tout va bien
// on place les résultats de la requête dans un tableau


C'est là qu'est l'erreur, tu fetch une ligne avant ta boucle d'affichage
:
$row = mysql_fetch_array($result); // SUPPRIMER CETTE LIGNE

// On affiche les résultats
[...]

Ton while($row) écrase les résultats de la première ligne !

Ce genre de problème peut se voir en relisant ton programme pas à pas.
Bon courage.

Denis.

Avatar
Frederic BISSON
Je suis certain que ce problème est bénin
Effectivement, mysql_fetch_array n'est pas en cause


$row = mysql_fetch_array($result);
while ($row = mysql_fetch_array($result))
{
echo $row['nom']."<br>";
}
Ta première ligne $row=... récupère le premier enregistrement.

Vient ensuite ton while qui effectue un $row=..., ton premier
enregistrement ayant déjà été lu, tu ne lit que le deuxième et
n'affiche qu'à partir du deuxième.

Supprime le premier $row=... et tout fonctionnera correctement.

@+

Frédéric

Avatar
Jacky Goyon
"Georges Saunier" a écrit dans le message de
news: cdme80$mar$
Bonjour,

Utilisateur récent de PHP+MySql, je suis confronté à un problème...
étrange.

Dans une table de ma base de donnée, j'ai 3 enregistrements. J'exécute le
code php suivant (cf. infra), je n'ai pas de message d'erreur mais obtient
seulement 2 enregistrements à l'affichage (les deux derniers).
// on se connecte au serveur mysql_connect("localhost","mon_login","mon
mot

de passe");

//on prépare la requête SQL

$sql = "SELECT * FROM test";

// on choisit la bonne base

mysql_select_db("ma_base");

// On exécute la requête

$result = mysql_query($sql);

// on place les résultats de la requête dans un tableau

$row = mysql_fetch_array($result);
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

c'est là que tu perds le premier résultat : supprime cette ligne inutile !
à la rigueur tu pourrais la faire suivre de echo $row['nom']."<br>";
mais la boucle while est là pour récupérer tous les résultats

// On affiche les résultats

while ($row = mysql_fetch_array($result))

{

echo $row['nom']."<br>";

}


Jacky