Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1424 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°2151699
FloNim
Posté le 31-07-2012 à 11:08:28  profilanswer
 

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>

mood
Publicité
Posté le 31-07-2012 à 11:08:28  profilanswer
 

n°2151834
rufo
Pas me confondre avec Lycos!
Posté le 01-08-2012 à 09:04:04  profilanswer
 

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
n°2151836
FloNim
Posté le 01-08-2012 à 09:17:31  profilanswer
 

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.

n°2151852
rufo
Pas me confondre avec Lycos!
Posté le 01-08-2012 à 10:20:08  profilanswer
 

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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

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

 

Sujets relatifs
Fuite mémoire dans une web applicationtests unitaires & persistence d'objets en mémoire [résolu]
Filtre à partir d'une listeChoix d'une méthode pour extraire des données web
[resolu]Problème : récuperation de données d'un utilisateur facebookProblème de méta données
Importer des données d'un autre classeur suivant une dateC++ Builder 6 - Utiliser une liste déroulante
Effacer les données de la console 
Plus de sujets relatifs à : garder des données en mémoire dans une liste déroulante


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR