HTML <SELECT> selected = '$variable
Résolu/Fermé
zivodul8
Messages postés
229
Date d'inscription
jeudi 19 novembre 2009
Statut
Membre
Dernière intervention
19 mai 2015
-
31 mars 2012 à 15:19
Frouch3 Messages postés 1 Date d'inscription lundi 21 juillet 2014 Statut Membre Dernière intervention 21 juillet 2014 - 21 juil. 2014 à 13:23
Frouch3 Messages postés 1 Date d'inscription lundi 21 juillet 2014 Statut Membre Dernière intervention 21 juillet 2014 - 21 juil. 2014 à 13:23
A voir également:
- Select selected html
- Editeur html - Télécharger - HTML
- Selected file is not a proper bios ✓ - Forum Windows 10
- Espace en html - Astuces et Solutions
- &Nbsp html ✓ - Forum Webmastering
- Br html ✓ - Forum Webmastering
4 réponses
Salut,
Je comprends pas bien l'utilité d'afficher le formulaire une fois qu'il est envoyé. Ceci dit vous pouvez faire comme ceci:
il faut que vous renvoyez la variable 'sélectionnée' dans la page, en get par url rewriting une fois les données du formulaire traitées:
header('location:page_formulaire.php?selection='.$selection);
Au début de la page vous vérifiez que la variable $_GET['selection'] existe:
Dans les balises option il suffit de rajouter un test voire une fonction:
PAreil pour les autres balises option.
Je comprends pas bien l'utilité d'afficher le formulaire une fois qu'il est envoyé. Ceci dit vous pouvez faire comme ceci:
il faut que vous renvoyez la variable 'sélectionnée' dans la page, en get par url rewriting une fois les données du formulaire traitées:
header('location:page_formulaire.php?selection='.$selection);
Au début de la page vous vérifiez que la variable $_GET['selection'] existe:
if(isset($_GET['selection']){ $selection=$_GET['selection']; }else{ // sinon on lui donnes la valeur par défaut $selection=SELECTION; }
Dans les balises option il suffit de rajouter un test voire une fonction:
function indiquer_selected($option,$valeur){ if ($option==$valeur){ echo " SELECTED='SELECTED'"; } } <option value='Date desc' <?php indiquer_selected('Date desc',$selection) ?>>Date décroissante</option> <option value='Date'<?php indiquer_selected('Date',$selection) ?>>Date croissante</option>
PAreil pour les autres balises option.
zivodul8
Messages postés
229
Date d'inscription
jeudi 19 novembre 2009
Statut
Membre
Dernière intervention
19 mai 2015
22
1 avril 2012 à 12:21
1 avril 2012 à 12:21
Je n'ai pas compris grand chose :/
Je realise un site de petites annonces, et lors de l'affichage je veux que l'utilisateur puisse choisir le type d'annonce qu'il souhaite voir et dans quel ordre (prix, date...). Je n'ai pas reussi a le faire dynamiquement (j'ai essaye avec du Javascript mais sans succes) alors j'ai opte pour un formulaire. Mais une fois le filtre fait ainsi que le tri, je veux qu'on puisse les voir dans le SELECT. C'est peut etre un peu plus clair maintenant.
Je comprend pas l'utilisation d'une fonction, comment savoir quelle est la valeur de l'option! L'utilisation du GET n'est pas indispensable, puisque je l'aurais recupere en POST.
N'y a t il pas une facon plus simple?
Je realise un site de petites annonces, et lors de l'affichage je veux que l'utilisateur puisse choisir le type d'annonce qu'il souhaite voir et dans quel ordre (prix, date...). Je n'ai pas reussi a le faire dynamiquement (j'ai essaye avec du Javascript mais sans succes) alors j'ai opte pour un formulaire. Mais une fois le filtre fait ainsi que le tri, je veux qu'on puisse les voir dans le SELECT. C'est peut etre un peu plus clair maintenant.
Je comprend pas l'utilisation d'une fonction, comment savoir quelle est la valeur de l'option! L'utilisation du GET n'est pas indispensable, puisque je l'aurais recupere en POST.
N'y a t il pas une facon plus simple?
AssassinTourist
Messages postés
5710
Date d'inscription
lundi 16 janvier 2012
Statut
Contributeur
Dernière intervention
29 février 2024
1 311
2 avril 2012 à 10:32
2 avril 2012 à 10:32
Bonjour,
Et la solution de Locki ?
Et la solution de Locki ?
maka54
Messages postés
698
Date d'inscription
mercredi 8 avril 2009
Statut
Membre
Dernière intervention
4 décembre 2016
80
2 avril 2012 à 10:37
2 avril 2012 à 10:37
<select name="tri"> <option value="Date desc" <?php echo ($_POST["tri"] == "Date desc")?'selected="selected"':''; ?> >Date décroissante</option> <option value="Date" <?php echo ($_POST["tri"] == "Date")?'selected="selected"':''; ?> >Date croissante</option> <option value="Prix desc" <?php echo ($_POST["tri"] == "Prix desc")?'selected="selected"':''; ?> >Prix décroissant</option> <option value="Prix" <?php echo ($_POST["tri"] == "Prix")?'selected="selected"':''; ?> >Prix croissant</option> </select>
j'ai essaye avec du Javascript mais sans succes
Bin non javascript fonctionnes sur le navigateur du client. Ce qui vous intéresse c'est d'obtenir les enregistrements de la base de donnée(c'est cela que veut dire 'dynamiquement') donc il faut que php fasse la 'passerelle' entre le navigateur et la base de données.
Je comprend pas l'utilisation d'une fonction, comment savoir quelle est la valeur de l'option! La fonction que j'ai écrite a des paramètres.
Quand on utilise un outil et qu'on ne sait pas quelque chose il faut se tourner vers la notice:
http://www.php.net/manual/fr/language.functions.php
Mais une fois le filtre fait ainsi que le tri, je veux qu'on puisse les voir dans le SELECT. C'est peut etre un peu plus clair maintenant.
Bin vous avez ma réponse, il y a d'autres . Vous pouvez aussi utiliser les variables de session à la place d'un GET mais je trouves ça un peu plus lourd.
Qu'est ce que vous ne comprenez pas dans:
header('location:page_formulaire.php?selection='.$selection);
ou dans
comment savoir quelle est la valeur de l'option
<option value='Date desc' <?php indiquer_selected('Date desc',$selection) ?>>Date décroissante</option>
<option value='Date'<?php indiquer_selected('Date',$selection) ?>>Date croissante</option>
Après le nom de la fonction entre parenthèses ce sont des paramètres. Donc différents pour chaque option(vous avez vu qu'il correspond à la value de l'option?).
L'utilisation du GET n'est pas indispensable, puisque je l'aurais recupere en POST.
Donc utilisez votre variable directement pas besoin du GET , pas besoin du header.
$selection=mysql_real_escape_string($_POST['tri']);
ou sans la variable $selection(qui sert à la sécurité et plus rapide à écrire que $_POST['tri']):
et sans la fonction:
etc...
Ou la totale avec une fonction(beaucoup plus simple, clair et rapide quand vous aurez compris)
Bin non javascript fonctionnes sur le navigateur du client. Ce qui vous intéresse c'est d'obtenir les enregistrements de la base de donnée(c'est cela que veut dire 'dynamiquement') donc il faut que php fasse la 'passerelle' entre le navigateur et la base de données.
Je comprend pas l'utilisation d'une fonction, comment savoir quelle est la valeur de l'option! La fonction que j'ai écrite a des paramètres.
Quand on utilise un outil et qu'on ne sait pas quelque chose il faut se tourner vers la notice:
http://www.php.net/manual/fr/language.functions.php
Mais une fois le filtre fait ainsi que le tri, je veux qu'on puisse les voir dans le SELECT. C'est peut etre un peu plus clair maintenant.
Bin vous avez ma réponse, il y a d'autres . Vous pouvez aussi utiliser les variables de session à la place d'un GET mais je trouves ça un peu plus lourd.
Qu'est ce que vous ne comprenez pas dans:
header('location:page_formulaire.php?selection='.$selection);
ou dans
comment savoir quelle est la valeur de l'option
<option value='Date desc' <?php indiquer_selected('Date desc',$selection) ?>>Date décroissante</option>
<option value='Date'<?php indiquer_selected('Date',$selection) ?>>Date croissante</option>
Après le nom de la fonction entre parenthèses ce sont des paramètres. Donc différents pour chaque option(vous avez vu qu'il correspond à la value de l'option?).
L'utilisation du GET n'est pas indispensable, puisque je l'aurais recupere en POST.
Donc utilisez votre variable directement pas besoin du GET , pas besoin du header.
$selection=mysql_real_escape_string($_POST['tri']);
ou sans la variable $selection(qui sert à la sécurité et plus rapide à écrire que $_POST['tri']):
et sans la fonction:
<code><option value='Date desc' <?php if($_POST['tri']=='Date desc'){ echo "selected=selected" } ?> Date décroissante</option> //et bien sûr à la suite: <option value='Date' <?php if($_POST['tri']=='Date'){ echo "selected=selected" } ?> Date croissante</option>
etc...
Ou la totale avec une fonction(beaucoup plus simple, clair et rapide quand vous aurez compris)
//-------------déclaration de fonction: function ecrire_balise_option($tri,$texte,$defaut){ echo "<option value='".$tri."'"; if($tri=$defaut){ // affichera la sélection par défaut si la value vaut le critère de tri utilisé echo " selected='selected' "; } echo "'>".$texte."</option>"; } <--!--------------------- utilisation de la fonction --> <select name='tri'> <?php ecrire_balise_option('Date Desc', 'Date décroissante', $_POST['tri']); ecrire_balise_option('Date','Date croissante', $_POST['tri']); ecrire_balise_option('Prix desc','Prix décroissant', $_POST['tri']); ecrire_balise_option('Prix','Prix croissant', $_POST['tri']); /* enfin je ferait encore plus simple pour éviter d'écrire 4 fois la même ligne de la fonction avec des tableaux de variables(array) comme paramétres, mais je veut vous expliquer pas à pas et pas compliqué surtout si vus n'êtes pas familier avec les fonctions-indispensable en programmation*/ ?> </select>
zivodul8
Messages postés
229
Date d'inscription
jeudi 19 novembre 2009
Statut
Membre
Dernière intervention
19 mai 2015
22
2 avril 2012 à 20:10
2 avril 2012 à 20:10
La solution de maka54 marche parfaitement!
Merci beaucoup!
Merci beaucoup!
Frouch3
Messages postés
1
Date d'inscription
lundi 21 juillet 2014
Statut
Membre
Dernière intervention
21 juillet 2014
21 juil. 2014 à 13:23
21 juil. 2014 à 13:23
Atrea, ton idée marche parfaitement, mais dans la déclaration de ta fonction il y a une petite erreur dans la condition :
if($tri==$defaut) * {
echo " selected='selected' ";
}
echo "'>".$texte."</option>";
Sinon ça reste la meilleure réponse que j'ai pu trouver.
En espérant que ça aide même si le post date.
if($tri==$defaut) * {
echo " selected='selected' ";
}
echo "'>".$texte."</option>";
Sinon ça reste la meilleure réponse que j'ai pu trouver.
En espérant que ça aide même si le post date.
zivodul8
Messages postés
229
Date d'inscription
jeudi 19 novembre 2009
Statut
Membre
Dernière intervention
19 mai 2015
22
2 avril 2012 à 20:04
2 avril 2012 à 20:04
ça ne fonctionne pas, la valeur qui s'affiche est systématiquement la dernière de mon SELECT :/
Locki
Messages postés
198
Date d'inscription
mardi 8 décembre 2009
Statut
Membre
Dernière intervention
2 juillet 2013
13
31 mars 2012 à 22:20
31 mars 2012 à 22:20
modifie ton selected par:
selected="<?php if (isset($_POST['tri'])){ echo $_POST['tri'];} ?>"
selected="<?php if (isset($_POST['tri'])){ echo $_POST['tri'];} ?>"
1 avril 2012 à 10:45
Un formulaire de recherche, site d'annonce par exemple
2 avril 2012 à 10:24
2 avril 2012 à 10:32
Il y a un filtre et un tri (croissant ou décroissant, prix ou date).
Quand l'utilisateur choisi par exemple le filtre "Immobilier", une fois qu'il clique sur OK et que la page est rechargée (formulaire envoyé), dans l'affichage du select il y a par défaut "Tous les types" alors qu'il y a bien un filtre d'appliqué sur "Immobilier"! Pas très pratique !