Récupérer plusieurs radio

Signaler
Messages postés
1132
Date d'inscription
mercredi 28 août 2002
Statut
Membre
Dernière intervention
6 mars 2020
-
Messages postés
1313
Date d'inscription
jeudi 16 juillet 2009
Statut
Membre
Dernière intervention
20 juin 2014
-
Bonjour,

Voilà le problème, j'ai un formulaire qui contient un titre et plusieurs radio.

Le problème est que je n'arrive pas a récupérer les contenu de la valeur de chaque radio.

								  <form id="myform" method="post">
									<input type="hidden" name="survey_id" id="survey_id" value="<?php echo $_GET['id']; ?>">
									<input type="hidden" name="user_cle" id="user_cle" value="<?php echo $_GET['user_cle']; ?>">
									<?php
									$sth = $bdd->prepare("SELECT username, user_cle FROM users WHERE user_cle=$user_cle LIMIT 1");
									$sth->execute();
									$result = $sth->fetchAll(PDO::FETCH_COLUMN, 0);
									print_r('<input type="hidden" name="user_cle" id="user_cle" value="'.$result[0].'">');								
									?>									
									<table class="table table-striped">
									  <thead>
										<tr>
										  <th>#</th>
										  <th>Question</th>
										  <th>Exellent</th>
										  <th>Very good</th>
										  <th>Satisfied</th>
										  <th>Fair</th>
										  <th>Poor</th>                              
										</tr>
									  </thead>
									  <tbody>	
										<?php									
										$reqquestions=$bdd->query("SELECT * FROM survey_questions WHERE survey_id=$id_survey");
										$reqquestions->setFetchMode(PDO::FETCH_OBJ);
										$count = $reqquestions->rowCount();
										echo '<input type="hidden" name="count" id="count" value="'.$count.'">';										
										if ($count > 0){
											$i=1;
											while( $result = $reqquestions->fetch() )
											{
											echo '<tr>
												<td>'.$i.'</td>
											  <td>'.$result->question_body.'</td>
											  <td><label class="radio"><input type="radio" name="response'.$i.'" value="Exellent" ></label></td>
											  <td><label class="radio"><input type="radio" name="response'.$i.'" value="Very good"  ></label></td>
											  <td><label class="radio"><input type="radio" name="response'.$i.'" value="Satisfied" ></label></td>
											  <td><label class="radio"><input type="radio" name="response'.$i.'" value="Fair" ></label></td>
											  <td><label class="radio"><input type="radio" name="response'.$i.'" value="Poor" ></label></td>
											  ';
											$i++;
											}
										}
										
										else{
											echo "<tr><td>#</td><td colspan='6'>Aucune question disponible pour ce questionnaire...</td></tr>";
										}																													
										?>
									  </tbody>
									</table>							
								<span class="">
									<input type="submit"  name="submit" class="btn btn-turn-primary" value="Submit" id="button">
									<input type="reset" class="btn" value="Reset">
									<img id="busy" src="assets/images/loading.gif" />						
								</span>
                        </form>


Je désire juste savoir comment récupérer le contenu de response1, response2, etc...

3 réponses

Messages postés
1313
Date d'inscription
jeudi 16 juillet 2009
Statut
Membre
Dernière intervention
20 juin 2014
6
Hello,

Moi je ferai la récupération des valeurs des boutons radio avec Jquery (en rajoutant un id aux radios) :

Dans le PHP :

while( $result = $reqquestions->fetch()){
    echo '<tr>
<td>'.$i.'</td>
<td>'.$result->question_body.'</td>
<td><label class="radio"><input type="radio" name="response" id="response'.$i.'" value="Exellent" ></label></td>
<td><label class="radio"><input type="radio" name="response" id="response'.$i.'" value="Very good"  ></label></td>
<td><label class="radio"><input type="radio" name="response" id="response'.$i.'" value="Satisfied" ></label></td>
<td><label class="radio"><input type="radio" name="response" id="response'.$i.'" value="Fair" ></label></td>
<td><label class="radio"><input type="radio" name="response" id="response'.$i.'" value="Poor" ></label></td>
';
    $i++;
}


Dans le script Jquery :

