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

Signaler
Messages postés
25
Date d'inscription
dimanche 1 avril 2012
Statut
Membre
Dernière intervention
10 avril 2012
-
Messages postés
25
Date d'inscription
dimanche 1 avril 2012
Statut
Membre
Dernière intervention
10 avril 2012
-
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

Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
16
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 !
Messages postés
1309
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
5 juin 2013
12
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é.
Messages postés
25
Date d'inscription
dimanche 1 avril 2012
Statut
Membre
Dernière intervention
10 avril 2012

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 !