Mise à jour d'une liste déroulante [Résolu]

Messages postés
106
Date d'inscription
vendredi 17 juin 2005
Statut
Membre
Dernière intervention
23 octobre 2007
- - Dernière réponse :  cs_mima1 - 14 févr. 2010 à 13:00
Voila j'ai une page avec un formulaire et une liste déroulante de
fonctions, si la fonction voulu n'est pas présente on peut en ajouter
une en cliquant sur le bouton à coté qui ouvre un pop-up pour ajouter
la fonction voulue.

Tout fonctionne bien mais j'aimerai mettre à jour seulement la liste déroulante et pas toute la page !

que faut-il changer à opener.location.reload(true) ??

merci !
Afficher la suite 

20/25 réponses

Meilleure réponse
Messages postés
1267
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
29 juin 2010
1
3
Merci
Voila, là ca marche. C'était simplement un probleme avec IE (expliquer plus bas dans les commentaires)

Index
<html>
 <head>
  <script>
   function doc(nom)  {
     if (document.layers)  { // NS 4 et <
       return document[nom];
     }
     if (document.all)  { // IE
       return document.all[nom];
     }
     if (document.getElementById)  {
       return document.getElementById(nom);
     }
    
   }

   function ajouter(nom, value, text)  {
    formulaire = doc(nom);
    // Recuperation des informations
    nb = formulaire.length;
    // On compte le nombre d'<option />
    nouvel_element = new Option(text, value, false, true);
    // Creation
    // new Option(text, value, DefaultSelected, Selected);
    // * text = texte affiché dans la liste
    // * value = valeur de la liste à transmettre (facultatif)
    // * defaultSelected = transmettre true quand l'élément doit être l'élément sélectionné par défaut, sinon false (facultatif)
    // * Selected = transmettre true quand l'élément doit être sélectionné (facultatif)
    // /!\ Opera 5.12 n'interprète pas les deux derniers paramètres, Netscape 6.1 n'interprète pas le dernier.
    formulaire.options[nb] = nouvel_element;
    // Ajout
   }
  </script>
 </head>
 

  <select name="nom" id="nom">
    <option value="A"> - A</option>
  </select>
 
  [h.html Open]

 
</html>

Popup
<html>
 <head>
  <script type="text/javascript">
   function doc(nom)  {
     if (document.layers)  { // NS 4 et <
       return document[nom];
     }
     if (document.all)  { // IE
       return document.all[nom];
     }
     if (document.getElementById)  {
       return document.getElementById(nom);
     }
    
   }

   function valid()  {
     value = doc('value').value;
     text = doc('text').value;
     opener.ajouter('nom', value, text);
   }
 
  </script>
 </head>
 

  <form action="" method="POST" onsubmit="valid();">
  
   
   

   
   

   
    <!-- Sans oublier le code d'insertion (Par exemple dans la base de donnée) -->
  

  </form>
 
</html>
<hr />Si ma reponse te convient, merci de l'accepter ! 

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 189 internautes nous ont dit merci ce mois-ci

