Eléphanteau du PHP |
46 Messages
24 mai 2006, 10:58
Et bien si tu relis mes messages précédents, tu verras que la marche à suivre que j'ai indiquée n'est pas compliquée
Cest la même requête que tu utilises pour l'instant, sauf qu'on rajoute une condition dans le WHERE pour ne sélectionner que les lignes que l'on veut
Donc par étape :
1 - sous phpMyAdmin tu essaye de faire le SQL qui correspond, avec des valeurs "en dur"
2 - puis tu fais générer le code SQL de cette requête par ton PHP, en insérant les identifiants récupérés du formulaire précédent
3 - tu affiches ce SQL généré, tu regardes s'il correspond à ce que tu veux et tu le testes dans phpMyAdmin
Stp, n'essaie pas tout de suite de faire afficher les résultats dans ta page, ça limitera les risques d'erreur

Ok j'ai bien testé ma requête et elle marche dans PHPMyAdmin.
J'ai bien la ligne correspondant à celle que j'ai cochée qui s'affiche. Le petit soucis qui reste, c'est que quand je choisi plusieurs lignes, je n'arrive pas à les afficher toutes. Il y a juste la dernière qui s'affiche.
J'ai le code suivant :
case 'affiche_choix_joueur':
// vérifions que la variable a été transmise
$tabJoueurs = (isset($_POST['joueur']))?$_POST['joueur']:null;
// bouclons sur le tableau qui a été transmis et affichons les valeurs sélectionnées
if (!empty($tabJoueurs)) {
foreach($tabJoueurs as $cle => $valeur) {
echo $cle.' : '.$valeur.'<br>';
}
}
$sql = "SELECT * from joueur WHERE numero=".$valeur;
$resultat = $db->query($sql);
$tpl->assign('nombre_enregistrements', $resultat->numRows());
$resultat = $db->getAll($sql, DB_FETCHMODE_ASSOC );
$tpl->assign('joueur', $resultat);
$tpl->display('afficher_joueur.tpl');
break;
L'erreur semble venir du fait que seule la dernière valeur obteue dans la boucle foreach est utilisée dans la requête.
J'ai donc rajouté une boucle foreach à ma requête comme ceci :
case 'affiche_choix_joueur':
// vérifions que la variable a été transmise
$tabJoueurs = (isset($_POST['joueur']))?$_POST['joueur']:null;
// bouclons sur le tableau qui a été transmis et affichons les valeurs sélectionnées
if (!empty($tabJoueurs)) {
foreach($tabJoueurs as $cle => $valeur) {
echo $cle.' : '.$valeur.'<br>';
}
}
foreach($tabJoueurs as $cle => $valeur) {
$sql = "SELECT * from joueur WHERE numero=".$valeur;}
$resultat = $db->query($sql);
$tpl->assign('nombre_enregistrements', $resultat->numRows());
$resultat = $db->getAll($sql, DB_FETCHMODE_ASSOC );
$tpl->assign('joueur', $resultat);
$tpl->display('afficher_joueur.tpl');
break;
Mais ça ne résoud pas mon problème...