Truc bizarre avec ma requête mysql

Résolu
Edouard -  
 Edouard -
Bonjour, j'ai un petit truc bizarre avec ma requete mysql.

J'ai fait ce petit bout de code et il me retourne tous les couples clé => valeur en double ?

	// Création de la requete sql
	$sql=mysql_query("select * from publications");
	$nbrligne=mysql_num_rows($sql);//nombre de ligne
	if ($nbrligne=="0"){
	echo AuStripSlashes("Il n'y a pas de publications dans la base de données.");
	}
	else{
	while ($row=mysql_fetch_array($sql))
{
	// debuggage
	foreach($row as $key => $value){
	echo "$key | $value <br>";
	}

} // fin while $row
} // fin else nbrligne = 0



Et voilà le résultat :
0 | 1
id | 1
1 | edouard
nom_auteur | edouard
2 | test
prenom_auteur | test

En fait il me retourne :
l'identifiant de la clé => la valeur
le nom de la clé => la valeur

9a vient de quoi, il y a des tableaux impbriqués ?
A voir également:

4 réponses

Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
Bonjour,

Le problème est que mysql_fetch_array renvoit un tableau qui est à la fois indexé et associatif.
Donc $row[0] == $row["id"].

Et au final, logiquement, ton foreach va afficher les deux.

Pour résoudre ton problème, utilises plutôt mysql_fetch_assoc() qui ne renvoit qu'un tableau associatif.

Xavier

PS : la conséquence, bien sûr, c'est que tu ne pourras plus appeler l'id de l'enregistrement en utilisant $row[0], mais uniquement avec $row["id"]...
0
Edouard
 
super, merci
Pour ta remarque sur l'impossibilité d'appeller par row[0] en fait ça me gène pas du tout puisque j'utilise extract.
Est-ce déconseillé ?
Edouard
0
Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
Je ne sais pas, je ne connais pas extract ^^
Personnellement j'utilise mysql_fetch_object, qui permet d'obtenir un objet $row, dont les valeurs sont en fait des attributs, ce qui donne $row->id pour obtenir l'id. Par contre, je ne pense pas que de cette façon on puisse faire un foreach sur les différentes valeurs, comme tu le fais.
0
Edouard
 
l'intérêt d'extract est de te transformer rapidement les données d'un tableau en variables $row["id"] devient $id... ce qui me permet d'utiliser immédiatement toutes les infos de ma requête dans le code, par contre ta méthode est a priori plus propre pour une programmation objet que la mienne.
Généralement extract est utilisée sur $_post ou $_get ou $_session, mais je me suis dit que si ça marche sur tout type de tableau, ça pouvait également le faire gagner du temps sur $row...
merci et à plus.
0