Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2830 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Taitement d'une liste de selection

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Taitement d'une liste de selection

n°1177280
BROU
Posté le 16-08-2005 à 17:32:41  profilanswer
 

bonjour,  
Je voudrais pouvoir accéder aux éléments d'une liste de sélection afin de faire un traitement. mon script est le suivant:  
 
<form name="frm" action='<?php echo $_SERVER['PHP_SELF']; ?>' method="post">  
 <select name="base">  
 <option value="1">Année1  
 <option value="2">Année2  
 <option value="3">Année3  
 <option value="4">Année4  
 </select>  
 
</form>  
<?  
 //Accès aux éléments d'une liste de sélection  
if($selecteur=="1" )
 //traitement1
else
 //traitement2
 
?>  

mood
Publicité
Posté le 16-08-2005 à 17:32:41  profilanswer
 

n°1177283
dotfx
Posté le 16-08-2005 à 17:36:49  profilanswer
 

$_POST te permet dans ton cas (method="post" ) récupérer la variable $_POST['base']
 
Donc:
 

Code :
  1. $selecteur = isset($_POST['base']) ? $_POST['base'] : 0;


 
 
 


---------------
www.renderfarm.online
n°1177296
BROU
Posté le 16-08-2005 à 17:48:21  profilanswer
 

J'ai exécuté le code suivant et il affiche toujour 0.
J'aurais voulu qu'il affiche l'élément sélectionné.
 
<?
 function message($v)
  {echo 'Bonjour ' . $v;
   
}
?>
 
<form name="frm" action='<?php echo $_SERVER['PHP_SELF']; ?>' method="post">
 <select name="base">
 <option value="1">Année1
 <option value="2">Année2
 <option value="3">Année3
 <option value="4">Année4
 </select>
 
</form>
<?
 $selecteur = isset($_POST['base']) ? $_POST['base'] : 0;
 echo $selecteur;
?>

n°1177304
dotfx
Posté le 16-08-2005 à 17:56:42  profilanswer
 

Normal, un formulaire est fait pour renvoyer les données à une nouvelle page (dans ton cas la même page que le formulaire, PHP_SELF) une fois le bouton "submit" déclenché (qui n'est d'ailleurs pas présent dans ton exemple).
 
Il faut donc analyser le contenu du formulaire dans une seconde phase, les résultats ne peuvent pas apparaître au même moment que le formulaire vide apparaît, puisque l'utilisateur n'a encore rien choisi... Ce n'est pas propre au language PHP ou HTML, c'est de la simple logique. Un caissier ne va pas rendre la monnaie à l'acheteur alors qu'il n'a même pas encore payé... Désolé pour l'exemple "neuneu" mais c'est ce que j'ai trouvé de mieux pour illustrer le problème :)
 
Rajoutes donc un <input type="submit" value="Envoyer le formulaire" /> qui sera le bouton qui va renvoyer les données.
Tu peux donc maintenant choisir l'Année, puis appuyer sur le bouton, et ensuite tu pourras analyser les données avec $_POST['base']


Message édité par dotfx le 16-08-2005 à 18:27:52

---------------
www.renderfarm.online
n°1177628
BROU
Posté le 17-08-2005 à 10:25:50  profilanswer
 

Merci, la solution suivante marche
<form name="frm" action='<?php echo $_SERVER['PHP_SELF']; ?>' method="post">
 <select name="base">
 <option value="1">Année1
 <option value="2">Année2
 <option value="3">Année3
 <option value="4">Année4
 </select>
<input type="submit" value="Envoyer le formulaire" />
</form>
<?
 $selecteur = isset($_POST['base']) ? $_POST['base'] : 0;
 echo $selecteur;
?>
 
est t-il possible de ne pas utiliser de bouton submit mais l'événement onChande de la balise <select name="base" onChange='...'>

n°1177632
dotfx
Posté le 17-08-2005 à 10:28:17  profilanswer
 

Oui:
 
onChange="this.form.submit"
 
Dans ce cas tu n'as plus besoin de l'input submit.


---------------
www.renderfarm.online
n°1177653
BROU
Posté le 17-08-2005 à 10:42:13  profilanswer
 

Merci de ton aide ceci marche.
 
<form name="frm" action='<?php echo $_SERVER['PHP_SELF']; ?>' method="post">
 <select name="base" onChange="this.form.submit();">
 <option value="0">Votre choix
 <option value="1">Année1
 <option value="2">Année2
 <option value="3">Année3
 <option value="4">Année4
 </select>
</form>
<?
 $selecteur = isset($_POST['base']) ? $_POST['base'] : 0;
 echo $selecteur;
?>

n°1177683
BROU
Posté le 17-08-2005 à 11:05:05  profilanswer
 

Au lieu d'appeler la methode submit comme suit,
 
<form name="frm" action='<?php echo $_SERVER['PHP_SELF']; ?>' method="post">  
 <select name="base" onChange="this.form.submit();">  
 <option value="0">Votre choix  
 <option value="1">Année1  
 <option value="2">Année2  
 <option value="3">Année3  
 <option value="4">Année4  
 </select>  
