Problème de récupération d'identifiant PHP
RésoluBonjour,
Je suis actuellement en train de réaliser un site/application qui permet de gérer une équipe de volley (il s'agit d'un projet de cours) mais je viens de rencontrer un problème dont je n'arrive vraiment pas à le cerner.
Je souhaite pouvoir afficher une liste de matchs prévus et afficher une liste de joueurs potentiels pouvant participer à un match sélectionné. Mais pour ça je dois au préalable afficher seulement les joueurs qui ne sont pas déjà inscrits pour ce match. j'avais donc pensé à récupérer l'identifiant de mon match pour l'utiliser en conséquence mais je n'y arrive pas.
voici mon code :
<?php
$server = "localhost";
$login = "root";
$mdp = "";
$db = "projet_php";
try {
$bdco = new PDO("mysql:host=$server;dbname=$db",$login,$mdp);
$bdco->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo 'Erreur de connexion : ' . $e->getMessage();
}
$repertoire = "projet-photos/";
?>
<form method="POST" action="ajouterJoueursMatch.php" onsubmit="return verifierSelectionJoueurs();">
<label for="match">Match :</label>
<select name="match" id="match">
<?php
// Récupération de la liste des matchs
$stmt = $bdco->prepare('SELECT * FROM matchs');
$stmt->execute();
while ($row = $stmt->fetch()) {
echo '<option value="' . $row['id_Match'] . '">' . $row['lieu_match'] . ' - ' . $row['date_match'] . ' - ' . $row['heure_match'] . '</option>';
}
?>
</select>
<br>
<label for="joueurs">Joueurs :</label>
<ul>
<?php
// Récupération de l'identifiant du match sélectionné
$idMatch = intval($_POST["match"]);
// Récupération de la liste des joueurs qui ne sont pas déjà assignés au match
$stmt = $bdco->prepare('SELECT * FROM joueur WHERE numero_de_licence NOT IN (SELECT numero_de_licence FROM participer WHERE id_Match = ?)');
$stmt->execute([$idMatch]);
while ($Joueur = $stmt->fetch()) {
echo '<li>';
echo '<input type="checkbox" name="joueurs[]" value="' . $Joueur['numero_de_licence'] . '">';
echo $Joueur['Prenom'] . ' ' . $Joueur['Nom'];
echo '</li>';
}
?>
</ul>
<input type="submit" value="Ajouter">
</form>
<script>
function verifierSelectionJoueurs() {
var boutonsCheckBox = document.getElementsByTagName('input');
var nbJoueursSelectionnes = 0;
for (var i = 0; i < boutonsCheckBox.length; i++) {
if (boutonsCheckBox[i].checked && boutonsCheckBox[i].type == 'checkbox') {
nbJoueursSelectionnes++;
}
}
if (nbJoueursSelectionnes != 5 || nbJoueursSelectionnes2 != 5) {
// Affichage d'une pop-up d'erreur
alert('Veuillez vérifiez que vous ayez bien rempli tous les champs et que vous ayez bien sélectionné 5 joueurs');
return false;
}
else {
return true;
}
}
</script>
En soi mon code fonctionne correctement mais je n'arrive pas récupérer l'identifiant d'un match sélectionné et la mettre dans une variable.
De plus l'erreur suivant s'affiche :
Si quelqu'un pouvait m'aider ce serait génial, merci.
3 réponses
-
Modérateur
En relisant ton code, j'ai l'impression que tu aimerais avoir la liste des joueurs qui ne sont pas déjà inscrits dans un match lors du choix du match en question. (et donc AVANT de SUBMIT ton formulaire)
Pour ça, tu peux utiliser de l'ajax. (soit en jquery $.ajax , soit via la fonction javascript fetch() )
-
Contributeur
bonjour,
La première chose à faire, c'est d'examiner ce que contient $_POST.
Cela peut se faire en utilisant var_dump().
-
-
Contributeur@Hmd3D2Y
Le souci est donc sans doute plutôt dans ton HTML ou dans ton javascript.
-
@yg_be
je ne pense pas que ce soit liée à mon javascript et quant à mon HTML je ne vois pas, surtout que je me suis pour l'instant contenté d'un HTML basique, j'ai beau faire des modifications mais rien n'y ait fait
-
Contributeur@Hmd3D2Y
Commence alors par supprimer ce javascript.
-
@yg_be
Mon problème n'était pas le javascript mais un oublie sur le fonctionnement du POST mais j'ai su résoudre mon problème.
Merci de l'aide :)
-
-
Modérateur
Bonjour
Commence par ça
https://forums.commentcamarche.net/forum/affich-37636387-php-notice-undefined-index
.
-
J'avais déjà réfléchi à cela et avais fait ça :
<?php // Récupération de l'identifiant du match sélectionné if (isset($_POST["match"])) { $idMatch = intval($_POST["match"]); } else { $idMatch = 1; } // Récupération de la liste des joueurs qui ne sont pas déjà assignés au match $stmt = $bdco->prepare('SELECT * FROM joueur WHERE numero_de_licence NOT IN (SELECT numero_de_licence FROM participer WHERE id_Match = ?)'); $stmt->execute([$idMatch]); while ($Joueur = $stmt->fetch()) { echo '<li>'; echo '<input type="checkbox" name="joueurs[]" value="' . $Joueur['numero_de_licence'] . '">'; echo $Joueur['Prenom'] . ' ' . $Joueur['Nom']; echo '</li>'; } ?>Mais j'ai constaté que le problème était que le $_POST ne récupérait pas l'identifiant de ma sélection et resté vide
-
Modérateur@Hmd3D2Y
Tu utilises des chèmeckbox il y a donc fort à parier que tu retournes un heureux contenant 0,1 ou plusieurs valeurs...
Comme te l'a conseillé YG be,
Fais donc un var_dump de ta variable.... Tu verras alors sa structure...
-
@jordane45
Comme dit à YG be, le var_dump me retourne empty, j'en est donc conclu qu'il ne récupère rien lors de la sélection d'un match.
En soit, j'ai écrit : var_dump($_POST); et var_dump($_POST["match"]); pour tester
le 1er me retourne ça :
et le second :
-



