Bonjour,
C'est la première fois que je poste une question sur ce forum parce que je pense avoir tout essayé avant.
J'essaye depuis une semaine de créer une page en php avec plusieurs listes déroulantes qui s'actualisent au fur et à mesure. Lorsque je fais mon choix dans la première listbox, la 2ème prend bien les valeurs demandées (via une base access et les fonctions odbc_exec...), le choix et bien gardé en mémoire après reload (selected="selected") mais lorsque je choisis une valeur dans la 2ème listbox la première variable est oubliée et donc la seconde aussi.
Voici mon code:
<?php
$produit = isset($_POST['produit'])?$_POST['produit']:null;
$type = isset($_POST['type'])?$_POST['type']:null;
//connexion à une base de données ACCESS
$bd="nom_base"; // identifiant DSN
$user="root"; // login
$password=""; // password
$cnx = odbc_connect( $bd , $user, $password );
if($cnx){
$tablelist = odbc_tables($cnx);
while (odbc_fetch_row($tablelist)) //tant que c'est pas la fin de la table
{
if (odbc_result($tablelist, 3) == "TABLE") // Si indicateur TABLE
echo odbc_result($tablelist, 3); // Affiche nom de la TABLE
}
$valeur= odbc_exec( $cnx, "select distinct produit FROM T_Produits" ); //requête
?>
<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="list_prod">
<select name="produit" id="produit" onchange="document.forms['list_prod'].submit();">
<option value="-1">- - - Choisissez un produit- - -</option>
<?php
$i=1;
while(odbc_fetch_row($valeur)) //tant que c'est pas la fin de la table
{
if(isset($produit) && $produit == $i) {
$select_prod = odbc_result( $valeur, 1 );
echo '<option value='.$i.' selected="selected">'.odbc_result( $valeur, 1 ).'</option>'; }
else {
echo '<option value='.$i.'>'.odbc_result( $valeur, 1 ).'</option>'; }
$i++;
}
echo '</select>';
echo '</form>';
?>
<script>
function soumettre() {
document.forms['list_type'].submit();
document.forms['list_prod'].submit();
}
</script>
<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="list_type">
<select name="type" id="type" onchange="javascript:soumettre()">
<option value="-1">- - - Choisissez une qualite- - -</option>
<?php
$j=1;
if (isset($select_prod)) {
$valeur2 = odbc_exec( $cnx, "select distinct Qualite FROM T_Produits WHERE Produit ='$select_prod'" ); //requête
while(odbc_fetch_row($valeur2)) //tant que c'est pas la fin de la table
{
if(isset($type) && $type == $j) {
$select_type = odbc_result( $valeur2, 1 );
echo '<option value='.$j.' selected="selected">'.odbc_result( $valeur2, 1 ).'</option>'; }
else {
echo '<option value='.$j.'>'.odbc_result( $valeur2, 1 ).'</option>'; }
$j++;
}
}
echo '</select>';
echo '</form>';
}
else{
echo "Impossible de se connecter à la base de données";
}
odbc_close( $cnx); // ferme la connexion
?>
Quelqu'un aurait il une idée de la solution? Pour info ma fonction soumettre() ne soumet que la deuxième ligne à chaque fois (je pense que le probleme vient de la mais je peux me tromper)
Merci de votre aide