Petit problème d'array en PHP

Résolu/Fermé
Everio Messages postés 44 Date d'inscription vendredi 3 avril 2009 Statut Membre Dernière intervention 15 juin 2009 - 3 avril 2009 à 13:03
Rctll Messages postés 499 Date d'inscription dimanche 11 mai 2008 Statut Membre Dernière intervention 30 juin 2010 - 3 avril 2009 à 17:50
Bonjour,
Je souhaite comparer chaque ligne d'un array avec le résultat d'une requête SQL.
Voici mon code pour le moment :
mysql_connect("localhost", "root", "");
mysql_select_db("bd_emp");
$reponse = mysql_query("SELECT nom FROM joueur");
mysql_close();
$classement = $_POST['maj_classement']; //je récupère une liste de mot dans un formulaire
$attributs = array();
$attributs = explode(' ', $classement); //je met un mot dans chaque ligne de l'array

$resultat = array();
foreach ($attributs as $key => $value){ //boucle 1 pour parcourir mon array
while ($donnees = mysql_fetch_array($reponse) ){ //boucle 2 pour parcourir le résultat de ma requête
if($donnees['nom'] == $attributs[$key]) echo "ok";
}
echo "boucle 1";
}

Mon problème est que mon code ne fait qu'un seul tour de la première boucle et je ne voit pas d'où peut venir l'erreur. J'ai fait des tests et je suis certain que $attributs[$key] et $donnees['nom'] contiennent les valeurs que je souhaite. En gros si mon égalité est vérifée dans ma première boucle, ca marche, mais apres impossible de tester les autres égalités.
Merci d'avance de votre aide.
PS : j'ai découvert le PHP hier donc soyez indulgent si j'ai fait une erreur "bête" ^^.
A voir également:

4 réponses

Rctll Messages postés 499 Date d'inscription dimanche 11 mai 2008 Statut Membre Dernière intervention 30 juin 2010 1 480
3 avril 2009 à 13:24
Bonjour,le probleme que vous rencontrez est simple: mysql_fetch_assoc/array "consomme" les données qu'il renvoie : donc une fois qu'il a renvoyé toutes les données .. ( comme c'est le cas à la fin de la premiere itération) il ne renvoie plus rien . ( un tableau vide ) d'ou l'impossibilité de verifier les valeurs ;)


1
Everio Messages postés 44 Date d'inscription vendredi 3 avril 2009 Statut Membre Dernière intervention 15 juin 2009
3 avril 2009 à 17:20
Ah d'accord, du coup, j'imagine que je doit mettre la requête SQL dans ma boucle.
Merci beaucoup
0
Everio Messages postés 44 Date d'inscription vendredi 3 avril 2009 Statut Membre Dernière intervention 15 juin 2009
3 avril 2009 à 17:41
Une autre petit question : pourquoi je ne peut pas ecrire ceci : echo "$donnees['nom']";
et que je doit écrire ceci : echo $donnees['nom'];

Parce que si je veut comparer $donnees['nom'] concaténé avec un autre mot dans mon code je doit faire comment ?
Par exemple : "$donnees['nom']aaa"
0
Rctll Messages postés 499 Date d'inscription dimanche 11 mai 2008 Statut Membre Dernière intervention 30 juin 2010 1 480
3 avril 2009 à 17:50
Je n'ai pas la réponse précise, mais si je ne m'abuse, si l'on met "$tableau['nom']" il interprete le tout comme etant le nom d'une variable et non l'acces a l'élément nom du tableau.
Pour résoudre votre probléme : utilisez l'operateur de concatenation :
$donnee['nom']."superChaine a ajouter"
0