Page 1 sur 1
recuperation donnée liste deroulante
Posté : 24 juin 2008, 17:25
par ouzbek
bonjour à tous,
voila j'ai créer une page de 3 listes deroulantes liées tirée d'un base de donnée et qui marche correctement.
sur ces trois listes deroulantes j'arrive à recuperer les données de la premiere liste (reference) mais pas celle de la 2nde (designation) ni de la 3ème (qte).
si vous avez une solution, des tutoriaux sur le sujet je suis preneur!
je vous mets une partie du code
index.php
Code : Tout sélectionner
<script type='text/javascript'>
//requete1
function go(){
var xhr = getXhr();
xhr.onreadystatechange = function(){
if(xhr.readyState == 4 && xhr.status == 200){
leselect = xhr.responseText;
document.getElementById('designation').innerHTML = leselect;
}
}
xhr.open("POST","./ajax1.php",true);
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
sel = document.getElementById('Id_ref');
id_ref = sel.options[sel.selectedIndex].value;
xhr.send("Id_ref="+id_ref);
}
</script>
</head>
<body>
<form action="envoi_elec.php" method="post" enctype="multipart/form-data">
<legend>commande</legend><br><br>
<label>Ref</label>
<select name='ref' id='Id_ref' onchange='go();'>
<option value='ref_pdt'>reference</option>
<?php
//requete3
include ('connexion.php');
$res = mysql_query("SELECT * FROM ref_elec");
while($row = mysql_fetch_assoc($res)){
echo "<option value='".$row["ref_pdt"]."'>".$row["ref_pdt"]."</option>";
}
?>
</select>
<label>Des</label>
<div id='designation' style='display:inline'>
<select name='designation'>
<option value='designation'>designation</option>
</select>
</div>
<br><br>
<input type="submit" value="envoyer">
</form>
et qui renvoie vers ajax1.php
Code : Tout sélectionner
<?php
//requete1
if(isset($_POST["Id_ref"])){
if ($db=mysql_connect('$a,'$b','$c') ) {
if (mysql_select_db('$b',$db) ) {
$requete = 'SELECT des.id, des.des_pdt, des.Qte, des.Id_ref FROM ref_elec as ref
LEFT JOIN des_elec as des ON des.Id_ref = ref.id WHERE ref.ref_pdt = "' . mysql_escape_string($_POST['Id_ref']) . '"';
if ($res = mysql_query($requete) ) {
echo "<select name='designation'>";
while($row = mysql_fetch_assoc($res)){
echo "<option value='".$row["des_pdt"]."'>".$row["des_pdt"]."</option>";
}
echo "</select>";
}
if ($res = mysql_query($requete) ) {
echo ' <label> colis </label>';
echo "<select name='qte'>";
while($row = mysql_fetch_assoc($res)){
echo "<option value='".$row["Qte"]."'>".$row["Qte"]. "</option>";
}
echo "</select>";
} else {
echo "Erreur de requête";
}
} else {
echo "Erreur sélection de base de données";
}
} else {
echo "Erreur de connexion mysql";
}
} else {
echo "Id_ref non défini";
}
?>
merci d'avance
Posté : 25 juin 2008, 08:24
par Ryle
Quand tu fais appel à ta fonction go(), tu n'envois au serveur que la valeur de la première liste :
xhr.send("Id_ref="+id_ref);
Il est donc normal que tu ne récupère que celle-ci
xhr.send("Id_ref="+id_ref+"&liste2="+valListe2+"&...");
Posté : 25 juin 2008, 14:04
par ouzbek
merci pour ta reponse
j'ai essayé ca :
xhr.send("Id_ref="+id_ref+"&designation="+designation);
mais cela ne marche pas il me renvoi ref_pdt!
je pense que c'est parce que la requete est fait a partir de ajax1.php et non pas de index.php?
merci
Posté : 25 juin 2008, 14:19
par guilt92
Comment as tu récupérer la valeur designation ?
Aussi, si le but est que le choix dans designation fasse le lien vers une 3eme liste déroulante il faudrait ajouter le "onchange" aussi sur ta liste designation...
Posté : 25 juin 2008, 14:26
par ouzbek
salut guilt92,
alors j'arrive a recuperer la reference dans un fichier .txt mais je n'arrive pas à recuperer la designation!
c'est la tout le probleme.
merci
Posté : 25 juin 2008, 14:35
par guilt92
Si tu procédes de la meme facon que pour Id_ref ca fonctionne pas ?
(oublie pas de rajouter
id="designation" dans ton select
dans les 2 fichiers)
Puis, comme pour l'autre :
Code : Tout sélectionner
sel = document.getElementById('Id_ref');
id_ref = sel.options[sel.selectedIndex].value;
des = document.getElementById("designation");
val_des = sel.options[des.selectedIndex].value;
xhr.send("Id_ref="+id_ref+"&designation="+val_des);
Posté : 25 juin 2008, 14:57
par ouzbek
non ca ne marche pas!
il me met erreur sur la page et ne m'affiche plus mes listes deroulantes!
lol
Posté : 25 juin 2008, 15:01
par guilt92
Poste le code dans sa version actuelle stp
Posté : 25 juin 2008, 15:04
par ouzbek
index.php
Code : Tout sélectionner
<script type='text/javascript'>
//var xhr = null;
// Renvoie le texte de l'objet ActiveXObject le plus récent depuis une liste
var pickRecentProgID = function (idList){
// found progID flag
var bFound = false;
for(var i=0; i < idList.length && !bFound; i++){
try{
var oDoc = new ActiveXObject(idList[i]);
o2Store = idList[i];
bFound = true;
}catch (objException){
// trap; try next progID
};
};
if (!bFound)
throw ("Aucun ActiveXObject n'est valide sur votre ordinateur, pensez à mettre à jour votre navigateur");
idList = null;
return o2Store;
}
// Retourne un nouvel objet XmlHttpRequest
var GetXmlHttpRequest_AXO=null
var GetXmlHttpRequest=function () {
if (window.XMLHttpRequest) {
return new XMLHttpRequest()
}
else if (window.ActiveXObject) {
if (!GetXmlHttpRequest_AXO) {
GetXmlHttpRequest_AXO=pickRecentProgID(["Msxml2.XMLHTTP.5.0", "Msxml2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"]);
}
return new ActiveXObject(GetXmlHttpRequest_AXO)
}
return false;
}
// Compatibilité avec le script du tutoriel AJAX (developpez.com)
getXhr=GetXmlHttpRequest;
/**
* Méthode qui sera appelée sur le click du bouton
*/
//requete1
function go(){
var xhr = getXhr();
xhr.onreadystatechange = function(){
if(xhr.readyState == 4 && xhr.status == 200){
leselect = xhr.responseText;
document.getElementById('designation').innerHTML = leselect;
}
}
xhr.open("POST","./ajax1.php",true);
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
sel = document.getElementById('Id_ref');
id_ref = sel.options[sel.selectedIndex].value;
xhr.send("Id_ref="+id_ref);
}
</script>
</head>
<body>
<form action="envoi_elec.php" method="post" enctype="multipart/form-data">
<legend>commande</legend><br><br>
<label>Ref</label>
<select name='ref' id='Id_ref' onchange='go();'>
<option value='ref_pdt'>reference</option>
<?php
//requete3
include ('connexion.php');
$res = mysql_query("SELECT * FROM ref_elec");
while($row = mysql_fetch_assoc($res)){
echo "<option value='".$row["ref_pdt"]."'>".$row["ref_pdt"]."</option>";
}
?>
</select>
<label>Des</label>
<div id='designation' style='display:inline'>
<select name='designation' id="designation">
<option value='designation'>designation</option>
</select>
</div>
<label> Nbre pièces </label>
<input type="text" name="piece" size="1">
<br><br>
<input type="submit" value="envoyer">
</form>
ajax1.php
Code : Tout sélectionner
<?php
//requete1
if(isset($_POST["Id_ref"])){
if ($db=mysql_connect($a,'$b','$c') ) {
if (mysql_select_db('$b',$db) ) {
$requete = 'SELECT des.id, des.des_pdt, des.Qte, des.Id_ref FROM ref_elec as ref
LEFT JOIN des_elec as des ON des.Id_ref = ref.id WHERE ref.ref_pdt = "' . mysql_escape_string($_POST['Id_ref']) . '"';
if ($res = mysql_query($requete) ) {
echo "<select name='designation'>";
while($row = mysql_fetch_assoc($res)){
echo "<option value='".$row["des_pdt"]."'>".$row["des_pdt"]."</option>";
}
echo "</select>";
}
if ($res = mysql_query($requete) ) {
echo ' <label> colis </label>';
echo "<select name='qte'>";
while($row = mysql_fetch_assoc($res)){
echo "<option value='".$row["Qte"]."'>".$row["Qte"]. "</option>";
}
echo "</select>";
} else {
echo "Erreur de requête";
}
} else {
echo "Erreur sélection de base de données";
}
} else {
echo "Erreur de connexion mysql";
}
} else {
echo "Id_ref non défini";
}
?>
voila les codes
Posté : 25 juin 2008, 15:15
par guilt92
(oublie pas de rajouter id="designation" dans ton select dans les 2 fichiers)
je l'avais pourtant mis en gras...
dans ton deuxième fichier tu recrées ton formulaire description il faut que tu redefinisse
sinon après en js tu as un document.getElementById("designation") qui ne peut pas marcher...
Posté : 25 juin 2008, 15:51
par ouzbek
excuse moi j'avais pas vu de les mettre dans les 2 fichiers!
mais ca ne marche toujours pas il me met erreur sur la page!
index.php
Code : Tout sélectionner
<script type='text/javascript'>
//var xhr = null;
// Renvoie le texte de l'objet ActiveXObject le plus récent depuis une liste
var pickRecentProgID = function (idList){
// found progID flag
var bFound = false;
for(var i=0; i < idList.length && !bFound; i++){
try{
var oDoc = new ActiveXObject(idList[i]);
o2Store = idList[i];
bFound = true;
}catch (objException){
// trap; try next progID
};
};
if (!bFound)
throw ("Aucun ActiveXObject n'est valide sur votre ordinateur, pensez à mettre à jour votre navigateur");
idList = null;
return o2Store;
}
// Retourne un nouvel objet XmlHttpRequest
var GetXmlHttpRequest_AXO=null
var GetXmlHttpRequest=function () {
if (window.XMLHttpRequest) {
return new XMLHttpRequest()
}
else if (window.ActiveXObject) {
if (!GetXmlHttpRequest_AXO) {
GetXmlHttpRequest_AXO=pickRecentProgID(["Msxml2.XMLHTTP.5.0", "Msxml2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"]);
}
return new ActiveXObject(GetXmlHttpRequest_AXO)
}
return false;
}
// Compatibilité avec le script du tutoriel AJAX (developpez.com)
getXhr=GetXmlHttpRequest;
/**
* Méthode qui sera appelée sur le click du bouton
*/
//requete1
function go(){
var xhr = getXhr();
xhr.onreadystatechange = function(){
if(xhr.readyState == 4 && xhr.status == 200){
leselect = xhr.responseText;
document.getElementById('designation').innerHTML = leselect;
}
}
xhr.open("POST","./ajax1.php",true);
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
sel = document.getElementById('Id_ref');
id_ref = sel.options[sel.selectedIndex].value;
des = document.getElementById('designation');
val_des = sel.options[des.selectedIndex].value;
xhr.send("Id_ref="+id_ref+"&designation="+val_des);
}
</script>
</head>
<body>
<form action="envoi_elec.php" method="post" enctype="multipart/form-data">
<legend>commande</legend><br><br>
<label>Ref</label>
<select name='ref' id='Id_ref' onchange='go();'>
<option value='ref_pdt'>reference</option>
<?php
//requete3
include ('connexion.php');
$res = mysql_query("SELECT * FROM ref_elec");
while($row = mysql_fetch_assoc($res)){
echo "<option value='".$row["ref_pdt"]."'>".$row["ref_pdt"]."</option>";
}
?>
</select>
<label>Des</label>
<div id='designation' style='display:inline'>
<select name='designation' id="designation">
<option value='designation'>designation</option>
</select>
</div>
<label> Nbre pièces </label>
<input type="text" name="piece" size="1">
<br><br>
<input type="submit" value="envoyer">
</form>
ajax1.php
Code : Tout sélectionner
<?php
//requete1
if(isset($_POST["Id_ref"])){
if ($db=mysql_connect($a,'$b','$c') ) {
if (mysql_select_db('$b',$db) ) {
$requete = 'SELECT des.id, des.des_pdt, des.Qte, des.Id_ref FROM ref_elec as ref
LEFT JOIN des_elec as des ON des.Id_ref = ref.id WHERE ref.ref_pdt = "' . mysql_escape_string($_POST['Id_ref']) . '"';
if ($res = mysql_query($requete) ) {
echo "<select name='designation'>";
while($row = mysql_fetch_assoc($res)){
echo "<option value='".$row["des_pdt"]."'>".$row["des_pdt"]."</option>";
}
echo "</select>";
}
if ($res = mysql_query($requete) ) {
echo ' <label> colis </label>';
echo "<select name='qte' id='designation'>";
while($row = mysql_fetch_assoc($res)){
echo "<option value='".$row["Qte"]."'>".$row["Qte"]. "</option>";
}
echo "</select>";
} else {
echo "Erreur de requête";
}
} else {
echo "Erreur sélection de base de données";
}
} else {
echo "Erreur de connexion mysql";
}
} else {
echo "Id_ref non défini";
}
?>
Posté : 25 juin 2008, 16:22
par guilt92
1ere erreur (de ma faute, désolé quand j'ai donné le bout de code)
Code : Tout sélectionner
sel = document.getElementById('Id_ref');
id_ref = sel.options[sel.selectedIndex].value;
des = document.getElementById("designation");
val_des = sel.options[des.selectedIndex].value;
xhr.send("Id_ref="+id_ref+"&designation="+val_des);
il faut mettre val_des =
des.options[des.selectedIndex].value; et non pas sel.
Sinon que t'affiche le message ?
essaye de faire un alert(""+xhr.responseText; ); pour voir ce que le code te renvoies aussi...
Posté : 25 juin 2008, 17:00
par ouzbek
j'ai changé merci!
moi mon plus j'avais pas vu l'erreur!
mais ca ne marche toujour pas et il me met toujours erreur sur la page!
et qd je met l'alerte plus rien ne marche.
Posté : 25 juin 2008, 17:06
par guilt92
C'est quoi l'erreur ??
Si tu mets un alert à la place de "leselect = xhr.responseText;" ca plante ?
je pense qu'il va falloir que tu fasse un debug progressif, d'abord tu fais dans ton ajax un simple echo "bonjour" et tu vois si l'alert de la reponse xhr est bonne, ensuite une fois que ca c'est bon tu construit au fur et à mesure...
Posté : 25 juin 2008, 18:44
par ouzbek
alors qd je met l'alert sans les modification que tu me demande, il m'affiche l'alert.
mais qd je rajoute les lignes que tu m'a donner il ne m'affiche plus rien
voila ou j'ai mis l'alert :
function go(){
var xhr = getXhr();
xhr.onreadystatechange = function(){
if(xhr.readyState == 4 && xhr.status == 200){
leselect = xhr.responseText;
document.getElementById('designation').innerHTML = leselect;
alert(leselect);
}
}
xhr.open("POST","./ajax1.php",true);
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
sel = document.getElementById('Id_ref');
id_ref = sel.options[sel.selectedIndex].value;
xhr.send("Id_ref="+id_ref);
}