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

  FORUM HardWare.fr
  Programmation
  PHP

  Transfert de variable [résolu]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Transfert de variable [résolu]

n°1721517
crustyz
Posté le 22-04-2008 à 10:55:03  profilanswer
 

Bonjour, je suis actuellement en train de réaliser un formulaire avec 3 listes liées entre elles. Pour cela, j'utilise deux fonctions en javascript qui font appel à un script php (que voici):
 

Code :
  1. <?php
  2. if(isset($_POST["Client"])){       //on entre dans cette boucle avec la premiere fonction js
  3.     echo "<option/></option>";
  4.  mysql_connect("localhost","root","" );
  5.  mysql_select_db("parametrage fichier ini" );
  6.  $res = mysql_query("SELECT DISTINCT Application FROM generale WHERE Client='$_POST[Client]' ORDER BY Application" );
  7.    
  8.     while($row = mysql_fetch_assoc($res)){
  9.       echo "<option/>".$row['Application']."</option>";
  10.     }
  11.   echo "</select>";
  12.   }
  13. if(isset($_POST["Application"])){    // on entre dans cette boucle avec la 2e fonction js
  14.  mysql_connect("localhost","root","" );
  15.  mysql_select_db("parametrage fichier ini" );
  16.     //$res = mysql_query("SELECT id FROM generale WHERE Application='$_POST[Application]' AND Client='$_POST[Client]' ORDER BY id" );
  17.     //cette commande ne marche pas car $_POST[Client] ne contient rien...     
  18.     $res = mysql_query("SELECT id FROM generale WHERE Application='$_POST[Application]' ORDER BY id" );
  19.    
  20.     while($row = mysql_fetch_assoc($res)){
  21.       echo "<option/>".$row['id']."</option>";
  22.     }
  23.   echo "</select>";
  24. }
  25. ?>


J'aimerais pouvoir récuperer la vauleur du $_POST["Client"] afin de m'en servir dans le second if, et ainsi pouvoir faire un select sur ma bdd en fonction des deux criteres Application et Client... mais j'ai passé toute ma journée dessus hier, et je n'ai toujours pas trouvé comment faire.
 
J'ai essayé avec une variable globale (dans le script php), mais ça ne marchait pas, les changements de cette variable dans les "if" n'étaient pas pris en compte, donc je suppose que la portée du $_POST["Client"] est limitée au if qui l'utilise. J'ai également voulu retourner cette valeur dans le javascript, sans succès... j'ai également essayé de suivre quelques tutos (merci google), j'ai trouvé plusieurs exemples pour faire des listes liées, mais aucun d'eux ne répondait à ma question.  :(  
 
Quelqu'un aurait une idée svp ?  :sarcastic:


Message édité par crustyz le 22-04-2008 à 16:05:57
mood
Publicité
Posté le 22-04-2008 à 10:55:03  profilanswer
 

n°1721667
masterpsx
Aigloun foutougrafe
Posté le 22-04-2008 à 12:15:01  profilanswer
 

Les variables passées par $_POST sont accessibles partout du moment que c'est dans la page ou la fonction concernée.
Ton problème viens surement d'une erreur de syntaxe : $_POST[Client] est incorrecte, c'est $_POST['Client'] ou $_POST["Client"]
 
Essayes plutôt :

Code :
  1. $res = mysql_query("SELECT id FROM generale WHERE Application='" . $_POST['Application']. "' AND Client='" . $_POST['Client'] . "' ORDER BY id" );

n°1721786
crustyz
Posté le 22-04-2008 à 14:11:08  profilanswer
 

J'ai essayé de faire ça, mais ça me donne le même résultat qu'avec la commande que j'ai mise en commentaire... c'est a dire que le select ne me renvois rien. Merci quand même pour la syntaxe, elle est surement plus adaptée que la mienne.
 
j'ai tenté de faire un echo "<option>" . $_POST['Client']. "</option>"; dans le premier if, j'obtiens bien le nom du client. En revanche, j'ai fais la même chose dans le second if, et la je n'obtiens rien (champs vide).
 
Donc à priori, il y a bien un problème pour passer cette variable d'un if a l'autre. Est-ce que ça peut venir du fait qu'ils sont utilisés dans des fonctions différentes ?
 
Voici mes deux fonctions javascripts, au cas ou ça pourrait aider. Ces fonctions sont appelées dans des select (ex: <select name="Client_ini" id='Client_ini' onchange="go()"> )
 

Code :
  1. function go(){
  2.    var xhr = getXhr();
  3.    xhr.onreadystatechange = function(){
  4.     if(xhr.readyState == 4 && xhr.status == 200){
  5.      leselect = xhr.responseText;
  6.      document.getElementById('Appli').innerHTML = leselect;
  7.     }
  8.    }
  9.    xhr.open("POST","ajaxParam.php",true);
  10.    xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  11.    sel = document.getElementById('Client_ini');
  12.    Client = sel.options[sel.selectedIndex].value;
  13.    xhr.send("Client="+Client);
  14.   }
  15.    function goz(){
  16.    var xhr = getXhr();
  17.    xhr.onreadystatechange = function(){
  18.     if(xhr.readyState == 4 && xhr.status == 200){
  19.      leselect = xhr.responseText;
  20.      document.getElementById('id').innerHTML = leselect;
  21.     }
  22.    }
  23.    xhr.open("POST","ajaxParam.php",true);
  24.    xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  25.    sel = document.getElementById('Appli');
  26.    Application = sel.options[sel.selectedIndex].value;
  27.         xhr.send("Application="+Application);
  28.   }


En fait le déroulement se passe comme ceci: Je sélectionne un client dans la première liste, ça m'appelle une fonction javascript (go()), qui elle même fait appel à un script php (dans un autre fichier php, c'est celui que j'ai affiché dans mon premier message). Lors de cette étape, je rentre donc dans le 1er if. Ça me permet d'afficher les applications en rapport avec le client dans la seconde liste.
Ensuite je sélectionne une application dans la seconde liste, ça m'appelle une seconde fonction javascript (goz()), qui à son tour appel le script php. Et c'est à ce moment que j'entre dans le second if et que je suis sensé afficher les id en rapport avec l'application ET le client.
 
Le problème vient donc peut être du fait que je sors du script, et y rerentre seulement après... dans ce cas il faudrait que je récupère la valeur de cette variable dans mon javascript, et que je la renvoie avec ma 2e fonction... mais ça me semble un peu bizarre comme bidouille  :??:

n°1721822
soju
One shot !
Posté le 22-04-2008 à 14:27:30  profilanswer
 

ça vient simplement du fait que tu envois une seule variable, envois les 2 et modifie ton script php en conséquence

n°1721834
masterpsx
Aigloun foutougrafe
Posté le 22-04-2008 à 14:32:30  profilanswer
 

C'est pas un problème de condition si tu n'envois qu'une seule variable par $_POST a ton fichier PHP, il ne peut pas connaitre l'autre, c'est tout a fait normal.
 
Ta fonction goz() doit envoyer les 2 variables et pas que "Application", que tu l'est envoyé une 1er fois, n'a aucune importance, le php ne mémorise pas les variables envoyés précédement.
 
[edit]soju a été plus rapide quoi moi :-)


Message édité par masterpsx le 22-04-2008 à 14:33:01
n°1721843
crustyz
Posté le 22-04-2008 à 14:35:05  profilanswer
 

D'accord, je vais essayer de régler ça alors, merci à vous  :jap:
 
EDIT: c'est bon ça marche à merveille, encore merci !


Message édité par crustyz le 22-04-2008 à 15:36:21

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Transfert de variable [résolu]

 

Sujets relatifs
[Résolu] Menu déroulant animé : setTimeout()[Résolu] Conseil rapide pour formulaire
[Résolu] Fonction count en PHP[Résolu]Include et GET
[Résolu] Boucle For et condition if[Résolu]Afficher résultat requête MAX
RESOLU PHP bbcode dans une shoutbox[php + Ajax] include "dynamique?" [résolu]
problème avec une variablepetit souci avec variable d'un Input [résolu]
Plus de sujets relatifs à : Transfert de variable [résolu]


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