Bonsoir à tous ,
je suis bloquer concernant une liste déroulante que je dois faire sans bouton submit , au début , j'arrivais pas à récupére mais en faisant une fonction js qui reload la page j'ai pu récupérer les values par des POST mais ce qui m'embete maintenant ma liste revient tout le temps à l'index 0 alors que je voudrais quel reste à la valeur au moment du POST , Comment je peux faire cela ?

MERCI

<html lang="fr">
<head>
  <meta charset="utf-8">
  <title>Listes de classe</title>

 <?php
    require('connect.php');
    //requete récupération code classe
    $sqlClasse ="select Code , Libelle from classe ";
    $selectClasse = $bdd -> prepare($sqlClasse);
    $selectClasse -> execute();
    $enrsClasse = $selectClasse->fetchall();

  ?>
</head>
<body>
<h1> Listes des classes </h1>

<form method="post" action="#" id="monFormulaire">
<select id="listeClasse" name="lst" onchange="valueChange()" >
  <?php
          foreach($enrsClasse as $enrClasse){
            $classe = $enrClasse['Code'];
            $libelle = $enrClasse['Libelle'];

  ?>
  <option value="<?=$classe?>"><?= $libelle ?></option>
  <?php
    }
  ?>
</select>
</form>
<div id="affichage">
</div>

<script>

function valueChange(){
  var selectElmt = document.getElementById("listeClasse");
  var valeurselectionnee = selectElmt.options[selectElmt.selectedIndex].value;
  var textselectionne = selectElmt.options[selectElmt.selectedIndex].text;

  document.getElementById("affichage").innerHTML = "<h2>le code classe est :" +valeurselectionnee+"</h2>";

}

window.onload = valueChange();
</script>

4 réponses


Bonsoir,

Lors de la boucle qui liste les éléments de la liste, il vous vérifier à chaque itération si c'est égal à la variable $_POST et si oui alors on applique un "selected" à l'option.

seb2913
Auteur

Je vais essayer ca Carouge et je te tiens au courant

seb2913
Auteur

Sa fonctionne Carouge , Merci . J'ai juste un dernier soucis c'est pour le premiere element la liste quand j'arrive sa me met index undifened , normal car ma fonction js s'applique onchange , qu'est ce qu'il faut j'applique pour la premier chargement la page pour que sa récupére la valeur?

<h1> Listes des classes </h1>
<form method="post" action="#" id="monFormulaire">
<select id="listeClasse" name="lst" onchange="valueChange();reloadPage()" onLoad='reloadPage();' >
  <?php
          foreach($enrsClasse as $enrClasse){
            $classe = $enrClasse['Code'];
            $libelle = $enrClasse['Libelle'];

            if($_POST['lst'] == $classe){
?>
  <option value="<?=$classe?>" selected="selected"><?= $libelle ?></option>
<?php
    }else{

?>
<option value="<?=$classe?>"><?= $libelle ?></option>
<?php
    }
}
?>
</select>
</form>
<?php echo($_POST['lst']);?>
<div id="affichage">
</div>

<script>

    function valueChange(){
      var selectElmt = document.getElementById("listeClasse");
      var valeurselectionnee = selectElmt.options[selectElmt.selectedIndex].value;
      var textselectionne = selectElmt.options[selectElmt.selectedIndex].text;

      document.getElementById("affichage").innerHTML = "<h2>le code classe est :" +valeurselectionnee+"</h2>";

    }

    function reloadPage(){
        document.getElementById('monFormulaire').submit();
    }
    window.onload = valueChange();

</script>

Comme vous le dites c'est logique puisqu'elle n'existe pas. Donc si on continue sur ce raisonnement, on ne peux pas tester une variable inexistante....
En conclusion, avant de tester le contenu de la variable, il vous faut tester la présence de la variable.