Paramètre "selected" d'une liste déroulante : méthode rapide ? - PHP - Programmation
Marsh Posté le 20-08-2010 à 15:58:46
Marsh Posté le 20-08-2010 à 17:06:52
aideinfo a écrit : Bonjour, |
non
Marsh Posté le 20-08-2010 à 17:35:57
Pascal le nain a écrit : En javascript de base, tu n'as pas le choix.
|
Euh, en fait, c'est plus en PHP (d'où la rubrique ).
Marsh Posté le 20-08-2010 à 19:36:56
Pas sur d'avoir compris... mais bon l'intérêt est très limité
Code :
|
Enfin bon c'est moche et je suis pas sur que ça réponde à ta question
Marsh Posté le 20-08-2010 à 20:11:35
Pas vraiment, puisque là, la liste est générée dynamiquement. Ce que je cherche, c'est pour une liste écrite en dur, qu'à la validation du form, la valeur sélectionnée avant la valid le soit après au lieu d'indiquer en dur une valeur sélectionnée, en évitant d'avoir à faire if valeur=xxx, $select_xxx = "selected", else if valeur=yyy, $select_yyy = "selected", .... Si j'ai 50 valeurs, il faut 50 conditions, alors qu'il y a peut-être un moyen (avec un array ou autre) plus rapide auquel je n'ai pas pensé.
Marsh Posté le 22-08-2010 à 21:09:26
gnii?
si ta liste est ecrite en dur tu la mets dans un array, il est ou le problème?
on code pas les options en dur dans du code, c'est horrible, on mets ca en dbb ou en dans des fichiers de conf. mais bon disons qu'on met ca dans le code, au lieu de
<option value="1">mon option 1 <option>
<option value="2">mon option 2 <option>
<option value="3">mon option 3 <option>
...
tu fais
<?php
$options = array();
$arr['1'] = 'mon option 1' ;
$arr['2'] = 'mon option 2' ;
$arr['3'] = 'mon option 3' ;
...
?>
<select name="monselect">
<?php
foreach ($options as $key=>$value){
echo ('<option value="'. $key .'" '. ((!empty($_POST['monselect']) && $_POST['monselect'] == $key)?'selected':'') .'>'. $value .'</option>');
}
?>
<select>
ou alors passe sur un framework genre cake.
Marsh Posté le 22-08-2010 à 22:28:14
Merci.
Citation : on code pas les options en dur dans du code, c'est horrible |
Parce que c'est horrible le HTML ???? Dans ce cas, mieux vaut ne pas y toucher...
Marsh Posté le 22-08-2010 à 23:44:14
je critique pas le HTML, mais l'usage qui en est fait.
c'est comme mettre les styles dans les balises html et pas dans une css, c'est horrible.
si les options sont utilisées et/ou dépendent d'un traitement PHP on les exploite et défini idéalement via/avec PHP, pour des raisons comme... résoudre ton problème qui n'en est pas un.
si tu etudie les implémentations de i18n et l10n ca va te sauter aux yeux.
sur un site multilangue tu t'amuses pas a mettre les textes dans toutes les langues dans le html et faire des "IF/ELSE".
Marsh Posté le 23-08-2010 à 15:20:59
Mais si la liste n'est utilisée qu'une fois, je ne vois pas l'intérêt d'aller chercher 3/4 lignes dans une table. Le form est en HTML pur (avec un peu de PHP pour la récup des valeurs) car seul le résultat est traité en PHP.
Marsh Posté le 23-08-2010 à 16:28:03
C'est sûr que pour une zone qui ne se répète jamais, aller chercher le code html dans une base, c'est plus de la branlette qu'un choix raisonnable.
Marsh Posté le 23-08-2010 à 16:38:58
c'est bien pour ca que je lui indique de le mettre AU MOINS dans un array ca sera pas parfait mais c'est le minimum syndical pour qu'il manipule ses données.
c'est parce que comme je suis encore plus faineant que lui je prefere passer 5mn a faire un truc et pas galérer apres que passer X heures a essayer de contourner et alambiquer du code.
sinon j'aurais pu lui donner une methode a base de cookie et/ou de lecture URL en javascript avec un form en GET mais la au moins c'est simple, lisible et facile a debogguer.
et on ne stocke pas "le code html" dans la base, on stocke les clefs et valeurs/libéllés.
Marsh Posté le 19-08-2010 à 14:54:36
Bonjour,
Dans un form, j'ai une liste déroulante statique. A la validation du form, je voudrais que la valeur sélectionnée avant validation soit sélectionnée après. Avez-vous une méthode plus rapide que la vérification par une condition de cahque valeur de la liste ?
---------------
http://www.aideinfo.com/ Whois adresses IP/domaines le plus évolué !! FAQ Free Mobile