formulaire tableau avec input radio....

Petit nouveau ! | 9 Messages

11 janv. 2013, 23:58

Bonjour,

Je débute en programmation et j'aimerais si possible avoir vos idées sur mon souci.

ci dessous mon code pour le formulaire faisant appel à une table sql pour l'affichage des données....(c'est un extrait de la page)

<form method="POST" action="inscriptions2.php" >
<div class="tableau">
2) choisissez un concours dans la liste ci-dessous puis s&eacute;lectionnez le samedi OU le dimanche
<table>
	<caption> Liste des Concours </caption>
    <tr>
		<th class="colid">Concours N&#186;</th>
		<th class="colsamedi">Samedi</th>
		<th class="coldimanche" >Dimanche</th>
		<th class="coldatelim">Date Limite</th>
    	<th class="colorganisateur">Organisateur</th>
    	<th class="coldiscipline">Discipline</th>
    </tr>
<?php
//On recupere les données des concours
$req = mysql_query("SELECT id, samedi, dimanche, date_limite, organisateur, affichage, discipline FROM concours  order by id *1"); //where discipline=$discipline
while($dnn = mysql_fetch_array($req))
{
?>
	<tr>
		<td><input type="radio" name="id" value="<?php echo $dnn['id']; ?>" required><?php echo $dnn['id']; ?></td>	
		<td><input type="radio" name="samedi" id="jour"value="<?php echo $dnn['samedi']; ?>" /><?php echo $dnn['samedi']; ?></td>
		<td><input type="radio" name="dimanche" id="jour" value="<?php echo $dnn['dimanche']; ?>"/><?php echo $dnn['dimanche']; ?></td>
    	<td style="color:red"><?php echo $dnn['date_limite']; ?></td>
		<td><?php echo $dnn['affichage']; ?></td>
    	<td style="color:blue"><?php echo $dnn['discipline']; ?></td>
    </tr>
<?php
}
?>
</table>
</div>
<div class="bouton">
3) choisissez l'heure de votre d&eacute;part  puis cliquez sur le bouton valider pour finaliser votre inscription.<br /><br />
		<label for="heure">heure choisie</label> <select name="heure" id="heure">
           <option value="08h00">08h00</option>
           <option value="08h30">08h30</option>
           <option value="09h00">09h00</option>
           <option value="09h30">09h30</option>
           <option value="10h00">10h00</option>
           <option value="10h30">10h30</option>
           <option value="11h00">11h00</option>
           <option value="11h30">11h30</option>
		   <option value="12h00">12h00</option>
           <option value="12h30">12h30</option>
           <option value="13h00">13h00</option>
           <option value="13h30">13h30</option>
           <option value="14h00">14h00</option>
           <option value="14h30">14h30</option>
           <option value="15h00">15h00</option>
           <option value="15h30">15h30</option>
		   <option value="16h00">16h00</option>
           <option value="16h30">16h30</option>
           <option value="17h00">17h00</option>
           <option value="17h30">17h30</option>
           <option value="18h00">18h00</option>
           <option value="18h30">18h30</option>
           <option value="19h00">19h00</option>
           <option value="19h30">19h30</option>
        </select> 
	   	<input type="submit" value="valider" />
</div>
</form>
pas de souci avec ce code l'affichage résultant est le suivant....
Image


je souhaiterai faire la chose suivante.

si une personne connectée veut s'inscrire à un concours, qu'il puisse sélectionner par exemple le concours N° 10 mais que dès qu'il choisit son N° de concours que sa saisie du jour de compétition samedi OU dimanche soit figé sur la ligne choisie...
actuellement sur mon code je peux choisir la ligne 3 le samedi de la ligne 5 et le dimanche de la ligne 22, ça fait désordre dans mes bases de données où vont s'inscrire les données....(traitement du formulaire)

je n'ai que 3 semaines de codding derrière moi et là je sèche un peu. si il y à du javascript à faire je suis mal car je ne connais pas du tout....

j'avais pensé résoudre le souci du choix des jours en appelant du même nom le bouton radio je pouvais basculer du samedi au dimanche proprement (sans parler de la ligne qui merdait...) mais les données du jour ne sont pas envoyées à la table sql...

je ne suis pas obligé de tout traiter avec des input radio je pourrais mettre un checkbox sur le N° du concours en fait. pour le moment avec mon code je ne peux choisir qu'un concours (le radio agit sur la colonne complète, ça c'est déjà une bonne chose. mais si vous voyez où je veux en venir , dès qu'on coche un concours on ne puisse pas sélectionner le samedi ou dimanche d'une autre ligne et on ne peux avoir le choix que d'un seul jour sur la même ligne l'un ou l'autre....(euh, je me répète un peu là....), ensuite l'utilisateur choisit l'heure du concours va le select avec les heures mais bon ça pas de problème, ça fonctionne.

vos aides seront les bienvenues car je sèche un peu :)

merci d'avance.
Bruno

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

12 janv. 2013, 15:02

Salut,

En fait si tu gère la possibilité d'inscription multiple sur ton tableau tu va régler ton soucis ;)

Je m'explique :

Dans la première colonne tu met des checkbox (quand on choisit de s'inscrire à un coucous on clic sur la checkbox).
Maintenant comment gérer les différentes checkbox sans se prendre la tête ?
C'est simple tu utilise la notation tableau pour nommer cette checkbox. Par exemple : <input type="checkbox" name="concours[]" />

Côté php tu aura un tableau dans $_POST['concours'], que tu va pouvoir parcourir avec la boucle foreach.

Maintenant comment gérer les boutons radios ?

Comme tu le sais déjà, pour que tu ne puisse sélectionner que le samedi ou le dimanche il faut que tes deux radios aient le même nom mais pas la même valeur.

Donc pour utiliser le même principe que la checkbox tu va nommer tes radios avec la notation tableau (par exemple name="jours[]").

Lorsque tu valide le formulaire, tu n'aura que les checkbox qui ont étaient sélectionnées, tu récupérer l'index et tu l'utilise pour récupérer la valeur du bouton radio sélectionné.
N
Attention, subtilité le code comme je te le décrit ne fonctionné pas il faut que tu gère l'index des checkbox sinon c'est la merde.
Donc à l'affichage (une boucle while je suppose) tu utilise une variable qui te sert de compteur qui contient l'index (disant $i ;) ) que tu incrément à chaque tour de boucle.

Donc name ="concours[$i]] et name ="jours[$i]" (pour les deux radios).

Ainsi au traitement tu faite un foreach sur les concours, tu récupère l'index tu va cherche dans $_POST['jours'][$index] la valeur choisie pour le jour (qui correspond à ce concours ).


@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 9 Messages

12 janv. 2013, 16:26

merci de ton message.
je vais essayer de potasser de ce coté là , pour l'instant je ne vois pas comment ça se traduit en terme de code (jé débute en code depuis moins d'un mois....)

mais si je réussi ça va faire plaisir à quelqu'un qui souhaitant pouvoir s'inscrire à plusieurs compétitions en même temps.
maintenant reste le code à mettre car là c'est un peu chaud pour moi là :)

si au passage tu as un bon tuto quelque part , ça m'intéresserait bien car je rame pour trouver sur le net...

merci , je vais de ce pas me plonger dans mes livres.

Bruno