Petit problème d'array en PHP
Résolu
Everio
Messages postés
44
Date d'inscription
Statut
Membre
Dernière intervention
-
Rctll Messages postés 499 Date d'inscription Statut Membre Dernière intervention -
Rctll Messages postés 499 Date d'inscription Statut Membre Dernière intervention -
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" ^^.
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:
- Undefined array key php post
- Key windows 10 - Guide
- Easy php - Télécharger - Divers Web & Internet
- Brouillon post instagram - Guide
- Show key plus - Télécharger - Utilitaires
- Press the esc key for startup menu - Forum Matériel & Système
4 réponses
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 ;)
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"
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"