Bonjour, Alors le code n'est toujours pas exempt d'erreur , car je n'ai pas tout le contexte.
Mais ton erreur se situais ici :
$i est une variable qui est incrémenté dans une boucle for et non pas un parcours de tableau, du coup seul $i contient une valeur numérique.
Bon là je prend ma casquette de formateur
Ici, vous faite la requête suivante :
Code : Tout sélectionner
$req0 = "SELECT idTournoi FROM tournois ORDER BY idTournoi DESC LIMIT 1";
C'est à dire que vous allez rechercher l'id le plus grand et j'imagine même que cet id est autoincrémenté dans votre db ?
En suite vous réalisez une boucle pour définir l'ensemble des id que vous passerez dans une autre requête et vous faites donc un menu déroulant.
La requête préparé (bonne habitude

)
Code : Tout sélectionner
$req3 = $bdd->prepare('SELECT nom FROM tournois WHERE idTournoi = ?');
ensuite vous faites la boucle
Code : Tout sélectionner
<select name="id_du_tournois" type="number">
<?php for ($i = 0; $i <= $maxId; $i++): ?>
<?php $req3->execute(array($i)) ?>
<?php while ($nomT = $req3->fetch()): ?>
<option value='<?php echo $i ?>'> <?php echo $nomT['nom'] ?> --> ID
: <?php echo $i ?></option>
<?php endwhile; ?>
<?php endfor ?>
</select>
Ici se pose plusieurs souci de conceptualisation.
1 : vous faites un for de zéro à <= du plus grand id retrouvé que vous mettez dans la variable $i
Du coup votre requête préparé va être testé avec un idTournoi = 0 , ce qui n'est pas possible.
2 : vous partez du constat que le plus grand id en faisant un décompte, vous allez retrouvé tout les id, je dirais oui, à condition de n'avoir jamais supprimé de tournoi !
Je m'explique, imaginons que vous 5 tournois dans db :
1 tournois1
2 tournois2
3 tournois3
4 tournois4
5 tournois5
Dans votre code vous sélectionnez le plus grand id (5) puis vous faites un for de 0 à 5, donc votre menu sera :
0 1 2 3 4 5
imaginons que nous supprimons le tournoi 2 et 4 et qu'on rajoute 1 tournoi (en autoincrément on ne remplace pas les places vides)
nous aurions alors :
1 tournois1
3 tournois3
5 tournois5
6 tournois6
Votre boucle va donner 0 1 2 3 4 5 6 et ce même si 0 2 4 n'existe pas dans la db.
Il faudrait alors aller rechercher tout les id et pas seulement le plus grand id.
3 : vous aller créer des id à la volée, pour aller rechercher les tournois dans la même table ?????
Pourquoi ne pas le faire en une seule passe sans faire toutes vos requêtes.
Voici POUR MOI, une solution plus viable et cohérente de ce que je comprend, à ce que vous essayez de faire :
Code : Tout sélectionner
<section>
<h2>Informations à remplir pour inscrire votre équipe</h2>
<form action="inscriptionEquipe2.php" method="POST">
<p>
<label>Nom de l'equipe :
<input type="text" name="nomEquipe"/>
</label>
</p>
<p>
<label>Adresse email du capitaine d'équipe :
<input type="email" name="adresseEmail"/>
</label>
</p>
<p>
<label>Niveau de l'équipe :
<input type="number" name="nivEquipe" min=1 max=100 value=1/>
</label>
</p>
<p>
<label>Nombre de joueurs dans l'équipe :
<input type="number" name="nbrJoueursEquipe" min=1 max=25 value=1/>
</label>
</p>
<?php
$req3 = $bdd->prepare('SELECT idTournoi,nom FROM tournois');
$req3->execute();
$tournois = $req3->fetchAll(PDO::FETCH_ASSOC);
?>
<p>
<label>Nom du tournois où vous souhaitez inscrire votre équipe : " . "</label>";
<select name="id_du_tournois" type="number">
<?php foreach ($tournois as $tournoi): ?>
<option value='<?php echo $tournoi['idTournoi'] ?>'> <?php echo $tournoi['nom'] ?> --> ID
: <?php echo $tournoi['idTournoi'] ?></option>
<?php endforeach ?>
</p>
<p>
<input type="submit" value="Etape suivante" />
</form>
</section>
Bonjour, Alors le code n'est toujours pas exempt d'erreur , car je n'ai pas tout le contexte.
Mais ton erreur se situais ici :
[code]
$i['idTournoi']
[/code]
$i est une variable qui est incrémenté dans une boucle for et non pas un parcours de tableau, du coup seul $i contient une valeur numérique.
Bon là je prend ma casquette de formateur :)
Ici, vous faite la requête suivante :
[code]
$req0 = "SELECT idTournoi FROM tournois ORDER BY idTournoi DESC LIMIT 1";
[/code]
C'est à dire que vous allez rechercher l'id le plus grand et j'imagine même que cet id est autoincrémenté dans votre db ?
En suite vous réalisez une boucle pour définir l'ensemble des id que vous passerez dans une autre requête et vous faites donc un menu déroulant.
La requête préparé (bonne habitude :) )
[code] $req3 = $bdd->prepare('SELECT nom FROM tournois WHERE idTournoi = ?');[/code]
ensuite vous faites la boucle
[code]
<select name="id_du_tournois" type="number">
<?php for ($i = 0; $i <= $maxId; $i++): ?>
<?php $req3->execute(array($i)) ?>
<?php while ($nomT = $req3->fetch()): ?>
<option value='<?php echo $i ?>'> <?php echo $nomT['nom'] ?> --> ID
: <?php echo $i ?></option>
<?php endwhile; ?>
<?php endfor ?>
</select>
[/code]
Ici se pose plusieurs souci de conceptualisation.
1 : vous faites un for de zéro à <= du plus grand id retrouvé que vous mettez dans la variable $i
Du coup votre requête préparé va être testé avec un idTournoi = 0 , ce qui n'est pas possible.
2 : vous partez du constat que le plus grand id en faisant un décompte, vous allez retrouvé tout les id, je dirais oui, à condition de n'avoir jamais supprimé de tournoi !
Je m'explique, imaginons que vous 5 tournois dans db :
1 tournois1
2 tournois2
3 tournois3
4 tournois4
5 tournois5
Dans votre code vous sélectionnez le plus grand id (5) puis vous faites un for de 0 à 5, donc votre menu sera :
0 1 2 3 4 5
imaginons que nous supprimons le tournoi 2 et 4 et qu'on rajoute 1 tournoi (en autoincrément on ne remplace pas les places vides)
nous aurions alors :
1 tournois1
3 tournois3
5 tournois5
6 tournois6
Votre boucle va donner 0 1 2 3 4 5 6 et ce même si 0 2 4 n'existe pas dans la db.
Il faudrait alors aller rechercher tout les id et pas seulement le plus grand id.
3 : vous aller créer des id à la volée, pour aller rechercher les tournois dans la même table ?????
Pourquoi ne pas le faire en une seule passe sans faire toutes vos requêtes.
Voici POUR MOI, une solution plus viable et cohérente de ce que je comprend, à ce que vous essayez de faire :
[code]
<section>
<h2>Informations à remplir pour inscrire votre équipe</h2>
<form action="inscriptionEquipe2.php" method="POST">
<p>
<label>Nom de l'equipe :
<input type="text" name="nomEquipe"/>
</label>
</p>
<p>
<label>Adresse email du capitaine d'équipe :
<input type="email" name="adresseEmail"/>
</label>
</p>
<p>
<label>Niveau de l'équipe :
<input type="number" name="nivEquipe" min=1 max=100 value=1/>
</label>
</p>
<p>
<label>Nombre de joueurs dans l'équipe :
<input type="number" name="nbrJoueursEquipe" min=1 max=25 value=1/>
</label>
</p>
<?php
$req3 = $bdd->prepare('SELECT idTournoi,nom FROM tournois');
$req3->execute();
$tournois = $req3->fetchAll(PDO::FETCH_ASSOC);
?>
<p>
<label>Nom du tournois où vous souhaitez inscrire votre équipe : " . "</label>";
<select name="id_du_tournois" type="number">
<?php foreach ($tournois as $tournoi): ?>
<option value='<?php echo $tournoi['idTournoi'] ?>'> <?php echo $tournoi['nom'] ?> --> ID
: <?php echo $tournoi['idTournoi'] ?></option>
<?php endforeach ?>
</p>
<p>
<input type="submit" value="Etape suivante" />
</form>
</section>
[/code]