Paramètre "selected" d'une liste déroulante : méthode rapide ?

Paramètre "selected" d'une liste déroulante : méthode rapide ? - PHP - Programmation

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
Reply

Marsh Posté le 19-08-2010 à 14:54:36   

Reply

Marsh Posté le 20-08-2010 à 15:58:46    

[:mr oizo bis]

Message cité 1 fois
Message édité par Pascal le nain le 20-08-2010 à 21:23:45
Reply

Marsh Posté le 20-08-2010 à 17:06:52    

aideinfo a écrit :

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 ?


non

Reply

Marsh Posté le 20-08-2010 à 17:35:57    

Pascal le nain a écrit :

En javascript de base, tu n'as pas le choix.
 
Avec jquery tu peux utiliser des sélecteurs assez puissants du genre
 

$('select option:selected').faire_des_trucs();


Au final, je pense que jquery se sert aussi d'une boucle, mais c'est tout de même plus propre pour le développeur  ;)


 
Euh, en fait, c'est plus en PHP (d'où la rubrique ;) ).


---------------
http://www.aideinfo.com/  Whois adresses IP/domaines le plus évolué !!  FAQ Free Mobile
Reply

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 :
  1. <?php
  2. // fill values
  3. $items = array();
  4. while(machin)
  5. {
  6.    $items[$key] = array('value' => $value, 'selected' => '');
  7. }
  8.  
  9. $items[$selected_key]['selected'] = 'selected="selected"';
  10. ?>
  11. <select>
  12. <?php foreach($items as $key => $item) : ?>
  13. <option value="<?php echo $key ?>" <?php echo $item['selected'] ?>><?php echo $item['value'] ?></option>
  14. </select>


 
Enfin bon c'est moche et je suis pas sur que ça réponde à ta question

Reply

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é.


---------------
http://www.aideinfo.com/  Whois adresses IP/domaines le plus évolué !!  FAQ Free Mobile
Reply

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.


Message édité par pop-pan le 22-08-2010 à 21:14:29

---------------
Plop !
Reply

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...


---------------
http://www.aideinfo.com/  Whois adresses IP/domaines le plus évolué !!  FAQ Free Mobile
Reply

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".


Message édité par pop-pan le 22-08-2010 à 23:46:26

---------------
Plop !
Reply

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.


---------------
http://www.aideinfo.com/  Whois adresses IP/domaines le plus évolué !!  FAQ Free Mobile
Reply

Marsh Posté le 23-08-2010 à 15:20:59   

Reply

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.

Reply

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.


Message édité par pop-pan le 23-08-2010 à 16:42:59

---------------
Plop !
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed