Mise à jour d'une liste déroulante

Résolu
ahcorad Messages postés 106 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 23 octobre 2007 - 15 juin 2006 à 15:08
 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 !

25 réponses

JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 1
22 juin 2006 à 00:32
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 ! 
3
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 1
15 juin 2006 à 15:19
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 !
0
pcgpegase Messages postés 96 Date d'inscription lundi 24 novembre 2003 Statut Membre Dernière intervention 24 avril 2007 1
15 juin 2006 à 15:22
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
0
ahcorad Messages postés 106 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 23 octobre 2007
15 juin 2006 à 15:24
oui exact jvai mettre ce message sur javascriptfr !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 1
15 juin 2006 à 16:04
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 !
0
ahcorad Messages postés 106 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 23 octobre 2007
15 juin 2006 à 16:58
Ok merci je vais tester !
ya pas plus simple que ça ! on ne peut pas mettre à jour seulement la liste déroulante ??
0
ahcorad Messages postés 106 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 23 octobre 2007
15 juin 2006 à 17:34
tu n'as pas un exemple concret car la je vois pas trop !
0
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 1
15 juin 2006 à 18:49
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 !
0
ahcorad Messages postés 106 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 23 octobre 2007
15 juin 2006 à 19:55
il manque pas quelque chose dans ton code car ça ne met rien à jour !
0
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 1
15 juin 2006 à 23:17
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 !
0
ahcorad Messages postés 106 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 23 octobre 2007
16 juin 2006 à 11:53
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 !
0
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 1
16 juin 2006 à 12:12
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 !
0
ahcorad Messages postés 106 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 23 octobre 2007
17 juin 2006 à 15:16
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>
0
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 1
17 juin 2006 à 18:09
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 !
0
ahcorad Messages postés 106 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 23 octobre 2007
20 juin 2006 à 15:46
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 ??
0
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 1
20 juin 2006 à 16:20
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 ! 
0
ahcorad Messages postés 106 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 23 octobre 2007
21 juin 2006 à 14:10
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 ???
0
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 1
21 juin 2006 à 14:20
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 ! 
0
ahcorad Messages postés 106 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 23 octobre 2007
21 juin 2006 à 18:11
oui exact ça fonctionne sur Mozilla mais pas sur IE ! et le problème ç'est que l'application doit etre optimisée sur IE !
0
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 1
21 juin 2006 à 18:37
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 ! 
0
Rejoignez-nous