Commenter la réponse de JoJo738
Messages postés
1267
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
29 juin 2010
1
0
Merci
Salut,
Tu dois ajouter dinamiquement une option dans ta liste select (J'ai plus le code, mais ca se trouve facilement sur internet :D) via ta popup

Je vais voir sur internet, j'ai aussi besoin de se code ^^

<hr />Si ma reponse te convient, merci de l'accepter !
Commenter la réponse de JoJo738
Messages postés
96
Date d'inscription
lundi 24 novembre 2003
Statut
Membre
Dernière intervention
24 avril 2007
1
0
Merci
Bonjour,

Si tu veux juste recharger la liste déroulante, c'est du Javascript et non du PHP :)

Demande plutôt sur www.javascriptfr.com

bye
Commenter la réponse de pcgpegase
Messages postés
106
Date d'inscription
vendredi 17 juin 2005
Statut
Membre
Dernière intervention
23 octobre 2007
0
Merci
oui exact jvai mettre ce message sur javascriptfr !
Commenter la réponse de ahcorad
Messages postés
1267
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
29 juin 2010
1
0
Merci
je viens de faire ca :

Fenetre mere :
<html>
 <head>
 </head>
 

  <select name= "nom" id="nom">
    <option value="A"> - A</option>
  </select>
 
  [popup.php Open]

 
</html>

Popup :

<html>
 <head>
  <script type="text/javascript">
    function ajouter(name, value, text){
    
     formulaire = opener.document.getElementById(name);
     nb = formulaire.length;
     nouvel_element = new Option(text, value, false, false);
     formulaire.options[nb] = nouvel_element;
    }
   
    function valid()  {
      value = document.getElementById('value').value;
      text = document.getElementById('text').value;
      ajouter( 'nom' , value, text);
    }
   
  </script>
 </head>
 

  <form action ="" method="POST" onsubmit="valid();">
  
   
   

   
   

   
    <!-- Sans oublier le code d'insertion (Par exemple dans la base de donnée) -->
  

  </form>
 
 
</html>

<hr />Si ma reponse te convient, merci de l'accepter !
Commenter la réponse de JoJo738
Messages postés
106
Date d'inscription
vendredi 17 juin 2005
Statut
Membre
Dernière intervention
23 octobre 2007
0
Merci
Ok merci je vais tester !
ya pas plus simple que ça ! on ne peut pas mettre à jour seulement la liste déroulante ??
Commenter la réponse de ahcorad
Messages postés
106
Date d'inscription
vendredi 17 juin 2005
Statut
Membre
Dernière intervention
23 octobre 2007
0
Merci
tu n'as pas un exemple concret car la je vois pas trop !
Commenter la réponse de ahcorad
Messages postés
1267
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
29 juin 2010
1
0
Merci
Bah, ca recharge que la liste deroulante (Enfin, ajoute)

Sinon, faut voir en Ajax

C'est ca qui ajoute :

formulaire = opener.document.getElementById(name); // On prend le <select /> de la page mere
nb = formulaire.length; // on compte le nombre d'element <option />
nouvel_element = new Option(text, value, false, false); // On crée l'element avec <option value=" value ">text</option>
formulaire.options[nb] = nouvel_element; // On ajoute l'element crée sur l'id nb

<hr />Si ma reponse te convient, merci de l'accepter !
Commenter la réponse de JoJo738
Messages postés
106
Date d'inscription
vendredi 17 juin 2005
Statut
Membre
Dernière intervention
23 octobre 2007
0
Merci
il manque pas quelque chose dans ton code car ça ne met rien à jour !
Commenter la réponse de ahcorad
Messages postés
1267
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
29 juin 2010
1
0
Merci
Bah ... ca marche chez moi ...

Comment met tu ce code ? (Tu peux passer ton code ?)

<hr />Si ma reponse te convient, merci de l'accepter !
Commenter la réponse de JoJo738
Messages postés
106
Date d'inscription
vendredi 17 juin 2005
Statut
Membre
Dernière intervention
23 octobre 2007
0
Merci
ton code ci-dessus ne fonctionne pas !


il faut que je rajoute peut-être la requete insertion sql ?


enfin je vois pas trop comment le personnaliser à mon exemple !
Commenter la réponse de ahcorad
Messages postés
1267
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
29 juin 2010
1
0
Merci
Bah, dans ta popup rajoute le code d'insertion dans la BDD php, mais quand tu valide le formulaire ca ajoute dans le select (Ca marche chez moi)
Sinon, passe ton code à toi

<hr />Si ma reponse te convient, merci de l'accepter !
Commenter la réponse de JoJo738
Messages postés
106
Date d'inscription
vendredi 17 juin 2005
Statut
Membre
Dernière intervention
23 octobre 2007
0
Merci
voila le popup.php je n'est pas modifié le index.htm (il faut peut-etre modifié la liste déroulante en sélectionnnant dans la base de données ???)
<?php require_once('connexion.php'); ?>
<html>
 <head>
  <script type="text/javascript">
    function ajouter(name, value, text){
    
     formulaire = opener.document.getElementById(name);
     nb = formulaire.length;
     nouvel_element = new Option(text, value, false, false);
     formulaire.options[nb] = nouvel_element;
    }
   
    function valid()  {
      value = document.getElementById('value').value;
      text = document.getElementById('text').value;
      ajouter('nom', value, text);
    }
   
  </script>
 </head>
 


  <form action="" method="POST" onsubmit="valid();">
  
   
   

   
   

   
    <!-- Sans oublier le code d'insertion (Par exemple dans la base de donnée) -->
 <?php
  if((isset($_POST['text'])) AND (isset($_POST['value'])))
  {
   $text=trim(ucfirst($_POST['text']));
   $value=$_POST['value'];
   $add = sprintf("INSERT INTO essai (value, text) VALUES ('$value', '$text')");
   $result = mysql_query($add, $connexion) or die(mysql_error());
  }
 ?>
  

  </form>
 
</html>
Commenter la réponse de ahcorad
Messages postés
1267
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
29 juin 2010
1
0
Merci
Lu

<?php require_once 'connexion.php'; ?><html>
 <head>
  <script type= "text/javascript">
    function ajouter(name, value, text){
   
     formulaire = opener.document.getElementById(name);
     nb = formulaire.length;
     nouvel_element = new Option(text, value, false, false);
     formulaire.options[nb] = nouvel_element;
    }
  
    function valid()  {
      value = document.getElementById('value').value;
      text = document.getElementById('text').value;
      ajouter('nom', value, text); // N'oubli pas de modifier le 'nom' en 'Id_de_ton_select' [ <select name ="X" id= " X " >(De la fenetre mere) == > ajouter(' X ', value, text); ]
    }
  
  </script>
 </head>
 

  <form action ="" method="POST" onsubmit="valid();">
  
   
   

   
   

   
    <!-- Sans oublier le code d'insertion (Par exemple dans la base de donnée) -->
 <?php
  if((isset($_POST['text'])) AND (isset($_POST['value'])))  {
    $text  = htmlentities(trim(ucfirst($_POST['text'])));
    $value = htmlentities($_POST['value']);
   
    $add   = 'INSERT INTO SET value="' . $value . '", text="' . $text . '" ';
    $result = mysql_query($add) or die(mysql_error());
  }
 ?>
  

  </form>
 
</html>

<hr />Si ma reponse te convient, merci de l'accepter !
Commenter la réponse de JoJo738
Messages postés
106
Date d'inscription
vendredi 17 juin 2005
Statut
Membre
Dernière intervention
23 octobre 2007
0
Merci
ok mais je dois modifier aussi le index.php
<html>
 <head>
 </head>
 



  <select name="nom" id="nom">
    <option value="A"> - A</option>
  </select>
 
  [popup.php Open]



 
</html>

il ne faut pas mettre à jour la page mère dans le popup ??
Commenter la réponse de ahcorad
Messages postés
1267
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
29 juin 2010
1
0
Merci
Euh ... le popup rafraichi le <select /> de la page mere ... (Enfin, il ajoute)

Je comprend aps trop ...

Et sur la page mere tu dois modifier le (N'oubli pas le id= "") :
<select name=" nom " id ="nom">
    <option value="A"> - A</option>
  </select>
Et le nom tu dois le modifier dans le popup (ajouter('nom', value, text);) Faut que ce soi le meme sur les deux pages. Sinon, donne carement le code de ta page
<hr />Si ma reponse te convient, merci de l'accepter ! 
Commenter la réponse de JoJo738
Messages postés
106
Date d'inscription
vendredi 17 juin 2005
Statut
Membre
Dernière intervention
23 octobre 2007
0
Merci
popup.php


<?php require_once('connexion.php'); ?>
<html>
 <head>
  <script type="text/javascript">
    function ajouter(nom, value, text){
    
     formulaire = opener.document.getElementById(nom);
     nb = formulaire.length;
     nouvel_element = new Option(text, value, false, false);
     formulaire.options[nb] = nouvel_element;
    }
   
    function valid()  {
      value = document.getElementById('value').value;
      text = document.getElementById('text').value;
      ajouter('nom', value, text);
    }
   
  </script>
 </head>
 



  <form action="" method="POST" onsubmit="valid();">
  
   
   

   
   

   
    <!-- Sans oublier le code d'insertion (Par exemple dans la base de donnée) -->
 <?php
  if((isset($_POST['text'])) AND (isset($_POST['value'])))
  {
   $text=htmlentities(trim(ucfirst($_POST['text'])));
   $value=htmlentities($_POST['value']);
   $add = sprintf("INSERT INTO essai (value, texte) VALUES ('$value', '$text')");
   $result = mysql_query($add, $connexion) or die(mysql_error());
  }
 ?>
  

  </form>
 
</html>

index.html
<html>
 <head>
 </head>
 



  <select name="nom" id="nom">
    <option value="A"> - A</option>
  </select>
 
  [popup.php Open]



 
</html>

à koi sert htmlentities ???
Commenter la réponse de ahcorad
Messages postés
1267
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
29 juin 2010
1
0
Merci
Lu,

Euh ... et ca ne marche pas ? Moi ca fonctionne sur Mozilla ...
Et le htmlentities() sert à proteger ta varible (transforme les <, > ...en code Html (&gt; ...)) Comme ca ni le code php ni le code html injecter ne s'execute :D

<hr />Si ma reponse te convient, merci de l'accepter ! 
Commenter la réponse de JoJo738
Messages postés
106
Date d'inscription
vendredi 17 juin 2005
Statut
Membre
Dernière intervention
23 octobre 2007
0
Merci
oui exact ça fonctionne sur Mozilla mais pas sur IE ! et le problème ç'est que l'application doit etre optimisée sur IE !
Commenter la réponse de ahcorad
Messages postés
1267
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
29 juin 2010
1
0
Merci
Euh, et avec ce script (Remplace) ?

function doc(nom)  {
  if (document.layers)  { // NS 4 et <
    return opener.document[nom];
  }
  if (document.all)  { // IE
    return opener.document.all[nom];
  }
  if (document.getElementById)  {
    return opener.document.getElementById(nom);
  }
 
  return false;
}

function ajouter(nom, value, text){

 formulaire = doc(nom);
 
 nb = formulaire.length;
 nouvel_element = new Option(text, value, false, false);
 formulaire.options[nb] = nouvel_element;
}

function valid()  {
  value = doc('value').value;
  text = doc('text').value;
  ajouter('nom', value, text);
}

<hr />Si ma reponse te convient, merci de l'accepter ! 
Commenter la réponse de JoJo738