Conserver valeur liste après click sur bouton

Spanish_ Messages postés 52 Statut Membre -  
Mimiste Messages postés 1159 Statut Membre -
Bonjour,

J'ai actuellement 2 listes déroulantes qui sont liées, une rapatrie les pages de mon site l'autre les chapitres , contenues en base Mysql.

Mon souci est que quand je clique sur 1 page de ma liste et sur un chapitre de ma liste puis sur Confirmer alors cela me remet pour les 2 listes les valeurs de départ.

J'ai donc modifier mon code en conséquence, mais j'ai beau l'avoir appliquer aux 2 listes , ça ne marche pas que pour la liste "page", c'est à dire qu'il me conserve uniquement , après validation, la valeur de la page sélectionnée mais pas celle du chapitre.

Où ai-je fais une erreur?

ma page essai.php

Code :
<?php require_once('infos_connexion.php'); ?>
<html>
<head>
<script type="text/javascript">
/**
* Permet d'envoyer des données en GET ou POST en utilisant les XmlHttpRequest
*/
function sendData(param,zone, page)
{
if(document.all)
{
//Internet Explorer
var XhrObj = new ActiveXObject("Microsoft.XMLHTTP") ;
}//fin if
else
{
//Mozilla
var XhrObj = new XMLHttpRequest();
}//fin else

//définition de l'endroit d'affichage:
var content = document.getElementById(zone);

XhrObj.open("POST", page);

//Ok pour la page cible
XhrObj.onreadystatechange = function()
{
if (XhrObj.readyState == 4 && XhrObj.status == 200)
content.innerHTML = XhrObj.responseText ;
}

XhrObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
XhrObj.send(param);
}//fin fonction SendData

</script>
</head>
<body>
<form action="" method="post">
<?php

$i=0; // variable de test
$j=0; // variable pour garder la valeur du premier enregistrement catégorie pour l'affichage

$connexion = mysql_connect($hostname,$username_db,$password_db) or die ("Connexion au serveur impossible");

mysql_select_db($database,$connexion);

// Séléction de tous les enregistrements de la table Catégorie
$rq="Select * from pages order by id_page;";
$result= mysql_query ($rq) or die ("Select impossible");
?>
<H4>Choix de la page</H4>
<select name="cat" OnChange="sendData('id='+this.value,'chapitre','liresc.php')" onKeyUp="sendData('id='+this.value,'chapitre','liresc.php')">
<?php
while ($dt=mysql_fetch_row($result))
{
$selected = (isset($_POST['cat']) and $_POST['cat'] == $dt[0])?'selected="selected"':'';

// Remplir la liste déroulante des catégorie
echo '<option value="'.($dt[0]).'" '.$selected.' >'.($dt[1]).'</option>';
if ($i==0) { $j=$dt[0]; $i=1; } // garder la valeur du premier enregistrement
}

?>
</select>

<div id="chapitre">
<H4>Choix du chapitre</H4>
<select size='1' name='souscat'>
<?php
$rq="Select * from chapitres where id_page=".$j." order by id_chapitre;";
$result= mysql_query ($rq) or die ("Select impossible");
// $i = initialise le variable i
$i=0;
while ($dt=mysql_fetch_row($result))
{
$selected = (isset($_POST['souscat']) and $_POST['souscat'] == $dt[0])?'selected="selected"':''; echo '<option value="'.($dt[0]).'" '.$selected.' >'.($dt[3]).'</option><br>';
} ?>

</select>
<input type="submit" value="confirmer" />
</div>
</form>

</body>
</html>


ma page liresc.php:


Code :
<?php require_once('infos_connexion.php'); ?>

<?php
header('Content-type: text') ; // on déclare ce qui va être afficher

// test des POST emis
if(isset($_POST['id']) && !empty($_POST['id']) ){

$connexion = mysql_connect($hostname_db,$username_db,$password_db) or die ("Connexion au serveur impossible");
mysql_select_db($database,$connexion);
$rq="Select * from chapitres where id_page=".$_POST['id']." order by id_page;";
$result= mysql_query ($rq) or die ("Select impossible");
// $i = initialise le variable i
$i=0;
if (mysql_num_rows($result)>0)
{
echo '<H4>Choix du chapitre</H4><select size="1" name="souscat" >';
}
else
{
echo utf8_encode("Pas de chapitre disponible");
}
while ($dt=mysql_fetch_row($result))
{
$selected = (isset($_POST['souscat']) and $_POST['souscat'] == $dt[0])?'selected="selected"':''; echo '<option value="'.utf8_encode($dt[0]).'" '.$selected.'>'.utf8_encode($dt[3]).'</option><br>';

}
}
echo "</select><br><p><input type='submit' name='Submit' value='Confirmer'></p>";
?>

Merci d'avance
A voir également:

1 réponse

Mimiste Messages postés 1159 Statut Membre 206
 
salut,

essai de mettre juste selected pour selectionner une option

<option value="truc" selected>chose</option>

Si sa ne marche pas, il faudrai faire un echo de ta variable $selected pour voir ce qu'elle contient reelement
-1