Probleme de<select> et retour automatique à la premiere option

xpl0ze Messages postés 26 Date d'inscription dimanche 1 avril 2012 Statut Membre Dernière intervention 18 février 2024 - 4 févr. 2012 à 13:25
xpl0ze Messages postés 26 Date d'inscription dimanche 1 avril 2012 Statut Membre Dernière intervention 18 février 2024 - 5 févr. 2012 à 12:09
Bonjour à tous !
Voila c'est mon premier topic sur ce forum et j'espere que vous pourrez me venir en aide :D

Alors mon problème est le suivant. J'ai crée une liste déroulante sous forme de <select><option>, qui va chercher les values et le contenu des options dans une base de donnée Mysql. Cette partie la se fait sans soucis. Le problème vient après : lorsque j'envoi mon formulaire, celui-ci s’exécute sur la même page avec un système de :
if (isset[$_POST['envoyer'])

; cela faisant que la page se recharge . Et lorsque cette page se recharge, la liste déroulante affiche à nouveau la première option de la liste, même si la bonne value est récupérée. Je voudrais que la liste déroulante reste sur l'option sélectionnée avant la validation de la page. Voila le code en question :
<form method="POST" action="">
<select name="num_cli">
<?php
while ($ligne=mysql_fetch_array($result))
{
?>
<option value="<?php echo $ligne['no_cli'];?>"><?php echo $ligne['nom_cli'];echo (' ');echo $ligne['prenom_cli'];?></option>
<?php } ?>
</select>

</form>
<?php 
if (isset($_POST['send']))
{
$no_cli=$_POST['num_cli'];
$sql2="SELECT DISTINCT no_facture FROM commande_facture WHERE num_cli='$no_cli'";
$result2=mysql_query($sql2) or die ('fail');
?>
factures :
<form method ="POST" action="">
<select name="no_facture">
<?php
while ($ligne2=mysql_fetch_array($result2))
{
?>
<option value="<?php echo $ligne2['no_facture'];?>"><?php echo $ligne2['no_facture'];?></option>
<?php
}
?>
</select>
<?php
}
?>


Merci d'avance pour tous vos commentaires !

PS : désolé pour le html / php , je débute et je prefere séparer les deux langage bien clairement.

3 réponses

cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
4 févr. 2012 à 20:46
bonsoir
essaie un truc du genre

<?php
echo $select = isset($_POST['num_cli']) ? (int)$_POST['num_cli'] : null;

mysql_connect('localhost','root','');
mysql_select_db('a');
$sql="SELECT * FROM clients";
$result=mysql_query($sql);

?>

<form method="POST" action="">


<select name="num_cli">
<?php


$a=$b=null;

while ($ligne=mysql_fetch_array($result))
{


if($select===$ligne['num_cli']){

$a='<option value="'.$ligne['num_cli'].'">'.$ligne['nom_cli'].' '.$ligne['prenom_cli'].'</option>';


 }else {

$b.='<option value="'.$ligne['num_cli'].'">'.$ligne['nom_cli'].' '.$ligne['prenom_cli'].'</option>';

}
} 


echo $a.$b;

?>
</select>

</form>


<?php 
if (isset($_POST['send']))
{



$no_cli=(int)$_POST['num_cli'];

/**/
$sql2="SELECT DISTINCT no_facture FROM commande_facture WHERE num_cli='$no_cli'";
$result2=mysql_query($sql2) or die ('fail');
?>
factures :
<form method ="POST" action="">
<select name="no_facture">
<?php
while ($ligne2=mysql_fetch_array($result2))
{
?>
<option value="<?php echo $ligne2['no_facture'];?>"><?php echo $ligne2['no_facture'];?></option>
<?php
}
?>
</select>
</form>
<?php
}

?>


Bonne programmation !
0
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
4 févr. 2012 à 21:33
Salut,

Au lieux de dupliquer ta valeur comme l'intique cod57, il suffis simplement d'ajouter l'attribut selected (avec la valeur selected) à l'option qui doit être sélectionnée par défaut. Exemple :
<select name="foo">
   <option value="bar">Bar</option>
   <option value="baz">Baz</option>
   <option value="qux" selected="selected">Qux</option>
   <option value="corge">Corge</option>
</select>

Et par défaut Qux est sélectionné.
0
xpl0ze Messages postés 26 Date d'inscription dimanche 1 avril 2012 Statut Membre Dernière intervention 18 février 2024
5 févr. 2012 à 12:09
Merci cod57 , c'est effectivement ce que je cherchais ! TychoBrahe, je ne cherchais pas à définir une valeur par défaut, mais à faire suivre une option déjà sélectionné dans une page précédente !

Merci à tous les deux !
0
Rejoignez-nous