Sors le echo de ta boucle, tu verras la valeur finale de ta chaîne :
foreach($tabJoueurs as $cle => $valeur) {
$valeurs .= $valeur.", ";
//echo $cle.' : '.$valeur.'<br>';
}
echo $valeurs;
foreach($tabJoueurs as $cle => $valeur) {
$valeurs .= $valeur.", ";
//echo $cle.' : '.$valeur.'<br>';
}
echo $valeurs;
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) {
$valeurs .= $valeur." ";
}
echo $valeurs; //l'écho me renvoie bien uniquement les numéros choisis
}
// requête SQL qui selectionne les joueurs dont les numeros sont dans $valeurs
$sql = "SELECT * from joueur WHERE numero IN (".$valeurs.")";
$resultat = $db->query($sql);
$resultat = $db->getAll($sql, DB_FETCHMODE_ASSOC );
$tpl->assign('joueur', $resultat);
$tpl->display('afficher_joueurs_choisis.tpl');
break;
Le tableau "résultat" s'affiche mais avec ça dans la première case :
echo $sql;
copie le code SQL affiché et teste le directement sur la base (via phpMyAdmin par exemple)
$resultat = $db->query($sql);
$resultat = $db->getAll($sql, DB_FETCHMODE_ASSOC );
Est-ce que tu ne vois pas quelques incohérences ? Je crois que la seconde ligne est en trop... J'ai récupéré ce code de la version "afficher" d'origine et je n'ai pas fait gaffe à ça...Et ensuite regarde ces lignes attentivement :
PHP:
$resultat = $db->query($sql);
$resultat = $db->getAll($sql, DB_FETCHMODE_ASSOC );
Est-ce que tu ne vois pas quelques incohérences ? Wink
Code : Tout sélectionner
SELECT * from joueur WHERE numero IN (2 4 )
$resultat = $db->query($sql);
$resultat = $db->getAll($sql, DB_FETCHMODE_ASSOC );
première ligne : tu exécutes ta requête SQL qui est dans $sql via ta fonction, et tu renvoies le jeu de résultats brut dans $resultat => OK$resultat = $db->query($sql);
$resultat_bis = $db->getAll($resultat, DB_FETCHMODE_ASSOC );
Tu peux renommer $resultat_bis pour une variable plus parlante.Pour ce que tu m'as indiqué ici, j'ai changé la seconde ligne, mais ça ne fonctionne pas. J'ai donc rééssayé avec ce que j'avai au départ et ça marche !Au sujet de ces lignes, voici ce que je vois moi :
PHP:
$resultat = $db->query($sql);
$resultat = $db->getAll($sql, DB_FETCHMODE_ASSOC );
première ligne : tu exécutes ta requête SQL qui est dans $sql via ta fonction, et tu renvoies le jeu de résultats brut dans $resultat => OK
deuxième ligne : tu devrais normalement ici traiter le jeu de résultats précédent ($resultat) et renvoyer le tout dans une autre variable pour traiter les valeurs.
Hors tu réutilises ton code SQL ($sql) et tu renvoies le résultat dans la même variable.
Je pense que ceci conviendrait mieux :
PHP:
$resultat = $db->query($sql);
$resultat_bis = $db->getAll($resultat, DB_FETCHMODE_ASSOC );
Tu peux renommer $resultat_bis pour une variable plus parlante.
$resultat = $db->query($sql);
$resultat = $db->getAll($sql, DB_FETCHMODE_ASSOC );
Alors si ceci marche je dirais qu'il y a une ligne qui ne sert à rien, la première... puisque tu écrases $resultat au deuxième passage, et vu que tu utilises dans chacun ta requête $sql, je pense que ces deux fonctions font à peu de choses près la même chose. C'est à dire exécuter une requête SQL sur la base, donc regarde la doc de ta classe pour vérifier laquelle te convient le mieux.
Oui, tout est possible en théorie, faut trouver le moyen de le faireDonc le premier test à faire, c'est compter le nombre de cases qui ont été cochées. J'aurais bien aimé faire un compteur du genre :
Il vous reste X cases à chocher en dessous du formulaire, à coté du bouton valider... et pourquoi pas n'afficher le bouton "valider" uniquement lorsque 11 cases sont cochées...
C'est possible ?
Dans l'idéal les 2, car quelqu'un qui désactive le JS pourra esquiver la vérificationOu il vaut mieux indiquer un message du genre "vous devez sélectionner 11 joueurs" avec le réaffichage du formulaire ?
Tu peux effectivement faire une requête pour vérifier cela, et n'exécuter l'autre que si c'est bon, ou faire ce test en PHP dans les résultats, là c'est à toi de voirEt pour le gardien de but, il faudrait (avec une requete SQL par exemple) compter le nombre de joueurs "WHERE poste = gardien" et si le résultat est différent de 1, afficher une erreur avec le formulaire