Récupérer variable php d'un select multiple

Récupérer variable php d'un select multiple - PHP - Programmation

Marsh Posté le 03-11-2008 à 16:05:50    

Bonjour,

 

J'ai crée un double menu déroulant (en php), lorsque je sélectionne un pays dans le menu 1, une liste de région apparaît dans le menu 2. Ceci grâce au langage Ajax. J'aimerai que la selection effectué dans en menu 2 apparaisse dans un input.

 

Mon but étant de traiter le nom sélectionné dans l'api google pour retrouver les coordonnées de la ville sélectionnée:

 

Edit: pour simplifier, comment afficher une sélection dans un input, je choisi Paris et je veux que Paris soit écrit dans un input (sur la même page).

 

Code de gestion du menu "Menu.php':

Code :
  1. <html>
  2. <head>
  3. <?php include ('connexion.php'); ?>
  4.  <title>Tutoriel Ajax (XHTML + JavaScript + XML)</title>
  5.  <script type='text/javascript'>
  6.   //var xhr = null;
  7.   // Renvoie le texte de l'objet ActiveXObject le plus rcent depuis une liste
  8.   var pickRecentProgID = function (idList){
  9.    // found progID flag
  10.       var bFound = false;
  11.       for(var i=0; i < idList.length && !bFound; i++){
  12.           try{
  13.               var oDoc = new ActiveXObject(idList[i]);
  14.               o2Store = idList[i];
  15.               bFound = true;
  16.           }catch (objException){
  17.               // trap; try next progID
  18.           };
  19.       };
  20.       if (!bFound)
  21.     throw ("Aucun ActiveXObject n'est valide sur votre ordinateur, pensez  mettre  jour votre navigateur" );
  22.       idList = null;
  23.       return o2Store;
  24.   }
  25.   // Retourne un nouvel objet XmlHttpRequest
  26.   var GetXmlHttpRequest_AXO=null
  27.   var GetXmlHttpRequest=function () {
  28.    if (window.XMLHttpRequest) {
  29.     return new XMLHttpRequest()
  30.    }
  31.    else if (window.ActiveXObject) {
  32.     if (!GetXmlHttpRequest_AXO) {
  33.      GetXmlHttpRequest_AXO=pickRecentProgID(["Msxml2.XMLHTTP.5.0", "Msxml2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"]);
  34.     }
  35.     return new ActiveXObject(GetXmlHttpRequest_AXO)
  36.    }
  37.    return false;
  38.   }
  39.   // Compatibilit avec le script du tutoriel AJAX (developpez.com)
  40.   getXhr=GetXmlHttpRequest;
  41.   /**
  42.   * Mthode qui sera appele sur le click du bouton
  43.   */
  44.   function go(){
  45.      var xhr = getXhr();
  46.      // On dfini ce qu'on va faire quand on aura la rponse
  47.      xhr.onreadystatechange = function(){
  48.         // On ne fait quelque chose que si on a tout reu et que le serveur est ok
  49.         if(xhr.readyState == 4 && xhr.status == 200){
  50.     leselect = xhr.responseText;
  51.     // On se sert de innerHTML pour rajouter les options a la liste
  52.     document.getElementById('bloc').innerHTML = leselect;
  53.         }
  54.      }
  55.      // Ici on va voir comment faire du post
  56.      xhr.open("POST","ajaxRegions.php",true);
  57.      // ne pas oublier a pour le post
  58.      xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  59.      // ne pas oublier de poster les arguments
  60.      // ici, l'id de l'auteur
  61.      sel = document.getElementById('pays');
  62.      pays = sel.options[sel.selectedIndex].value;
  63.              xhr.send("pays="+pays);
  64.   }
  65. //--------------------------------------------------------------------------------------------------------------------//
  66.  
  67. </script>
  68. </head>
  69. <body>
  70.  <form>
  71.   <fieldset style="width: 500px" border="none">
  72.    <legend>Inserez Coordonnées</legend>
  73.    <label>Pays</label>
  74.    <select name='type' id='pays' onchange='go();'style="width: 500px">
  75.     <option value='-1'>Aucun</option>
  76.     <?php
  77.      $res = mysql_query("SELECT pays FROM listepays" );
  78.      while($row = mysql_fetch_assoc($res)){
  79.       echo "<option value='".$row["pays"]."'>".$row["pays"]."</option>";
  80.      }
  81.     ?>
  82.    </select>
  83.    <label>Regions</label>
  84.    <div id='bloc' style='display:inline' >
  85.     <select name='Region[]' id='Reg' onClick='go2(); style="width: 500px">
  86.      <option value='-1'>Choisir</option>
  87.     </select>
  88.    </div>
  89.   </fieldset>
  90.  </form>
  91.  <?php include 'traitement-recherche.php' ?>
  92. </body>
  93. </html>
 