$(document).ready(function(){
    
    var Values = [];
    
    $('[name="response"]').click(function(){
        
        var Value = $(this).val();
        var ID = $(this).attr('id');
        var nID = ID.split('se'); nID = nID[1];
        
        if($(this).is(':checked')){
            
            Values[nID] = Value;
            
        }else{
            
            Values[nID] = "unchecked";
            
        }
        
    });
    
    $('#button').click(function(e){
        
        e.preventDefault();
        
        var myRadioValues = {
            radio1: Values[1],
            radio1: Values[2],
            radio1: Values[3],
            radio1: Values[4],
            radio1: Values[5]
        };
        
    });
    
});


Après il faut poster le tableau myRadioValues à un script PHP, je ne sais pas si ça répond en toute ou partie à ta question (j'ai répondu fissa).

A+
Messages postés
1132
Date d'inscription
mercredi 28 août 2002
Statut
Membre
Dernière intervention
6 mars 2020
1
Salut,

Merci pour ta réponse.

En fait le nombre de questions est récupéré via une requête, d'où la boucle sur le tableau des : Exellent, Very good, poor, etc...

Je suis déjà sur du jquery, mais je ne vois pas trop comment récupérer le code!!!
	<script type="text/javascript">
		$(document).ready(function(){
			$('img#busy').hide();
			$("#button").click(function(){                                 
			  var mydata=$('#myform').serialize();						  
				  $.ajax({
					type:"post",
					url:"inc/submit_survey.php",
					data: mydata,
					beforeSend: function() {							
						$("img#busy").show();
					},
					complete: function() {							
						$("img#busy").hide();
					},      
					error: function(error) {
						$("img#busy").hide();
						$("#info").html(error);
					},
					success:function(data){
						$("#info").html(data);
					}
				});
			});
		});
	</script>



Si tu pouvais m'éclairer un peu plus...

--------------------------
..:: Enjoy living in hell ::..
Messages postés
1313
Date d'inscription
jeudi 16 juillet 2009
Statut
Membre
Dernière intervention
20 juin 2014
6
Re,

En général j'utilise le XML pour les échanges de données entre PHP et Jquery, en somme je procèderai comme ceci :

Dans le script Jquery :

$(document).ready(function(){
    
    $('img#busy').hide();
    
    $("#button").click(function(){
        
        var formData = { mydata: $('#myform').serialize(); };
        
        $("img#busy").show();
        
        $.post($(location).attr('href'), formData, function(xml){
            
            $('form_data', xml).each(function(){
                
                var STATUT = $(this).find('statut').text();
                var MESSAGE = $(this).find('message').text();
                
                if(STATUT == 'OK'){
                                   
                    // traitement si tout est ok
                    alert(MESSAGE);
                    
                }else{
                    
                    // traitement si c'est pas bon
                   $("#info").html(MESSAGE);
                    
                }
                
                $('img#busy').hide();
                
            });
            
        });
    });
});


Dans le script PHP d'analyse du formulaire (par ex.: form_validate.php) :

$mydata = htmlspecialchars($_POST['mydata']);

$mydata = explode("&",$mydata);

// traitement des données postées...

if("tout est ok"){
    
    $STATUT = "OK";
    $MESSAGE = "tout est ok";

    $XML = '<?xml version="1.0" encoding="UTF-8"?>';
    $XML .= '<data>';
    $XML .= '<form_data>';
    $XML .= '<statut>'.$STATUT.'</statut>';
    $XML .= '<message>'.$MESSAGE.'</message>';
    $XML .= '</form_data>';
    $XML .= '</data>';
    echo $XML;
    
}else{
    
    $STATUT = "PAS OK";
    $MESSAGE = "c'est pas bon !";

    $XML = '<?xml version="1.0" encoding="UTF-8"?>';
    $XML .= '<data>';
    $XML .= '<form_data>';
    $XML .= '<statut>'.$STATUT.'</statut>';
    $XML .= '<message>'.$MESSAGE.'</message>';
    $XML .= '</form_data>';
    $XML .= '</data>';
    echo $XML;
    
}


Et dans le code de la page de ton formulaire, en amont tu places un include qui charge le script d'analyse du formulaire si les données sont postées :

if(isset($_POST['mydata'])){

include 'form_validate.php';

}


A+