</form>  
<?  
 $selecteur = isset($_POST['base']) ? $_POST['base'] : 0;  
 echo $selecteur;  
?>
 
j'aimerait pouvoir l'appeler dans une fonction afin de pouvoir faire d'autres traitement. J'ai testé l'exemple suivant mais cela ne marche pas.
 
<?
 function message()
  {this.form.submit();
   $selecteur = isset($_POST['base']) ? $_POST['base'] : 0;
   echo $selecteur;
   
 }
?>
 
<form name="frm" action='<?php echo $_SERVER['PHP_SELF']; ?>' method="post">
 <select name="base" onChange="message();">
 <option value="1">Année1
 <option value="2">Année2
 <option value="3">Année3
 <option value="4">Année4
 </select>
</form>

n°1177696
dotfx
Posté le 17-08-2005 à 11:11:52  profilanswer
 

mmmm non, tu ne peux pas intégrer PHP et JavaScript dans une même fonction et en attendre un résultat immédiat car:
1) ce sont deux langages différents.
2) PHP s'éxecute côté serveur avant même que l'utilisateur ne fasse quoi que ce soit, puis la page est envoyée à celui-ci.
3) JavaScript s'execute sur la machine du visiteur, puis renvoit à nouveau le formulaire au serveur au moment du changement de la selection dans ton cas.
 
Je pense que tu n'as pas compris le fonctionnement de PHP. Celui-ci ne peut pas agir sur le contenu de la page web une fois chargée, puisque les données ont déjà été traîtés.
Il faut donc une seconde étape comme j'ai déjà dit, où la page sera à nouveau chargée, avec les nouvelles données du formulaire, et là oui PHP pourra évaluer les données, puis renvoyer une nouvelle page avec les résultats.


Message édité par dotfx le 17-08-2005 à 11:16:18

---------------
www.renderfarm.online
n°1177794
BROU
Posté le 17-08-2005 à 12:19:27  profilanswer
 

Pourquoi dans l'exemple suivant la valeur du premier élément de la liste ie la valeur 1 n'est jamais affichée. Comment l'afficher?
 
 
<form name="frm" action='<?php echo $_SERVER['PHP_SELF']; ?>' method="post">  
 <select name="base" onChange="this.form.submit();">  
 <option value="1">Année1  
 <option value="2">Année2  
 <option value="3">Année3  
 <option value="4">Année4  
 </select>  
</form>  
<?  
 $selecteur = isset($_POST['base']) ? $_POST['base'] : 0;  
 echo $selecteur;  
?>  

mood
Publicité
Posté le 17-08-2005 à 12:19:27  profilanswer
 

n°1177799
dotfx
Posté le 17-08-2005 à 12:24:59  profilanswer
 

Même si le code PHP est APRÈS le formulaire dans ton cas, celui-ci est traîté AVANT sur le serveur, c'est comme ça que le PHP marche, donc $selecteur sera toujours égal à 0 la première fois puisque la page n'a pas encore été envoyée au visiteur.
 
$selecteur prendra une valeur quand le visiteur choisira une valeur, et donc AU SECOND envoi de la page.
 
 
Je me repette, PHP interprète tout ce qui se trouve entre les balises <? ?> avant d'envoyer le fichier, donc ça ne changera rien de mettre le code PHP après le formulaire.
Encore une fois, imaginons que ce soit possible, comment veux-tu que PHP puisse connaître la valeur de $selecteur si l'utilisateur n'a encore rien choisi?


---------------
www.renderfarm.online
n°1177959
BROU
Posté le 17-08-2005 à 14:56:19  profilanswer
 

Avant que l'user ne sélectionne un élément de la liste $selecteur = 0. S'il séletionne Année1, c'est toujours 0 qui s'affiche. Par contre, s'il séletionne Année2, 2 s'affiche, Année3 c'est 3, Année4 c'est 4.

n°1177982
dotfx
Posté le 17-08-2005 à 15:27:04  profilanswer
 

mmmmmm étant donné que la première valeur par défaut est Année1, si tu la re-sélectionne le formulaire n'est pas posté: il ne se passe rien puisqu'il n'y a pas eu de changement de valeur.
Il faut donc que tu ajoutes une <option> vide qui sera celle par défaut, par exemple:
 

Code :
  1. <option value="" selected="selected">Choisissez une Année</option>


 
et
 

Code :
  1. onchange="if (this.options[this.selectedIndex].value != '') { this.form.submit(); }"


Message édité par dotfx le 17-08-2005 à 15:29:04

---------------
www.renderfarm.online

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Taitement d'une liste de selection

 

Sujets relatifs
Accès aux éléments d'une liste de sélectionScanner un répertoire et afficher les fichiers dans une liste box
XLM-XSD:liste atrtributs obligatoire+n'importe quel autreboucle selection condition excel
Probleme DBGrid Delphi selection cellule[html] [RESOLU] largeur liste déroulante
liste de navigation[Excel] Selection et total de valeurs
Struts + liste 
Plus de sujets relatifs à : Taitement d'une liste de selection


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR