IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

groupes de boutons radio


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Février 2007
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 271
    Par défaut groupes de boutons radio
    Bonjour

    Dans un script php , je voudrais sélectionner qu'une radio à la fois.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    $sql="SELECT nom_titre FROM question,titre,type,reponse WHERE question.id_question=titre.id_titre AND question.id_question=reponse.id_question AND reponse.id_type=type.id_type AND id_sondage=1 AND type.id_type=1 GROUP BY nom_titre;";
    $req= mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
    $nb_res=mysql_num_rows($req);
    while ($row = mysql_fetch_row($req))
    {
    	$i=0; 
    	echo "<span class='petit_titre'><br />".$row[$i]."</span><br />"; //Titre
    	$sql_1="SELECT nom_question FROM question,titre WHERE question.id_titre=titre.id_titre AND titre.nom_titre='$row[$i]'";
    	$req_1= mysql_query($sql_1) or die('Erreur SQL!'.$sql_1.'<br>'.mysql_error());
    	while ($row_1 = mysql_fetch_row($req_1))
    	{	
    		$j=0;
     
    		echo "<table border=1  class='center_bloc' width='50%'>";
     
    		echo "<td>".$row_1[$j]."</td>.</tr>"; //Question
    		$sql_2="SELECT id_reponse,nom_reponse FROM reponse,question WHERE reponse.id_question=question.id_question AND nom_question='$row_1[$j]'";
    		$req_2= mysql_query($sql_2) or die('Erreur SQL !'.$sql_2.'<br>'.mysql_error());
    		while ($row_2 = mysql_fetch_row($req_2))
    		{
     
    			$k=0;
    			echo "<tr>";
    			echo "<td align='center'><input type='radio' name='tab[]' value='$row_2[$k]'><br>".$row_2[1]."</input></td>"; //Réponse
    			echo "</tr>";
     
    		}
    		echo "</table>";
    		}
     
    }
    Mon affichage se fait correctement

    Question 1
    choix 1
    choix 2

    Question 2
    choix 1
    choix 2

    Mais malheureusement lorsque je ne peut sélectionner qu'une radio à la fois (c'est à dire choix1 question1 OU choix1 quesstion2)

    A Noter qu'avec les checkbox , cela fonctionnes très bien et me retournes d'ailleurs les bons résultats.

    Ou alors je ne sais pas si quelqu'un aurait une idée afin que je puisse sélectionner qu'une checkbox. (en javascript ?)

    Cela me permettrait de contourner le problème.


    Cdt

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 22
    Par défaut
    Hello,

    Pour grouper plusieurs boutons radio, tu dois leur donner un attribut name identique. Tu ne pourras alors en sélectionner qu'un seul ayant cet attribut name.

    Sinon, c'est effectivement aussi faisable avec des checkbox et du JS, mais autant utiliser les élements fait pour ca.

  3. #3
    Membre éclairé
    Inscrit en
    Février 2007
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 271
    Par défaut
    Oui mais c'est ce que j'ai fais.

    Mais malheuresement , il m'est possible de sélectionner qu'UNE radio box dans mon formulaire alors que je voudrais une radiobox par question.

  4. #4
    Membre éclairé
    Inscrit en
    Février 2007
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 271
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    <script>
    function checkSelect(elmId)
    {
    	  maxOptionsSelect = 1;
    	  form = document.all("formulaire");
    	  inputs = form.getElementsByTagName("input");
    	  count = 0;
    	  for(i=0 ; i<inputs.length ; i++)
    	  {
    	    if(inputs[i].type=="checkbox" && inputs[i].checked==true)
    		{
    		  count++;
    		}
    	  }
     
    	  if(count > maxOptionsSelect)
    	  {
    	  	document.all(elmId).checked=false;
    	  	alert("Vous ne pouvez sélectionner que maximum " + maxOptionsSelect + " options");
    		return false;
    	  }
    	  return false;
    }
    </script>
    J'ai trouvé un script qui permet de sélectionner qu'un certain nombre défini de checkbox.


    Cependant , il ne s'applique pas ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    $sql="SELECT nom_titre FROM question,titre,type,reponse WHERE question.id_question=titre.id_titre AND question.id_question=reponse.id_question AND reponse.id_type=type.id_type AND id_sondage=1 AND type.id_type=1 GROUP BY nom_titre;";
    						$req= mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
    						$nb_res=mysql_num_rows($req);
    						while ($row = mysql_fetch_row($req))
    						{
    							$i=0; 
    							echo "<span class='petit_titre'><br />".$row[$i]."</span><br />"; //Titre
     
    							$sql_1="SELECT nom_question FROM question,titre WHERE question.id_titre=titre.id_titre AND titre.nom_titre='$row[$i]'";
    							$req_1= mysql_query($sql_1) or die('Erreur SQL !'.$sql_1.'<br>'.mysql_error());
    							while ($row_1 = mysql_fetch_row($req_1))
    							{	
    								$j=0;
     
    								echo "<table border=1  class='center_bloc' width='50%'>";
     
    								echo "<td>".$row_1[$j]."</td>.</tr>"; //Question
    								$sql_2="SELECT id_reponse,nom_reponse FROM reponse,question WHERE reponse.id_question=question.id_question AND nom_question='$row_1[$j]'";
    								$req_2= mysql_query($sql_2) or die('Erreur SQL !'.$sql_2.'<br>'.mysql_error());
    								while ($row_2 = mysql_fetch_row($req_2))
    								{
     
    										$k=0;
    										echo "<tr>";
    										echo "<td align='center'><input type='checkbox' name='tab[]' value='$row_2[$k]' onclick='javascript:checkSelect($row_2[$k]);''><br>".$row_2[1]."</input></td>"; //Réponse
    										echo "</tr>";
     
    								}
    								echo "</table>";
    							}
     
    						}
    Je vais laisser tomber pour le javascript.

    J'ai trouvé d'ou vient le problème ,c'est au nom de la radio.

    Toutes les radio ont le meme nom , c'est donc pour cela que je ne peut pas en sélectionner un pour chaque question.

    Maintenant reste à voir comment attribuer un nom dynamique à la radio en fonction de la question...

    Si quelqu'un a une idée, je suis preneur pour résoudre mon m'aider à résoudre mon problème.Merci

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Il suffit que les boutons radio aient un "name" reprenant le numero de la question

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    name="reponse[$question]"
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 22
    Par défaut
    Oui, c'est cela, il faut un nom pour chaque groupe de questions, donc un name différent pour chaque question.

    Pour avoir un nom différent, si tu as un champ id pour les questions dans ta BDD, tu peux utiliser celui là en le recuperant avec la question dans ta premiere requete. Ce qui donnerai un truc du genre : 'name="radio'.$row['id'].'"'; et donnerai donc un nom différent pour chaque question. Tu peux aussi utiliser une variable que tu concaténe au nom comme avec l'id et que tu incrémente à chaque nouvelle question.

  7. #7
    Membre éclairé
    Inscrit en
    Février 2007
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 271
    Par défaut
    Cela fonctionnes , j'arrive maintenant à sélectionner correctement mes radio.
    Je vous remercie.

    Maintenant lorsque je récupérais , je fesais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for($i=0; $i<count($_POST['tab']);$i++)
    {
    	echo $_POST["tab"][$i]." ";
    }
    Et je récupérais ainsi tous mes id réponses. (avec les checkbox)

    Mais maintenant que ma radio s'appelle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<td align="center"><input type="radio" name="radio'.$row_1[0].'"" value="$row_2[$k]" ><br>'.$row_2[1].'</input></td>'; //Réponse
    Comment récupérer les différentes valeurs de mes radio?

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    c'est pour cela qu'il ne faut pas concatener mais utiliser un tableau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<td align="center"><input type="radio" name="radio['.$row_1[0].']" value="$row_2[$k]" ><br>'.$row_2[1].'</input></td>'; //Réponse
    et ensuite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    foreach($_POST['radio'] as $question=>$reponse) {
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Membre éclairé
    Inscrit en
    Février 2007
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 271
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<td align="center"><input type="radio" name="radio['.$row_1[0].']" " value="$row_2[$k]" ><br>'.$row_2[1].'</input></td>'; //Réponse

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    foreach($_POST['radio'] as $row_1[0]=>$row_2[1])
    {
    	echo $_POST['radio'];
    }

    Et la il m'affiche Array.

  10. #10
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Regarde le fonctionnement de la fonction foreach()
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Groupe de boutons radios
    Par owzzone dans le forum Langage
    Réponses: 1
    Dernier message: 04/04/2007, 17h23
  2. [Debutant] Fonction avec 2 groupe de Bouton Radio
    Par jazer dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 10/10/2006, 16h23
  3. Valeur d'un groupe de boutons radio non sélectionnés ??
    Par michaelbob dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 04/11/2005, 16h27
  4. [Débutant][Netbeans 4.1]Groupe de boutons RADIO
    Par Terminator dans le forum NetBeans
    Réponses: 1
    Dernier message: 12/09/2005, 16h22
  5. [JPanel] ajouter un groupe de boutons radio
    Par ummon99 dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 25/04/2005, 14h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo