garder des données en mémoire dans une liste déroulante

garder des données en mémoire dans une liste déroulante - HTML/CSS - Programmation

Marsh Posté le 31-07-2012 à 11:08:28    

Bonjour a tous !
 
Je suis actuellement en train de développer une application pour mon sujet de stage et je bloque, c'est donc pour cela que je viens faire appel à vôtre savoir  
 
Avant de poster mon code, je vous explique le principe.
 
J'ai une liste déroulante (Liste 1) que je remplie avec des données présentes dans ma BDD MySQL ( Les noms des personnes inscrites ). Avec ceci j'ai deux boutons (un bouton "Je suis là" et un autre "Je m'en vais" ). Et pour finir une seconde liste (Liste 2) qui elle est vide. Lorsque je sélectionne un utilisateur dans "Liste 1" et que j'appuie sur "Je suis là", cela me bascule le nom dans la "Liste 2". Et vice versa avec le bouton "Je m'en vais". Tout cela fonctionne bien.
 
Mon problème : Lorsque je refresh ma page, les données que j'ai passé dans ma "Liste 2" ne s'affiche plus et réintègre ma "Liste 1" à mon grand regret  
 
Voici le code :
 
<SCRIPT LANGUAGE="JavaScript">
//Ici le script javascript qui va nous permettre de gérer l'affichage des 2 listes (ListePrésent et ListeInscrit).
function Deplacer(liste1, liste2, id_action) {
     
    if (liste1.options.selectedIndex>=0) {
   
  var id_personne = liste1.options[liste1.options.selectedIndex].value;
 
        i = new Option(liste1.options[liste1.options.selectedIndex].text,liste1.options[liste1.options.selectedIndex].value);
        liste2.options[liste2.options.length] = i;
   
        if ( liste1.options[liste1.options.selectedIndex] != undefined )
   liste1.options[liste1.options.selectedIndex] = null;
   
   
  //alert(liste1.options[liste1.options.selectedIndex].text + " - " + liste1.options[liste1.options.selectedIndex].value);
   
   
  // Requête d'enregistrement par GET
  var xhr_object = null;  
  if ( window.XMLHttpRequest )
   xhr_object = new XMLHttpRequest();  
  else if( window.ActiveXObject )
   xhr_object = new ActiveXObject("Microsoft.XMLHTTP" );  
  else {
   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..." );  
   return;  
  }
   
  if ( xhr_object != null ){ // Vérif si object existe
   
   if ( id_action == 1 ){
    // Quelqu'un arrive
    xhr_object.open("GET", "enregistrerArriveDepart.php?id_personne=" + id_personne + "&action=arrive", false);  
     
   }
   else{
    // Quelqu'un part
    xhr_object.open("GET", "enregistrerArriveDepart.php?id_personne=" + id_personne + "&action=part", false);  
   }
   
   // Pas d'envoie de données par POST
   xhr_object.send(null);  
   
   // Vérif requete GET OK
   if ( xhr_object.readyState == 4 ){
    // Recup réponse HTTP
    reponse = xhr_object.responseText;
    alert(reponse);
   }
  }
    }
 else{
        alert("Vous n'avez rien selectionné" );
    }
     
}
</SCRIPT>
 
<center>
 
<table width="700" border="0" cellspacing="1">
    <tr>
        <td class="tableau_rechercher">
            <b>Rechercher votre nom :</b>
 
            <br><br>
             
        <center>
         <form name="formAjout" method="get" value="text">
             
             <?php $sql = mysql_query("SELECT * FROM personnes ORDER BY nom" );?>
             
             <SELECT name="listeInscrit" type="text" >
             <?php
 
   
                 while( $choixSelection = mysql_fetch_array($sql) )
                 {
                       if( !empty($_GET['id_personne']) && $_GET['id_personne'] == $choixSelection['id_personne'] ){ $selected = "selected='selected'"; } // Si l'id = celui traité on séléctionne l'option.
                       else { $selected = ""; } // sinon on ne séléctione pas cette option.
                        echo "<option value='".$choixSelection['id_personne']."' ".$selected.">".$choixSelection['nom']."&nbsp; ".$choixSelection['prenom']."</option>"; // on affiche l'option.
                 }
             ?>  
                 
 
                 
             </SELECT>
 <td align="center">
             
            <input type="button" value="Je suis là !" onClick="Deplacer(this.form.listeInscrit,this.form.listePresent, 1)" >
 
 <br><br>
         
            <input type="button" value="Je m'en vais !" onClick="Deplacer(this.form.listePresent,this.form.listeInscrit, 2)">
             
 </td>
         
 <td align="center">
            <p><b>Liste des personnes présentes</b></p>
            <SELECT align=top name="listePresent" size=6 style="width:200px"></SELECT>
             
 </td>
             
        </form>
        </center>
     
        </td>
    </tr>
</table>  
</center>

Reply

Marsh Posté le 31-07-2012 à 11:08:28   

Reply

Marsh Posté le 01-08-2012 à 09:04:04    

Ben il faut que tu "stockes" le contenu de la liste 2 (juste les ID), mettons dans un champ caché (ex : une chaîne contenant les ID séparés par des virgules) et quand tu affiche ta page, tu check si ce champ caché n'est pas vide. S'il n'est pas vide, dans la construction de ta liste 1, tu exclus les ID de la liste 2 (via une requête SQL)...
 
Edit : à la vue de ton code, je me dis que ça serait bien que tu apprennes à faire du html (ou xhtml) et du css proprement :/ <center>, faut plus l'utiliser, le javascript intrusif dans le html, c'est pas bien, la mise en page par tableau, on faisait dans les années 90  :kaola: ... Et mélanger le html et le php, c'est pas terrible non plus, tu devrais regarder du côté du design pattern "MVC". ;) Quelque chose aussi me dit que tu auras peut-être des pbs de charset (cf les é dans ton code posté)...


Message édité par rufo le 01-08-2012 à 09:07:55

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 01-08-2012 à 09:17:31    

Oki merci de ta réponse je vais voir ce que je peux faire ! ^^
 
Pour ce qui est du Html et css, je suis entièrement d'accord avec toi, mais en réalité c'est un projet que je reprend d'une ancienne personne qui a été codé entièrement en procédurale sous forme de dizaines de fichiers où tout ce mélange ( bref...) , et étant donné la Deadline que j'ai pour venir a bout du projet, je n'ai pas pu mettre en place de MVC, je fait plus du bricolage qu'autre chose !
 
Merci encore de ta réponse, bonne journée.

Reply

Marsh Posté le 01-08-2012 à 10:20:08    

C'est toujours la plaie de reprendre du vieux code tout moisi :/ Bon courage à toi...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed