Récupérer la valeur du bouton radio
Résolu
philip51
Messages postés
49
Date d'inscription
Statut
Membre
Dernière intervention
-
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -



Dans cette page j'ai 3 boutons radio qui me servent à sélectionner dans la bdd l'affichage à faire. Cette partie fonctionne correctement.
dans le tableau affiché, je récupère l'id sélectionné. cette partie fonctionne aussi correctement.
Mon soucis est que les boutons radio se remettent à blanc quand la page se recharge alors que je voudrais conserver et afficher celui qui a été sélectionné.
ci-dessous tout le code de ma page
<?php include("connect.php"); $nom = ''; $prenom = isset($_GET['prenom']) ? $_GET['prenom'] : ""; $id = isset($_GET['id']) ? $_GET['id'] : ""; $nombre = ''; $message = ''; if (isset($_POST['choix'])){ if ($_POST['choix'] == 'A'){ $choix = 'A'; } else if ($_POST['choix'] == 'F'){ $choix = 'F'; } else if ($_POST['choix'] == 'T'){ $choix = 'T'; } else { $choix = 'T'; } } if ((isset($_POST['envoyer'])) AND (!empty($_POST['choix']))){ if ($choix == 'A'){ $req = $cnx->query("SELECT COUNT(*) AS nb FROM membres WHERE nationalite = 'Allemande'"); } else if ($choix == 'F') { $req = $cnx->query("SELECT COUNT(*) AS nb FROM membres WHERE nationalite = 'Française'"); } else { $req = $cnx->query("SELECT COUNT(*) AS nb FROM membres "); } $req->execute(); $data = $req->fetch(); $nombre = $data['nb']; } else { $message = "Merci de choisir un affichage !"; } ?> <div style="text-align:center;margin-left:auto;margin-right:auto;background-color:#7FDD4C;width:85%;box-shadow:0.7em 0.7em 0.7em #3A9D23;"> <p> <FORM name="research" ACTION = "index.php?page=comodmember" METHOD="POST">'; <br />Pour modifier les données d'un membre, cliquez sur son nom<br /> <p style="text-align:left;"> Sélectionner la liste des membres à afficher :<br /> <input type="radio" name="choix" Value="T" <?php if(isset($_POST["choix"])) { if ($_POST["choix"] == "T"){ echo 'checked = "checked"';}} ?>style="margin-left:5em;">Tous * <span style="margin-left:2em;"><input type="radio" name="choix" Value="A" <?php if(isset($_POST["choix"])) { if ($_POST["choix"] == "A"){ echo 'checked = "checked"';}} ?>>Allemand.e.s</span> <span style="margin-left:2em;"><input type="radio" name="choix" Value="F" <?php if(isset($_POST["choix"])) { if ($_POST["choix"] == "F"){ echo 'checked = "checked"';}} ?>>Français.e.s</span> <span style="margin-left:2em;"><input type="submit" name="envoyer" Value="Afficher" style="cursor:pointer;"></span> <br/> <span style="font-size:0.8em;"> * Affichage par défaut</span></p> <?php if ((isset($_POST['envoyer'])) AND (!empty($_POST['choix']))){ error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); //préparation de la requête et des variables if ($choix == 'A') { $sql = "SELECT * FROM membres WHERE nationalite = 'Allemande' ORDER BY nom, prenom"; } else if ($choix == 'F') { $sql = "SELECT * FROM membres WHERE nationalite = 'Française' ORDER BY nom, prenom"; } else { $sql = "SELECT * FROM membres ORDER BY nom, prenom"; } try { $requete = $cnx->prepare($sql); $requete->execute(); $arr_membres = $requete->fetchAll();// on stocke le resultat de la requete dans un array } catch(Exception $e){ // en cas d'erreur dans la requete: echo " Erreur ! ".$e->getMessage(); } if(!empty($arr_membres)){ // on s'assure que la variable n'est pas vide echo '<table border=1 style="text-align:left;width:100%;">'; echo '<tr style="text-align:center;"><td style="width:15em;">NOM</td><td style="width:8em;">PRENOM</td><td style="width:8em;">TELEPHONE</td><td style="width:20em;">ADRESSE INTERNET</td></TR>'; foreach($arr_membres as $M){ // on boucle dessus à l'aide d'un foreach echo '<tr>'; ?> <td><a href="index.php?page=comodmember&id=<?php echo $M['id'];?>&prenom=<?php echo $M['prenom'];?>"><?php echo $M['nom'];?></a></td> <td><?php echo $M['prenom'];?></td> <td><?php echo $M['telephone'];?></td><td><?php echo $M['mail'];?></td></tr> <?php } echo '</table>'; } } ?> </p> <?php echo $message; echo '<br />'; if (empty($message)){ echo 'Nombre total de membres : '. $nombre .'<br />'; } ?><br /> </FORM> </div> <?php if (!empty($id)){ echo '<div style="">'; echo $id .' '.$prenom; } echo '</div>'; ?>
je joins 3 copies d'écran
sur la 1ère copie c'est l'écran en ayant cliqué sur le bouton radio " Français "
sur la 2 è copie c'est l'écran après avoir cliqué sur "afficher"
sur la 3 è copie c'est l'écran après avoir cliqué sur le nom dans le tableau. Je récupère l'id et le nom mais le bouton radio "Français" n'est plus validé donc le tableau ne s'affiche plus !!
A voir également:
- Récupérer valeur bouton radio javascript
- Recuperer message whatsapp supprimé - Guide
- Radio française - Télécharger - Médias et Actualité
- Récupérer mon compte facebook désactivé - Guide
- Comment récupérer un compte facebook piraté - Guide
- Comment recuperer une video sur youtube - Guide
6 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour, cela se fait en utilisant l'attribut "checked" du bouton. as-tu essayé simplement
echo 'checked';?
Bonjour,
Merci pour la réponse.
sur la ligne du lien ?
Merci pour la réponse.
sur la ligne du lien ?
<td><a href="index.php?page=comodmember&id=<?php echo $M['id'];?>&prenom=<?php echo $M['prenom'];?>"><?php echo $M['nom'];?></a></td>
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
pour mémoriser ce genre d'information, je suggère d'utiliser les sessions.
cela se fait en ajoutant
ensuite, tu peux ajouter une ligne
après la ligne 21, celle avec la seconde accolade fermante, ajoute
ensuite, dans les lignes 48 à 50, remplace
cela se fait en ajoutant
session_start();tout au début du code php (la ligne avant
include).
ensuite, tu peux ajouter une ligne
$_SESSION['choix']=$choix;après la ligne 20 (entre les deux lignes avec l'accolade fermante)
après la ligne 21, celle avec la seconde accolade fermante, ajoute
else { if( isset($_SESSION['choix']) ){ $choix=; } }
ensuite, dans les lignes 48 à 50, remplace
$_POST["choix"]par
$choix.
<?php session_start(); require_once "connect.php"; $sessionChoix = !empty($_SESSION['choix']) ? $_SESSION['choix'] : NULL; //prendre la valeur de session si remplie $choix = !empty($_POST['choix']) ? $_POST['choix'] : $sessionChoix; // prendra la valeur de post si elle est remplie, sinon celle de session $_SESSION['choix'] = $choix; $prenom = !empty($_GET['prenom']) ? $_GET['prenom'] : ""; $id = !empty($_GET['id']) ? $_GET['id'] : ""; $nombre = ''; $message = ''; $nom=''; if (isset($_POST['envoyer']) && $choix){ $strWhere = ""; switch($choix){ case "A": $strWhere = "WHERE nationalite = 'Allemande'"; break; case "F": $strWhere = "WHERE nationalite = 'Française'"; break; default: //aucun choix! break; } $sql = "SELECT COUNT(*) AS nb FROM membres " . $strWhere; try{ $req = $cnx->query($sql); $data = $req->fetch(); $nombre = $data['nb']; }catch(Exception $e){ echo "Erreur : " . $e->getMessage(); } } else { $message = "Merci de choisir un affichage !"; } ?>
Bonjour Jordane45,
merci pour la réponse.
il y a un soucis avec session_start(); car je l'ai déjà dans sur la page index.php
certaines pages doivent être réservées aux membres
la session est ignorée sur la page et génère un message d'erreur
merci pour la réponse.
il y a un soucis avec session_start(); car je l'ai déjà dans sur la page index.php
certaines pages doivent être réservées aux membres
<?php session_start(); // déconnexion du site if (isset($_GET['deconnexion'])){ unset($_SESSION['utilisateur']); unset($_SESSION['id_utilisateur']); session_destroy(); }
la session est ignorée sur la page et génère un message d'erreur
je l'ai enlevé mais ça ne change rien. et pourtant si je fais un $_SESSION['choix']; la valeur est bien récupérée mais le tableau ne s'affiche pas.
Est ce que je n'ai pas un problème de code sur les boutons radios ? ou est ce que je dois tester la valeur de $_SESSION['choix'] ?
Est ce que je n'ai pas un problème de code sur les boutons radios ? ou est ce que je dois tester la valeur de $_SESSION['choix'] ?
<input type="radio" name="choix" Value="T" <?php if(isset($_POST["choix"])) { if ($_POST["choix"] == "T"){ echo 'checked = "checked"';}} ?>style="margin-left:5em;">Tous * <span style="margin-left:2em;"><input type="radio" name="choix" Value="A" <?php if(isset($_POST["choix"])) { if ($_POST["choix"] == "A"){ echo 'checked = "checked"';}} ?>>Allemand.e.s</span> <span style="margin-left:2em;"><input type="radio" name="choix" Value="F" <?php if(isset($_POST["choix"])) { if ($_POST["choix"] == "F"){ echo 'checked = "checked"';}} ?>>Français.e.s</span> <span style="margin-left:2em;"><input type="submit" name="envoyer" Value="Afficher" style="cursor:pointer;"></span>
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
je reviens sur mon soucis d'affichage.
je ne comprends pas la ligne 4 !!
$sessionchoix n'est jamais appelé dans le code
lorsque je clique sur "envoyer" je récupère bien les valeurs lignes 8 et 9
j'ai changé les lignes 53 et 54 pour voir la réaction : rien ne change!! toujours pas d'affichage de la liste.
j'ai aussi changé la ligne 61. pas de changement
la ligne 50 est elle correcte ?
Merci d'avance
je ne comprends pas la ligne 4 !!
$sessionChoix = !empty($_SESSION['choix']) ? $_SESSION['choix'] : NULL;
$sessionchoix n'est jamais appelé dans le code
lorsque je clique sur "envoyer" je récupère bien les valeurs lignes 8 et 9
j'ai changé les lignes 53 et 54 pour voir la réaction : rien ne change!! toujours pas d'affichage de la liste.
j'ai aussi changé la ligne 61. pas de changement
la ligne 50 est elle correcte ?
<?php require_once "connect.php"; $sessionChoix = !empty($_SESSION['choix']) ? $_SESSION['choix'] : NULL; //prendre la valeur de session si remplie $choix = !empty($_POST['choix']) ? $_POST['choix'] : $sessionChoix; // prendra la valeur de post si elle est remplie, sinon celle de session $_SESSION['choix'] = $choix; echo $_SESSION['choix']; echo $choix; $prenom = !empty($_GET['prenom']) ? $_GET['prenom'] : ""; $id = !empty($_GET['id']) ? $_GET['id'] : ""; $nombre = ''; $message = ''; $nom=''; if (isset($_POST['envoyer']) && $choix){ $strWhere = ""; switch($choix){ case "A": $strWhere = "WHERE nationalite = 'Allemande'"; break; case "F": $strWhere = "WHERE nationalite = 'Française'"; break; default: //aucun choix! break; } $sql = "SELECT COUNT(*) AS nb FROM membres " . $strWhere; try{ $req = $cnx->query($sql); $data = $req->fetch(); $nombre = $data['nb']; }catch(Exception $e){ echo "Erreur : " . $e->getMessage(); } } else { $message = "Merci de choisir un affichage !"; } ?> <link rel="stylesheet" type="text/css" href="css/style_connexion.css" /> <div style="text-align:center;margin-left:auto;margin-right:auto;background-color:#7FDD4C;width:85%;box-shadow:0.7em 0.7em 0.7em #3A9D23;"> <p> <FORM name="research" ACTION = "index.php?page=comodmember" METHOD="POST"> <br />Pour modifier les données d'un membre, cliquez sur son nom<br /> <p style="text-align:left;"> Sélectionner la liste des membres à afficher :<br /> <input type="radio" name="choix" Value="T" <?php if($_SESSION["choix"] == "T"){ echo 'checked = "checked"';} ?>style="margin-left:5em;">Tous * <span style="margin-left:2em;"><input type="radio" name="choix" Value="A" <?php if ($choix == "A"){ echo 'checked = "checked"';} ?>>Allemand.e.s</span> <span style="margin-left:2em;"><input type="radio" name="choix" Value="F" <?php if(isset($_POST["choix"])) { if ($_POST["choix"] == "F"){ echo 'checked = "checked"';}} ?>>Français.e.s</span> <span style="margin-left:2em;"><input type="submit" name="envoyer" Value="Afficher" style="cursor:pointer;"></span> <br/> <span style="font-size:0.8em;"> * Affichage par défaut</span></p> <?php // if ((isset($_POST['envoyer'])) AND (!empty($_POST['choix']))){ if ((isset($_POST['envoyer'])) AND (!empty($_SESSION['choix']))){ error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); //préparation de la requête et des variables if ($choix == 'A') { $sql = "SELECT * FROM membres WHERE nationalite = 'Allemande' ORDER BY nom, prenom"; } else if ($choix == 'F') { $sql = "SELECT * FROM membres WHERE nationalite = 'Française' ORDER BY nom, prenom"; } else { $sql = "SELECT * FROM membres ORDER BY nom, prenom"; } try { $requete = $cnx->prepare($sql); $requete->execute(); $arr_membres = $requete->fetchAll();// on stocke le resultat de la requete dans un array } catch(Exception $e){ // en cas d'erreur dans la requete: echo " Erreur ! ".$e->getMessage(); } if(!empty($arr_membres)){ // on s'assure que la variable n'est pas vide echo '<table border=1 style="text-align:left;width:100%;">'; echo '<tr style="text-align:center;"><td style="width:15em;">NOM</td><td style="width:8em;">PRENOM</td><td style="width:8em;">TELEPHONE</td><td style="width:20em;">ADRESSE INTERNET</td></TR>'; foreach($arr_membres as $M){ // on boucle dessus à l'aide d'un foreach echo '<tr>'; ?> <td><a href="index.php?page=comodmember&id=<?php echo $M['id'];?>&prenom=<?php echo $M['prenom'];?>"><?php echo $M['nom'];?></a></td> <td><?php echo $M['prenom'];?></td> <td><?php echo $M['telephone'];?></td><td><?php echo $M['mail'];?></td></tr> <?php } echo '</table>'; } } ?> </p> <?php echo $message; echo '<br />'; if (empty($message)){ echo 'Nombre total de membres : '. $nombre .'<br />'; } ?><br /> </FORM> </div>
Merci d'avance
je ne comprends pas la ligne 4 !!
La Ligne est écrit via l'écriture TERNAIRE
C'est comme une IF
ca revient à écrire :
if(!empty($_SESSION['choix'])){ $sessionChoix = $_SESSION['choix']; }else{ $sessionChoix = NULL; }
$sessionchoix n'est jamais appelé dans le code
Si ! Dans la ligne juste en dessous
$choix = !empty($_POST['choix']) ? $_POST['choix'] : $sessionChoix; // prendra la valeur de post si elle est remplie, sinon celle de session
Par contre... je ne vois pas le démarrage de tes sessions....
Il se trouve dans ton fichier connect.php ?
De plus, tout le code qui se trouve entre tes lignes 60 et 83 sont à supprimer de ton code.... car, si tu regardes bien, c'est déjà traité dans le code que je t'ai donné.
Pour finir,
fais donc des print_r des variable POST et SESSION et montre nous ce que ça donne.
Bonjour,
j'ai fait un print de $_SESSION['choix'] et je récupère bien la valeur cliquée
si je supprime les lignes 60 à 83 je vais avoir un souci car la requête n'est pas la même. la première sert à compter l'autre sert à afficher.
Les nuits portant conseil j'ai trouvé la solution avec votre aide
j'ai changé la ligne 61
pour
et ça marche comme ça
j'ai fait un print de $_SESSION['choix'] et je récupère bien la valeur cliquée
si je supprime les lignes 60 à 83 je vais avoir un souci car la requête n'est pas la même. la première sert à compter l'autre sert à afficher.
Les nuits portant conseil j'ai trouvé la solution avec votre aide
j'ai changé la ligne 61
if ((isset($_POST['envoyer'])) AND (!empty($_SESSION['choix']))){
pour
if (!empty($_SESSION['choix'])){
et ça marche comme ça
Il faut les effacer...
et modifier le code que je t'ai donné par ceci
Pourquoi ? .. car on place le maximum de code PHP ... EN DEHORS du code html ( de préférence au début du fichier).
C'est plus simple à maintenir.
Et puis.. ça évite la répétition dans ton code code.
et modifier le code que je t'ai donné par ceci
if (isset($_POST['envoyer']) && $choix){ $strWhere = ""; switch($choix){ case "A": $strWhere = "WHERE nationalite = 'Allemande'"; break; case "F": $strWhere = "WHERE nationalite = 'Française'"; break; default: //aucun choix! break; } // Pour le nombre $sql = "SELECT COUNT(*) AS nb FROM membres " . $strWhere; try{ $req = $cnx->query($sql); $data = $req->fetch(); $nombre = $data['nb']; }catch(Exception $e){ echo "Erreur : " . $e->getMessage(); } // pour les données $sql = "SELECT * nb FROM membres " . $strWhere; try{ $req = $cnx->query($sql); $arr_membres = $req->fetchAll(); }catch(Exception $e){ echo "Erreur : " . $e->getMessage(); }
Pourquoi ? .. car on place le maximum de code PHP ... EN DEHORS du code html ( de préférence au début du fichier).
C'est plus simple à maintenir.
Et puis.. ça évite la répétition dans ton code code.