Recuperer une valeur d'un formulaire

saraAnna Messages postés 6 Statut Membre -  
 SaraAnna -
Bonjour ,

je travaille sur une application PHP et je veux récupérer certaines valeurs de mon formulaire mais avant sa soumission !!! ; donc non pas avec les POST & GET .

SVP si vous avez une solution qui pourras m'aider n'hésiter pas merci les amis :)

5 réponses

  1. saraAnna Messages postés 6 Statut Membre
     
    Donc voila un petit exemple sur mon PB :

    C'est que je veux récuperer la valeur d'une liste de choix et pouvoir par la suit la stocker dans une variable et l'exploiter dans du code php !

    <html>
    <head>

    </head>

    <body>

    <script>

    function voirSelection(liste)
    {
    var numero = liste.selectedIndex;
    var valeur = liste.options[numero].value;
    if (valeur==2)
    {

    <?php $id="<select name=' '>";
    $id.="<option value=0>choisissez</option>";
    while($row=mysql_fetch_array($query1))
    {
    $type_vh=$row['type_Vehicule'];
    $type_id=$row['id'];

    $id.="<option value='$type_id'>$type_vh</option>";
    }
    $id.="</select>";
    print $id;
    ?>

    }

    }

    </script>

    <form action="" method="post"id="monFormulaire">
    <select name="transporteur" onchange='voirSelection(this)'>

    <option value=1>1</option>
    <option value=2>2</option>

    </select>
    </forme>
    j'attends toujours vos réponse merci beaucoup d'avance les amis :)
    0
  2. Gremy87 Messages postés 360 Statut Membre 38
     
    Bonjour,

    j'avais peur de comprendre ton soucis... et j'avais raison ^^

    function voirSelection(liste)
    {
    var numero = liste.selectedIndex;
    var valeur = liste.options[numero].value;
    if (valeur==2)
    {
    
    <?php $id="<select name=' '>";
    $id.="<option value=0>choisissez</option>";
    while($row=mysql_fetch_array($query1))
    {
    $type_vh=$row['type_Vehicule'];
    $type_id=$row['id'];
    
    $id.="<option value='$type_id'>$type_vh</option>";
    }
    $id.="</select>";
    print $id;
    ?>
    
    }
    
    }
    


    beurk beurk beurk beurk beurk^^

    ceci est malheureusement absolument FAUX et IMPOSSIBLE.
    *va vraiment faire un post type pour pas avoir à réécrire^^*

    le javascript est un langage client, contrairement au PHP qui lui est un langage serveur. c'est à dire que le client est incapable d'interpréter le PHP.

    il est donc impossible de mettre du php dans du javascript car la partie serveur est deja effectuée.

    la seule solution qui s'offre a toi est l'AJAX, c'est a dire que, à la place de ca:

    <?php $id="<select name=' '>";
    $id.="<option value=0>choisissez</option>";
    while($row=mysql_fetch_array($query1))
    {
    $type_vh=$row['type_Vehicule'];
    $type_id=$row['id'];
    
    $id.="<option value='$type_id'>$type_vh</option>";
    }
    $id.="</select>";
    print $id;
    ?>
    


    tu vas appeler une page php en AJAX (donc retour coté serveur) pour faire ta requête et tu interprétera le resultat
    0
    1. SaraAnna
       
      merci beaucoup je vais commencer à lire un cours d'ajax :)
      0
    2. saraAnna Messages postés 6 Statut Membre
       
      Voila Gremy STTTTTTTP j'ai commencer à lire AJAX :p mais comme dab je blokkk en fait voila un exemple dont le quelle il faut que je transmette via request.send deux parametres le premier soucis c'est que je s'ais si la syntaxe est juste pour passer deux valeurs et le faite d'utiliser document.getElementById('listeType').selectedIndex comme parametre de fonction voila mon code si tu arrive à voir l'erreur je t'en pri de m'aider merci bc bc bc :)

      *************Page1.php***********************************


      <html> <head>

      <script type="text/javascript">

      function getRequeteHttp()
      {

      var requeteHttp;

      if (window.XMLHttpRequest)
      {

      requeteHttp=new XMLHttpRequest();
      if (requeteHttp.overrideMimeType)
      {
      requeteHttp.overrideMimeType('text/xml');
      }
      }
      else
      {
      if (window.ActiveXObject)
      {
      try { requeteHttp=new ActiveXObject("Msxml2.XMLHTTP"); }
      catch(e) {
      try {
      requeteHttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
      catch(e) {
      requeteHttp=null;
      }
      }
      }
      }
      return requeteHttp;
      }


      function envoyerRequete(url, debut, type)
      {

      var requeteHttp=getRequeteHttp();
      if (requeteHttp==null)
      {

      alert("Impossible d'utiliser Ajax sur ce navigateur");

      }
      else
      {

      requeteHttp.open('POST',url,true);
      requeteHttp.onreadystatechange= function() {recevoirReponse(requeteHttp);};
      requeteHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');


      requeteHttp.send('debutLib=' + escape(debut)+'&debutType='+escape(type));
      //requeteHttp.send('debutType=' + escape(type));

      }
      return;

      }

      function recevoirReponse(requeteHttp)
      {
      if (requeteHttp.readyState==4)
      {
      if (requeteHttp.status==200)
      {
      traiterReponse(requeteHttp.responseText);
      }
      else
      {
      alert("La requête ne s'est pas correctement exécutée");
      }
      }
      }
      function traiterReponse(reponse)
      {
      var i,nb,selectPdt;
      var produits=reponse.split('/');
      nb=produits.length;
      selectPdt=document.getElementById("listePdt");
      selectPdt.length=nb;
      for (i=0; i<nb; i++)
      {
      selectPdt.options[i].text=produits[i];
      }
      }


      </script>


      </script>
      </head>

      <body>
      Libellé : <input type="text" onkeyup="javascript:envoyerRequete('getProduits.php',this.value,document.getElementById('listeType').selectedIndex)">
      <br /> Liste des produits : <br />

      <select id="listePdt" size="4"> </select>

      <select id="listeType" size="4" onchange=''>
      <option id=1 value=1>categorie1</option>
      <option id=2 value=2>categorie2</option>
      </select>

      </body>
      </html>

      ************************page2.php****************************************
      <?php
      header("Cache-Control: no-cache, must-revalidate");
      header('Content-Type: text/plain; charset=ISO-8859-1');
      $cnx=mysql_connect('localhost','root','');


      mysql_select_db('ajax',$cnx);

      //$req=mysql_query("select * from produit where pr_libelle like '".$_POST['debutLib']."%'" );
      $req=mysql_query("select * from produit where pr_libelle like '".$_POST['debutLib']."%'AND pr_categorie=".$_POST['debutType']."");
      $pdt=mysql_fetch_assoc($req);

      if ($pdt)
      {
      $resultat=$pdt['pr_libelle'];
      $pdt=mysql_fetch_assoc($req);
      }
      else
      {
      $resultat='';
      }
      while($pdt)
      {

      $resultat=$resultat.'/'.$pdt['pr_libelle'];
      $pdt=mysql_fetch_assoc($req);
      }
      mysql_close($cnx);
      echo $resultat;

      ?>


      et Si ya qqn qui a une idée svp donner moi vos remarque merci
      0
  3. Gremy87 Messages postés 360 Statut Membre 38
     
    Bonjour,

    a première vue, sans avoir testé, ca me parait pas mal.

    quelques conseils personnels:

    -en PHP le fait de décomposer tout en fonction pour être plus modulaire est un principe presque fondamentale, en JS je trouve ca beaucoup plus dur a suivre mais ce n'est qu'un avis personnel.

    -les requêtes AJAX n'étant pas "visible" a première vue de l'utilisateur, privilégie la méthode GET pour envoyer tes informations je trouve ca bien plus simple

    requeteHttp.open('GET',url+'?var1=toto&var2=tutu&var3=tata',true);
    requeteHttp.onreadystatechange= function() {recevoirReponse(requeteHttp);};
    requeteHttp.send(null); 
    


    -si ce n'est pas deja le cas, munie toi du module complémentaire firebug de firefox qui te permettra de visualiser tes requêtes AJAX et de voir ce qu'elles renvoient.

    je vais tester ca un peu plus et te tiens au courant.
    0
    1. SaraAnna
       
      Bonsoir je te remerci t'es trop sympa !!! okkk je vais suivre tes conseilles à la lettre ^^ merci
      0
  4. Gremy87 Messages postés 360 Statut Membre 38
     
    re,

    après test, il te manque juste un concept très important à assimiler^^

    si c'est comme moi, ton soucis est que tu as ca:

    alert("La requête ne s'est pas correctement exécutée");

    tout le temps.

    c'est tout a fait normal!

    la requête AJAX passe par différents états state et readystate durant son execution.

    la fonction recevoirReponse s'execute dès que l'état change donc dès le debut tes conditions

    if (requeteHttp.readyState==4)
    {
    if (requeteHttp.status==200)
    { 
    


    ne sont pas remplies et donc il fait l'alert.

    le passage dans la branche du

    alert("La requête ne s'est pas correctement exécutée");

    ne veut pas dire que la requête ne s'esdt pas correctement executé, cela signifie qu'elle n'est pas finie d'exécutée donc il ne faut rien faire du tout, juste attendre.

    <html> <head>
    
    <script type="text/javascript">
    
    function getRequeteHttp()
    {
    
    var requeteHttp;
    
    if (window.XMLHttpRequest)
    {
    
    requeteHttp=new XMLHttpRequest();
    if (requeteHttp.overrideMimeType)
    {
    requeteHttp.overrideMimeType('text/xml');
    }
    }
    else
    {
    if (window.ActiveXObject)
    {
    try { requeteHttp=new ActiveXObject("Msxml2.XMLHTTP"); }
    catch(e) {
    try {
    requeteHttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    catch(e) {
    requeteHttp=null;
    }
    }
    }
    }
    return requeteHttp;
    }
    
    
    function envoyerRequete(url, debut, type)
    {
    
    var requeteHttp=getRequeteHttp();
    if (requeteHttp==null)
    {
    
    alert("Impossible d'utiliser Ajax sur ce navigateur");
    
    }
    else
    {
    
    requeteHttp.open('POST',url,true);
    requeteHttp.onreadystatechange= function() {recevoirReponse(requeteHttp);};
    requeteHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    
    
    requeteHttp.send('debutLib=' + escape(debut)+'&debutType='+escape(type));
    //requeteHttp.send('debutType=' + escape(type));
    
    }
    return;
    
    }
    
    function recevoirReponse(requeteHttp)
    {
    if (requeteHttp.readyState==4)
    {
    if (requeteHttp.status==200)
    {
    traiterReponse(requeteHttp.responseText);
    }
    else
    {
    //alert("La requête ne s'est pas correctement exécutée");
    }
    }
    }
    function traiterReponse(reponse)
    {
    var i,nb,selectPdt;
    var produits=reponse.split('/');
    nb=produits.length;
    selectPdt=document.getElementById("listePdt");
    selectPdt.length=nb;
    for (i=0; i<nb; i++)
    {
    selectPdt.options[i].text=produits[i];
    }
    }
    
    
    </script>
    
    
    </script>
    </head>
    
    <body>
    Libellé : <input type="text" onkeyup="javascript:envoyerRequete('test11.php',this.value,document.getElementById('listeType').selectedIndex)">
    <br /> Liste des produits : <br />
    
    <select id="listePdt" size="4"> </select>
    
    <select id="listeType" size="4" onchange=''>
    <option id=1 value=1>categorie1</option>
    <option id=2 value=2>categorie2</option>
    </select>
    
    </body>
    </html> 
    
    0
    1. SaraAnna
       
      re ^^

      Ok voila c'est exact !! si nn pour le code ca marche mnt avc ca merci bc bc bc bc ^^ : et avec l'aide d'un ami j'ai pu récuperer mes parametres .Merci bc pour ton aide.


      Page 1.php



      <html>
      <head>


      <script type="text/javascript">

      function getRequeteHttp()
      {

      var requeteHttp;

      if (window.XMLHttpRequest)
      {

      requeteHttp=new XMLHttpRequest();
      if (requeteHttp.overrideMimeType)
      {
      requeteHttp.overrideMimeType('text/xml');
      }
      }
      else
      {
      if (window.ActiveXObject)
      {
      try { requeteHttp=new ActiveXObject("Msxml2.XMLHTTP"); }
      catch(e) {
      try {
      requeteHttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
      catch(e) {
      requeteHttp=null;
      }
      }
      }
      }
      return requeteHttp;
      }




      function envoyerRequete(url)
      {

      var requeteHttp=getRequeteHttp();
      var depart=document.getElementById("VilleDepart").value;
      var arrivee=document.getElementById("VilleArrivee").value;
      if (requeteHttp==null)
      {

      alert("Impossible d'utiliser Ajax sur ce navigateur");

      }
      else
      {

      requeteHttp.open('POST',url,true);
      requeteHttp.onreadystatechange= function() {recevoirReponse(requeteHttp);};
      requeteHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');


      requeteHttp.send('departLib=' + depart+'&arriveeLib=' + arrivee);


      }
      return;

      }

      function recevoirReponse(requeteHttp)
      {
      if (requeteHttp.readyState==4)
      {
      if (requeteHttp.status==200)
      {
      traiterReponse(requeteHttp.responseText);


      }
      else
      {
      alert("La requête ne s'est pas correctement exécutée");
      }
      }
      }



      function traiterReponse(reponse)
      {

      document.getElementById("km").value=reponse;
      }
      </script>




      </head>



      <body>

      <input type="text" id="VilleDepart" />
      <input type="text" id="VilleArrivee" onkeyup="javascript:envoyerRequete('Teste_Param.php')"/>
      <!--<input type="button" onclick="javascript:envoyerRequete('Teste_Param.php')"/><br/>-->
      <input id="km">


      </body></html>

      Page 2 .php

      <?php
      header("Cache-Control: no-cache, must-revalidate");
      header('Content-Type: text/plain; charset=ISO-8859-1');

      $cnx=mysql_connect('localhost','root','');


      mysql_select_db('teste1',$cnx);

      $req=mysql_query("select km from KM where depart = '".$_POST['departLib']."' AND arrivee = '".$_POST['arriveeLib']."'");

      $pdt=mysql_fetch_assoc($req);

      if ($pdt)
      {
      $resultat=$pdt['km'];
      $pdt=mysql_fetch_assoc($req);
      }
      else
      {
      $resultat='';
      }
      while($pdt)
      {

      $resultat=$pdt['km'];
      $pdt=mysql_fetch_assoc($req);
      }
      mysql_close($cnx);
      echo $resultat;

      ?>
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Gremy87 Messages postés 360 Statut Membre 38
     
    de rien ;)

    n'oublies pas de mettre en résolu (petit lien près du titre de ton 1er post)
    0
    1. SaraAnna
       
      okkkk :)
      0