Code Liaison Ajax:

 
Code :
  1. <?php
  2. if(isset($_POST["pays"])){
  3.  if (mysql_connect("localhost","root","" ) ) {
  4.   if (mysql_select_db("maps" ) ) {
  5.    $requete = "SELECT Region FROM listevilles WHERE pays='".$_POST["pays"]."'";
  6.    if ($res = mysql_query($requete) ) {
  7.     echo "<select name='Region' multiple='true' >";
  8.     while($row = mysql_fetch_assoc($res)){
  9.      echo "<option id='Reg' value='Region'".$row["id"]."'>".$row["Region"]."</option>";
  10.           }
  11.     echo "</select>";
  12.    } else {
  13.     echo "Erreur de requête";
  14.    }
  15.   } else {
  16.    echo "Erreur sélection de base de données";
  17.   }
  18.  } else {
  19.   echo "Erreur de connexion mysql";
  20.  }
  21.     } else {
  22.  echo "pays non défini";
  23. }
  24. ?>
 

Code Google "traitement-recherche.php":

  


Code :
  1. <script type="text/javascript">
  2.    
  3.     var map = null;
  4.     var geocoder = null;
  5.     function load() {
  6.       if (GBrowserIsCompatible()) {
  7.         map = new GMap2(document.getElementById("map" ));
  8.    GEvent.addListener(map, "moveend", function() {
  9.           var center = map.getCenter();
  10.           document.getElementById("message" ).value = center.toString();
  11.         });
  12.         map.setCenter(new GLatLng(48.862004474432936, 2.350902557373047), 4, G_SATELLITE_MAP);
  13.                 map.enableDoubleClickZoom();
  14.  geocoder = new GClientGeocoder();
  15.    
  16.     
  17.       }
  18.     }
  19.     function showAddress(address) {
  20.       if (geocoder) {
  21.         geocoder.getLatLng(
  22.           address,
  23.           function(point) {
  24.             if (!point) {
  25.               alert(address +' '+"Désolé je trouve pas cela dans ma base!" );
  26.             } else {
  27.               map.setCenter(point, 13);
  28.               var marker = new GMarker(point);
  29.               map.addOverlay(marker);
  30.               marker.openInfoWindowHtml(address);
  31.             }
  32.           }
  33.         );
  34.       }
  35.     }
  36.     </script>
  37.     <style type="text/css">
  38.     </style>
  39.   </head>
  40.   <body onload="load()" onunload="GUnload()">
  41.     <form action="#" onsubmit="showAddress(this.address.value); return false">
  42.       <p>Je cherche : (ex :nom ville, france)
  43.         <input type="text" class="form" size="63" name="address" value=".$path." />
  44.         <br />
  45.         La latitude / longitude est:
  46.         <input type="text" class="form" id="message" size="50">
  47. </p>
  48.       <p>
  49.         <input name="submit" id="button" type="submit" value="Valider!" />
  50. </p>
  51.       <div id="map" style="width: 500px; height: 200px" style='display:none'></div>
  52.   </form>

Message cité 2 fois
Message édité par bm3w325i le 03-11-2008 à 17:51:07
Reply

Marsh Posté le 03-11-2008 à 16:05:50   

Reply

Marsh Posté le 03-11-2008 à 17:34:50    

Hello,
 
