Récupération valeurs listes déroulantes

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 : Récupération valeurs listes déroulantes

par nicolas » 06 déc. 2005, 10:48

Tu dois transformer les lignes du type:
echo '</td><td><SELECT  name=\"biere'.$i.'\" size=\"1\">' ; 
en
echo '</td><td><SELECT  name="biere', $i, '" size="1">' ; 
Il ne faut pas échapper les doubles quotes puisque la chaîne est encadré par des simples quotes!

par Cyrano » 05 déc. 2005, 23:27

As-tu à tout hasard jeté un coup d'oeil à la source html générée de ton formulaire ? Je soupçonne une erreur du genre :
<SELECT name=\"aperitif0\" size=\"1\">
Au lieu de
<SELECT name="aperitif0" size="1">

par speedy67 » 05 déc. 2005, 22:49

le formulaire :
<html>
<form method=post action="essai.php">
<Table border=1 cellspacing=3 cellpading=1 width=80% align="center">
<tr><td>Heure</td><td>Bi&egrave;re</td><td>Ap&eacute;ritif</td><td>Digestif</td><td>Vin</td></tr>
<?php 
function liste($l)
{echo '<OPTION VALUE=0 selected>0</OPTION>' ;
for ($j = 1 ; $j <= $l ; $j++)
{
echo '<OPTION VALUE='.$j.'>'.$j.'</OPTION>';
}
echo '</SELECT>' ;
}
for ($i = 0; $i < 23;$i++)
{
$hreveillon=$i+8 ;
$hnouvelan=$i-15 ;
echo '<tr>' ;
echo '<td>'.($i<15?'31 d&eacute;cembre '.$hreveillon.' heures':'1er janvier '.($hnouvelan==0?' minuit':($hnouvelan==1?$hnouvelan.' heure':$hnouvelan.' heures'))) ;
echo '</td><td><SELECT  name=\"biere'.$i.'\" size=\"1\">' ;
liste (10) ;
echo '</td>' ;
echo '</td><td><SELECT name=\"aperitif'.$i.'\" size=\"1\">' ;
liste (10) ;
echo '</td>' ;
echo '</td><td><SELECT name=\"digestif'.$i.'\" size=\"1\">' ;
liste (10) ;
echo '</td>' ;
echo '</td><td><SELECT name=\"vin'.$i.'\" size=\"1\">' ;
liste (10) ;
echo '</td>' ;
//print '<td><input type=\"integer\" name=\"aperitif'.$i.'\" size=\"2\" /></td>' ;
//print '<td><input type=\"integer\" name=\"digestif'.$i.'\" size=\"2\" /></td>' ;
//print '<td><input type=\"integer\" name=\"vin'.$i.'\" size="2" /></td></tr>' ; 
}
?>
<br>
</table>
<center>
<input type="submit" name="Submit" value="Envoyer">
</center>
</form> 

</html>

son exploitation :<html>
R&eacute;capitulatif de vos consommations :<br>
<?php 
for ($k = 0; $k<23;$k++)
{$biere[$k]=$_POST['biere'.$k] ;
$aperitif[$k]=$_POST['aperitif'.$k] ;
$digestif[$k]=$_POST['digestif'.$k] ;
$vin[$k]=$_POST['vin'.$k] ;
if ($biere[$k]+$aperitif[$k]+$digestif[$k]+$vin[$k]!=0)
{print $k.' heure'.($k>1?'s : ':' : ').($biere[$k]!=0?$biere[$k].' bi&egrave;re'.($biere[$k]>1?'s, ':', '):'').($aperitif[$k]!=0?$aperitif[$k].' ap&eacute;ritif'.($aperitif[$k]>1?'s, ':', '):'').($digestif[$k]!=0?$digestif[$k].' digestif'.($digestif[$k]>1?'s, ':', '):'').($vin[$k]!=0?$vin[$k].' verre'.($vin[$k]>1?'s de vin, ':' de vin, '):'').'<br>';
}
} ?>
</html>

par Cyrano » 05 déc. 2005, 20:30

Fais donc voir le code html d'une des listes déroulantes et la ligne de code PHP de récupération de la valeur sélectionnée.

Récupération valeurs listes déroulantes

par speedy67 » 05 déc. 2005, 20:21

j'ai écrit deux pages html, l'une avec des champs de saisie (method=post) et l'autre où j'affichais ces données. Tout se passait bien. J'ai voulu perfectionner ma première page en remplaçant les champs de saisie par des listes déroulantes. Et là, pas moyen de récupérer les infos dans la deuxième page. D'où ma question : est-ce que l'utilisation des listes déroulantes demande un traitement particulier sur la page de saisie ou est-ce-qu'il faut changer de méthode pour récupérer les données ?

Pour pas recopier tout le code ici, je précise que j'ai en gros remplacé le tag input par select (avec une série de "option"), je n'ai pas touché au tag form qui se trouve avant et après, je continue à faire référence à la variable saisie en me basant sur le nom présent dans name="".

Les pages ne contiennent que du php et du html, pas de java, pas de base sql utilisée.