Selectionner dans un select l'option choisie précédement par l'utilisateur
Résolu
emrh
Messages postés
427
Date d'inscription
Statut
Membre
Dernière intervention
-
emrh Messages postés 427 Date d'inscription Statut Membre Dernière intervention -
emrh Messages postés 427 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
Existe t-il un moyen quand on revient sur un formulaire de ré-afficher ce qui avait
été sélectionné par l'utilisateur dans des select avant l'envoi ?
J'ai essayé avec des variables de session, au retour sur la page formulaire un echo
me donne les bonnes valeurs, donc cette partie fonctionne mais je ne sais pas comment interagir sur les select avec l'option 'selected' !
J'ai essayé avec un truc du genre : ($choix=='infos'?'selected':NULL); mais ça ne va pas !
J'ai essayé aussi avec un if au beau milieu de mon foreach mais du coup le select restait vide !
Et comme un peu de code vaut mieux qu'un long discours :
contrat-ajout1.php
Clients avec un S pour alimenter le select des clients récupérés dans la bdd
Client sans s pour la variable de session et le select
contrat-ajout2.php
Existe t-il un moyen quand on revient sur un formulaire de ré-afficher ce qui avait
été sélectionné par l'utilisateur dans des select avant l'envoi ?
J'ai essayé avec des variables de session, au retour sur la page formulaire un echo
me donne les bonnes valeurs, donc cette partie fonctionne mais je ne sais pas comment interagir sur les select avec l'option 'selected' !
J'ai essayé avec un truc du genre : ($choix=='infos'?'selected':NULL); mais ça ne va pas !
J'ai essayé aussi avec un if au beau milieu de mon foreach mais du coup le select restait vide !
Et comme un peu de code vaut mieux qu'un long discours :
contrat-ajout1.php
Clients avec un S pour alimenter le select des clients récupérés dans la bdd
Client sans s pour la variable de session et le select
<?php // Requêtes pour formulaire : // CLIENTS $requete1 = $bdd->query('SELECT * FROM clients ORDER by nom, prenom'); // on stocke le résultat de la requête dans un Array $clients = $requete1->fetchAll(); // Si la variable client n'existe pas on créé les variables de session : if (empty($_SESSION['client'])){ $client = ''; } // Sinon récupération des variables de session : else{ $client = $_SESSION['client']; echo $client; // RENVOI BIEN L'ID DU CLIENT PRÉCÉDEMMENT SÉLECTIONNÉ } ?> <select name="client" id="client" required=""> <option value="" selected disabled hidden>Sélectionnez un client</option> <?php foreach($clients as $valeur) { echo '<option value="' . $valeur['id_client'] . '">' . $valeur['nom'] . ' ' . $valeur['prenom'] . '</option>'; } ?> </select>
contrat-ajout2.php
if (isset($_POST["chaine_contrat"]) && $_POST["chaine_contrat"]!="") { // Connexion à la base de données : require("connexion.php"); // Récupération des données formulaire : $client = $_POST['client']; //Requête préparée pour l'ajout : $requete = $bdd->prepare('INSERT INTO contrats(id_client) VALUES(:id_client)'); // Exécution de la requête : $requete->execute(array( 'id_client' => $client )); } else { //Le contrat est renseigné SANS prestations ! //récupération PROPRE des variables AVANT de les utiliser $client = !empty($_POST['client']) ? $_POST['client']: NULL; //récupération des saisies formulaire : $_SESSION['client'] = htmlspecialchars($client); // Message d'alerte et retour au formulaire echo "Vous avez oublié les prestations du contrat"; header('Refresh: 3; URL= contrat-ajout1.php'); }
Configuration: Linux / Firefox 94.0
A voir également:
- Selectionner dans un select l'option choisie précédement par l'utilisateur
- Option d'ergonomie - Guide
- Sélectionner du texte dans un pdf - Guide
- Comment selectionner toutes les photos dans google photo - Guide
- Cette option de connexion est désactivée - Forum Ordinateurs
- Changer nom utilisateur windows 10 - Guide
5 réponses
Bonjour,
Une solution possible avec l'opérateur ternaire :
Une solution possible avec l'opérateur ternaire :
foreach($clients as $valeur) { echo '<option value="' . $valeur['id_client'] . '"' . ($client == $valeur['id_client'] ? ' selected' : '') . '>' . $valeur['nom'] . ' ' . $valeur['prenom'] . '</option>'; }
Tu devrais pouvoir utiliser le même principe pour l'input date :
Attention néanmoins au format de la date, l'input html de type date attend une date au format "Y-m-d". Si la variable $date_debut est une chaine de caractères et que la date n'est pas dans le bon format, tu peux utiliser strtotime pour l'afficher avec le bon format :
<input type="date" id="date_debut" name="date_debut" required value="<?php echo !empty($date_debut) ? $date_debut : ''; ?>">
Attention néanmoins au format de la date, l'input html de type date attend une date au format "Y-m-d". Si la variable $date_debut est une chaine de caractères et que la date n'est pas dans le bon format, tu peux utiliser strtotime pour l'afficher avec le bon format :
<input type="date" id="date_debut" name="date_debut" required value="<?php echo !empty($date_debut) ? date("Y-m-d", strtotime($date_debut)) : ''; ?>">
C'est exactement ce que je voulais, MERCI Pitet !!!
Pour les autres champs de mon formulaire qui ne sont pas des select, je ne trouve pas comment faire non plus, j'ai essayé ça :
Pour les autres champs de mon formulaire qui ne sont pas des select, je ne trouve pas comment faire non plus, j'ai essayé ça :
<input type="date" id="date_debut" name="date_debut" required="" <?php echo $date_debut; ?> > <input type="number" id="adultes" name="adultes" required="" value ="<?php ($adultes<>'' ? echo $adultes :0); ?>"><br>
Ça, ça fonctionne ! ;-)
Mais pas trouvé pour la date !
<input type="number" id="adultes" name="adultes" required="" value ="<?php echo($adultes <>'' ? $adultes :0); ?>"><br>
Mais pas trouvé pour la date !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Et bien voila, tu viens de régler mon problème, je t'en remercie...
En ce qui concerne la date, je n'ai pas de problème particulier (en production locale
en tous cas), ta première solution fonctionne donc bien :
- L'input avant saisie affiche bien jj/mm/aaaa
- Le clic sur le champ ouvre bien le sélecteur de date (sous Firefox),
- La requête s'effectue avec un $date_debut = $_POST['date_debut'];
- Le type de data dans la bdd est bien date
- Et la récupération dans une variable de session au cas ou le formulaire ne serait pas
renseigné complètement :
$date_debut = !empty($_POST['date_debut']) ? $_POST['date_debut']: NULL;
$_SESSION['date_debut'] = htmlspecialchars($date_debut);
.../...
$date_debut = $_SESSION['date_debut'];
C'est parfait !
En ce qui concerne la date, je n'ai pas de problème particulier (en production locale
en tous cas), ta première solution fonctionne donc bien :
- L'input avant saisie affiche bien jj/mm/aaaa
- Le clic sur le champ ouvre bien le sélecteur de date (sous Firefox),
- La requête s'effectue avec un $date_debut = $_POST['date_debut'];
- Le type de data dans la bdd est bien date
- Et la récupération dans une variable de session au cas ou le formulaire ne serait pas
renseigné complètement :
$date_debut = !empty($_POST['date_debut']) ? $_POST['date_debut']: NULL;
$_SESSION['date_debut'] = htmlspecialchars($date_debut);
.../...
$date_debut = $_SESSION['date_debut'];
C'est parfait !