Recuperer le choix d'une liste dans une variable php

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Recuperer le choix d'une liste dans une variable php

par jduv » 10 nov. 2006, 16:37

OK
Au départ je voulais me simplifier la vie et pouvoir construire un formulaire à partir de différents script qui générent des listes déroulantes depuis des tables postgre. avec mon formulaire dans un frame et le résultat du POST de celui ci dans un autre de la même page

C'est pour cela que je n'ai pas utiliser la version 100% php de cyrano (http://www.phpfrance.com/forums/voir_sujet-4562.php) car je n'ai pas trouvé comment faire.

Quand tu dit :
il te faut soit soumettre le formulaire
du quel parle tu ?

Code : Tout sélectionner

<FORM action ='valid_es_import.php' name="form" target='central' method="POST" enctype="multipart/form-data"> <?php require("listes_site_parcelle.php"); require("../modeles/liste_experimentation.php"); require("../modeles/liste_operateur.php"); ?> <input name="fichier" id="fichier" type="file" size="20" /> <input type="submit" name="ok" id="ok" value="Envoyer" /> </FORM>
ou alors de celui générer en javascript

Et pour ce qui est de :
soit utiliser l'objet httpRequest (ajax)
Alors là je me dit que cela devient plus compliqué que prévu !!
:shock:
Je cherche encore

Merci

par Ryle » 10 nov. 2006, 13:44

Oops.. j'ai zappé le "liées" dans l'énoncé du problème, au temps pour moi :)

Enfin ceci dit, la partie javascript ne concernant que la seconde, c'est peut être pas la peine d'en coller partout sous pretexte que celle là en a besoin :) ...

Garde donc tes select en html (les options du premier générées par php) et ne met en javascript que la mise à jour du second par un choix dans le premier, ça sera plus lisible et toujours ça de moins à faire côté client :)
Tu peux aussi en profiter pour faire du ménage dans tes variables js et pour virer ceci qui ne sert à rien :
onclick=<?php $id_site='document.form.site.value'; ?>
Tu affectes une valeur à $id_site lors de la génération de la page, mais le onClick ne fera rien. Tu ne peux pas renvoyer des valeurs à php de cette manière, il te faut soit soumettre le formulaire soit utiliser l'objet httpRequest (ajax)

par jduv » 10 nov. 2006, 12:47

Bonjour et merci pour la réponse,
Quand tu dit :
Je ne vois pas l'intérêt de générer du javascript qui va générer du html pour faire une page statique, quand on peut générer le html directement
Comment faire en html pour que la seconde liste soit chargées en fonction du choix fait dans la première.?
S'il existe plus simple et sans javascript je suis preneur.
Merci :)

par Ryle » 10 nov. 2006, 12:38

Je ne vois pas l'intérêt de générer du javascript qui va générer du html pour faire une page statique, quand on peut générer le html directement... si c'est juste pour racourcir le code avec des includes, une fonction php ferait tout aussi bien l'affaire m'enfin bon... :)

Pour la récupération de la valeur sélectionnée en php, que le select soit généré en html ou en js, le principe reste le même : si tu envoi le formulaire en post, les valeurs seront dans le tableau $_POST :
if (isSet($_POST["nom_du_champ"]) )
  echo "La valeur du champ est : ".$_POST["nom_du_champ"];

Recuperer le choix d'une liste dans une variable php

par jduv » 10 nov. 2006, 11:28

Bonjour à tous,
J'ai utilisé du javascript pour générer 2 listes liées chargées à partir de tables postgresql.
C'est la première fois que j'utilise autre chose que du php et je ne sais pas comment faire pour récupérer la valeur choisie dans une variable php ??
Et j'ai l'impression que je ne part pas du bon côté.
Merci d'avance

PS : J'ai utilisé des listes générées en javascript pour tenter de réduire la longueur des scripts et pouvoir faire un appel de scripts php dans un form
du type :
<FORM  action ='valid_es_import.php' name="form" target='central' method="POST" enctype="multipart/form-data">
	<?php
		require("listes_site_parcelle.php");
		require("../modeles/liste_experimentation.php");
		require("../modeles/liste_operateur.php");
	?>
<input name="fichier" id="fichier" type="file" size="20"           />
<input type="submit" name="ok" id="ok" value="Envoyer" />
</FORM>
<?//connection à la base

//-- récupération des informations de la premiere table (site)--
$nbsite = 0;

$SQL="SELECT id_site,code_site FROM t_site ";
$exec_site =pg_query($db,$SQL);
while($row_site = pg_fetch_array($exec_site))
{
   $nbsite = $nbsite+1;
      if ($nbsite==1)
   {
      $idsite="'$row_site[id_site]'";
      $valsite="'$row_site[code_site]'";
   }
      else
      {
         $idsite="$idsite,'$row_site[id_site]'";
         $valsite="$valsite,'$row_site[code_site]'";
      }
}
//-- FIN récupération des informations de la premiere table --

//-- récupération des informations de la deuxieme table (parcelle)--
$nbparcelle = 0;
$nbparcelle2 = 0;
$SQL="SELECT * FROM t_parcelle ";
$exec_parcelle =pg_query($db,$SQL);
while($row_parcelle = pg_fetch_array($exec_parcelle))
{
$nbparcelle = $nbparcelle+1;
}

$SQL="SELECT id_parcelle,id_site,num_parcelle FROM t_parcelle ORDER BY num_parcelle";
$exec_parcelle =pg_query($db,$SQL);
while($row_parcelle = pg_fetch_array($exec_parcelle))
{
   $nbparcelle2 = $nbparcelle2+1;
      if ($nbparcelle2==1)
   {
      $idparcelle="'$row_parcelle[id_site]'";
      $valparcelle="'$row_parcelle[num_parcelle]'";
   }
      else
      {
         $idparcelle="$idparcelle,'$row_parcelle[id_site]'";
         $valparcelle="$valparcelle,'$row_parcelle[num_parcelle]'";
      }
}
//-- FIN récupération des informations de la deuxieme table table --
//création des tableau récupérant les données des tables

echo "<form  name='form1' method='get' >
<script language='javascript'>
var test ;
var clear ;
var nb ;
var idsite = new Array($idsite);
var site = new Array($valsite);
var idparcelle = new Array($idparcelle);
var parcelle = new Array($valparcelle);
</script>";


?>

<script language="javascript">
var tes=new Array('Selectionnez un site');

document.write('<select name=site onchange=verifconsite() onclick=<?php $id_site='document.form.site.value'; ?>>');
document.write('<option>Selectionner un site</option>');
for(var i = 0; i < idsite.length; i++)
   {
    document.write('<option value='+ idsite[i] +'>' + site[i] + '</option>');
	
   }
document.write('</select>');
function verifconsite() 
{
nb=0
   for(var i = 0; i < idparcelle.length; i++)
   {
      if (idparcelle[i] == document.form.site.value) 
      {
      nb=nb+1;
         form.parcelle.options[nb] = new Option (parcelle[i]);
      }
      if (idparcelle[i] !== document.form.site.value) 
      {
         form.parcelle.options[nb+1] = null;
      }
   }
nb=0
}

document.write('<select name=parcelle>');
document.write('<option>Selectionner une parcelle</option>');
document.write('</select>');

</script>


<?
echo $idsite;
pg_close();
?