Remarque sur le code Liaison Ajax, je te conseille de ne pas ecrire  
 if (mysql_connect("localhost","root","" ) ) {
  if (mysql_select_db("maps" ) ) {
 
mais d'externaliser les variables de connexion a la base de données dans un fichier. Et d'utiliser ce fichier partout ou tu fais des connexion a la base.
 
include("config.php" );
 if (mysql_connect($CONF['db_host'],$CONF['db_user'],$CONF['db_pswd'] ) ) {
  if (mysql_select_db($CONF['db_dbname'] ) ) {
 
avec dans config.php
<?php
$CONF = array();
$CONF['db_host'] = 'localhost';
$CONF['db_user'] = 'root';
$CONF['db_pswd'] = '';
$CONF['db_dbname'] = 'maps';
?>
 
De ce fait, tu n'auras pas de difficulter a changer de serveur...
 
Par contre, pas d'idée sur ton pb...


---------------
http://poemes.iceteapeche.com - http://www.simuland.net
Reply

Marsh Posté le 03-11-2008 à 17:48:12    

Merci pour l'info, ce code est destiné a un usage interne donc ce n'est pas trop important. En tous cas merci car autant pour les autre fichier j'ai misun include connexion.php, mais ici je ne savais pas comment faire ^^

Reply

Marsh Posté le 03-11-2008 à 21:16:02    

Alors j'ai avancé, mais j'ai un problème, je récupérer la variable cependant il m'affiche le 1ere élément de la liste même si je sélectionne un autre.
 
Function javascript pour recuperer l'element selmectionne et l'afficher:

Code :
  1. function recup() {
  2. var r= document.getElementById('RR').innerHTML;
  3. document.form.address.value=r;
  4. };

Reply

Marsh Posté le 03-11-2008 à 22:38:08    

bm3w325i a écrit :

Bonjour, (...) Ceci grâce au langage Ajax.


 
Bonjour,
 
AJAX n'est pas un langage, c'est l'acronyme de Asynchronous Javascript And XML.
 
 :o  


---------------
Directeur Technique (CTO)
Reply

Marsh Posté le 04-11-2008 à 17:43:59    

Merci pour l'info ^^

Reply

Marsh Posté le 18-10-2010 à 16:45:19    

bm3w325i a écrit :

Bonjour,
 
J'ai créé un double menu déroulant (en php); lorsque je sélectionne un pays dans le menu 1, une liste de régions apparaît dans le menu 2. Ceci grâce au langage Ajax. J'aimerais que la sélection effectuée dans en menu 2 apparaisse dans un input.
 
Mon but étant de traiter le nom sélectionné dans l'api google pour retrouver les coordonnées de la ville sélectionnée:
 
Edit: pour simplifier, comment afficher une sélection dans un input, je choisi Paris et je veux que Paris soit écrit dans un input (sur la même page).
[...]


 
Si j'ai bien compris, la question est de récupérer le résultat d'une sélection dans une liste et de l'insérer dans un "<input type='text' ...>" de la même page.  
 
C'est relativement trivial en JavaScript.  
 
Voici un petit exemple, à adapter après selon les besoins.  
 

Code :
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
  2. <html>
  3. <head>
  4. <title>selector2input</title>
  5. </head>
  6. <body>
  7. <form name='pour_voir' method='post' action='#'>
  8. Sélecteur:
  9. <select name='monSel' onchange='transfert();'>
  10.   <option value='1'>Un</option>
  11.   <option value='2'>Deux</option>
  12.   <option value='3'>Trois</option>
  13. </select>
  14. <br/></br>
  15. Valeur: <input type=text' name='valeur' value=''/>
  16. <br/>
  17. Libellé: <input type='text' name='label' value=''/>
  18. </form>
  19. </body>
  20. <script type='text/javascript' language='JavaScript'>
  21. <!--
  22. function transfert() {
  23.   var Sel, val, label, extrait;
  24.   Sel = document.getElementsByName('monSel')[0];
  25.   val = document.getElementsByName('valeur')[0];
  26.   label = document.getElementsByName('label')[0];
  27.   // récupère la valeur et la met dans le "<input type='text' ...> approprié
  28.   extrait = Sel.options[Sel.selectedIndex].value;
  29.   val.value = extrait;
  30.   // récupère le libellé de l'option choisie et le met dans le "<input type='text' ...> approprié
  31.   extrait = Sel.options[Sel.selectedIndex].text;
  32.   label.value = extrait;
  33. }
  34. // -->
  35. </script>
  36. </html>


 
Cordialement,
 :hello:

Reply

Sujets relatifs:

Leave a Replay

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