Page 1 sur 1
Récupération valeurs listes déroulantes
Posté : 05 déc. 2005, 20:21
par speedy67
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.
Posté : 05 déc. 2005, 20:30
par Cyrano
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.
Posté : 05 déc. 2005, 22:49
par speedy67
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ère</td><td>Apé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é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é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ère'.($biere[$k]>1?'s, ':', '):'').($aperitif[$k]!=0?$aperitif[$k].' apé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>
Posté : 05 déc. 2005, 23:27
par Cyrano
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">
Posté : 06 déc. 2005, 10:48
par nicolas
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!