Probleme d'affichage de bd [Résolu]

Signaler
Messages postés
18
Date d'inscription
jeudi 3 avril 2003
Statut
Membre
Dernière intervention
12 décembre 2004
-
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
-
Bonjour,

Je mets en place un script de gestion de jeux, joueurs avec sauvegarde des scores.

J'ai une base de donnée : joueur et une autre : score
Le script qui me pose probleme est le suivant

//lecture infos joueur et score
$ligne0 = "SELECT * FROM joueur WHERE idjoueur='$idjoueur'";
$result0=mysql_db_query($db, $ligne0);
$row0 = mysql_fetch_row($result0);
$pseudo = $row0[1];

//affichage du pseudo du joueur
print "Bienvenue : $pseudo <h3>"; //

//lecture score
$ligne1 = "SELECT * FROM score WHERE idscore='$idscore'";
$result1=mysql_db_query($db, $ligne1);
$row1 = mysql_fetch_row($result1);
$idscore = $row1[0];
$idjoueur= $row1[2];
$score = $row1[3];

//affichage du score du joueur
echo "<h3><center>$score</center>
";
print "Ton score est de : $score points."; //

La première partie du script fonctionne très bien, et le pseudo du joueur s'affiche sans problème (après authentification)

Mais, impossible d'afficher le score ...
La table score a la structure suivante

TABLE score (
idscore bigint(20) DEFAULT '0' NOT NULL auto_increment,
idjeu bigint(20) DEFAULT '0' NOT NULL,
idjoueur bigint(20) DEFAULT '0' NOT NULL,
score char(255) NOT NULL,
bon1 char(255) NOT NULL,
temps char(255) NOT NULL,
PRIMARY KEY (idscore),
UNIQUE idscore (idscore)
);

Merci d'avance à tous !

12 réponses

Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
"je suis surpris d'ailleurs parce que tu me dis, vu que row (tout seul), recupère les champ 2 fois: + de tps pour récupérer et 1 tableau + lourd..."

Arf...

mysql_fetch_row ne récupère en rien les champs deux fois, les champs étant désignés par un indice numérique $ligne[0] au lieu de $ligne['mon_champ'] ce qui est plus rapide à traiter (les nombres sont plus rapides à traiter que les chaînes de caractères)

a +

http://www.vulgarisation-informatique.com : entraide, dépannage et vulgarisation informatique
Messages postés
282
Date d'inscription
vendredi 16 mai 2003
Statut
Membre
Dernière intervention
19 juillet 2006

pkoi ton champ score est il en char?? ne vaudrait-il pas mieux le mettre en int?
sinon privilégie mysql_fetch_assoc pluto ke mysql_fetch_row: aisni tu devra nommer tes champ par un nom et non par un chiffre ce qui te permettra deja d'etre sur que tu appelle le bon champ!
ex: au lieu de:
$score = $row1[3];

tu devras faire:
$score = $row1['score'];

ce ki rend + lisible le code et evite certaines erreur!!
sinon as tu essayé de faire mysql_erro()? c'est très utile pour voir ou ca coince: execute la de cette facon par ex.:
if(!$result1=mysql_db_query($db, $ligne1))
{
echo mysql_error();
}
else
{
... //la suite de ton code


Que la Force soit avec toi, Jeune Padawan!!!
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Salut !

"sinon privilégie mysql_fetch_assoc pluto ke mysql_fetch_row:"

Absolument pas, le fetch_row est plus rapide, du moment que tu codes proprement tu n'es pas obligé de recourir à des artifices de ce style...

a ++

http://www.vulgarisation-informatique.com : entraide, dépannage et vulgarisation informatique
Messages postés
282
Date d'inscription
vendredi 16 mai 2003
Statut
Membre
Dernière intervention
19 juillet 2006

ben techniquement mysql_fetch_assoc equivaut a mysql_fetch_row($requete,MYSQL_ASSOC), donc mon conseil est valable dasn les 2 cas... je disais ca surtou pour la lisibilité du code!

je suis surpris d'ailleurs parce que tu me dis, vu que row (tout seul), recupère les champ 2 fois: + de tps pour récupérer et 1 tableau + lourd...

Que la Force soit avec toi, Jeune Padawan!!!
Messages postés
18
Date d'inscription
jeudi 3 avril 2003
Statut
Membre
Dernière intervention
12 décembre 2004

Merci une fois de plus !

J'ai fais comme tu m'as dit : mysql_erro()?

Voilà la réponse :
Parse error: parse error, unexpected $ in /var/www/free.fr/f/b/----------/gest_qcm/jeux/menu.php on line 90

le problème étant .... que la ligne 90 n'existe pas ....

Je craque very bcp :(
Messages postés
282
Date d'inscription
vendredi 16 mai 2003
Statut
Membre
Dernière intervention
19 juillet 2006

oki, la g du mal a voir ton problème...
mets ici tout ton code de cette page on verra mieu ou ce situe l'erreur

Que la Force soit avec toi, Jeune Padawan!!!
Messages postés
18
Date d'inscription
jeudi 3 avril 2003
Statut
Membre
Dernière intervention
12 décembre 2004

Rebonjour,

En fait j'ai refait ma page (c'était trop le foutoire :)

Voici maintenat la réponse à mysql_erro()?
Query was empty

Merci encore pour tout
Messages postés
282
Date d'inscription
vendredi 16 mai 2003
Statut
Membre
Dernière intervention
19 juillet 2006

cela signifie que ta requete est vide.... donc affiche ta requete avec echo et verifie aussi que la variable se nomme bien exactement de la meme facon lorsque tu ecris al requete SQL et lorsque tu appelle mysql_db_query (fais gaffe aux majuscules/minuscules...)

Que la Force soit avec toi, Jeune Padawan!!!
Messages postés
282
Date d'inscription
vendredi 16 mai 2003
Statut
Membre
Dernière intervention
19 juillet 2006

d'accord sur le fait qu'un nombre soit + rapide a traiter qu'une chaine...
mais le fait est que fetch_row renvoie a la fois l'un ET l'autre (sauf si on utilise MYSQL_ASSOc ou MYSQL_NUM qui ne renvoie alors qu'un seul des 2), donc la chaine est tout de meme traitée et en + il faut traiter pour un nombre!! j'ai donc du makl a voir ou est le gain de temps...

Que la Force soit avec toi, Jeune Padawan!!!
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
"mais le fait est que fetch_row renvoie a la fois l'un ET l'autre"

Faux, essaies de faire un mysql_fetch_row et de récupérer tes champs avec un indice qui n'est pas numérique ;-)

plus d'infos sur fr.php.net fonction "mysql_fetch_row"

a +

http://www.vulgarisation-informatique.com : entraide, dépannage et vulgarisation informatique
Messages postés
282
Date d'inscription
vendredi 16 mai 2003
Statut
Membre
Dernière intervention
19 juillet 2006

Oupssssss. :blush)
complètement désolé!!! j'ai confondu mysql_fetch_row et mysql_fetch_array (qui lui renvoie bien 2 fois les champ: 1 fois indexé numériquement et 1 fois avec les noms des champs!!!)

Je m'en vais plein de honte!!! :blush)
P.S.: ca a bien pourri ce forum ma con*****....

Que la Force soit avec toi, Jeune Padawan!!!
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
lol ;-)

http://www.vulgarisation-informatique.com : entraide, dépannage et vulgarisation informatique