Bonsoir messieurs! heureux de me joindre à vous
j'ai un problème un peu compliqué pour un débutant comme moi
j'ai une liste déroulante "produit" qui est liée à une bd Mysql via PHP
j'aimerai pas surcharger ma bd avec les données, et j'aimerai quand la liste affiche le nom d'un produit "X", une requette AJAX permettera de lister en bas la fiche technique du produit à partir d'un fichier XML
la liste est correctement liée à la table correspondante, le problème se pose au niveau du "onchange :", qui empeche le résultat de la requette JS de s'afficher en bas
merci d'avance pour votre assistance, j'en serai reconnaissant
voilà mon code

index.php

----------------------------------------
............................
Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
 
<head> 
<script type="text/javascript" src="responsexml.js"></script> 
 
<title>catalogue</title> 
 
</head> 
............................... 
* Cération de la requête pour avoir la liste des produits */ 
$sql3 = "SELECT `idpd`, `nompd`". 
" FROM `produit`". 
" WHERE `idtype` = ". $idr2 ."". 
" ORDER BY `idpd`;"; 
 
if($connexion != false) 
{ 
$rech_pd = mysql_query($sql3, $connexion); 
/* Un petit compteur pour les départements */ 
$nd1 = 0; 
/* On crée deux tableaux pour les numéros et les noms des produits */ 
$code_pd = array(); 
$nom_pd = array(); 
 
/* On va mettre les numéros et noms des produits dans les deux tableaux */ 
while($ligne_pd = mysql_fetch_assoc($rech_pd)) 
{ 
array_push($code_pd, $ligne_pd['idpd']); 
array_push($nom_pd, $ligne_pd['nompd']); 
$nd1++; 
} 
/* Maintenant on peut construire la liste déroulante */ 
?> 
// (c'est cette ligne qui pose problème) 
<select name="produit" id="produit" onChange="showPP('this.value')>
<option value="-1">- - - précisez produit - - -</option> 
<?php 
for($p = 0; $p<$nd1; $p++) 
{ 
?> 
<option value="<?php echo($code_pd[$p]); ?>"<?php echo((isset($pd_selectionne) && $pd_selectionne == $code_pd[$p])?" selected=\"selected\"":null); ?>><?php echo($nom_pd[$p]); ?></option> 
<?php 
} 
?> 
</select>
---------------------------------------------------
responsexml.js

--------------------------------------------------------------
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
 
var xmlhttp 
 
function showPP(str) 
{ 
xmlhttp=GetXmlHttpObject(); 
if (xmlhttp==null) 
{ 
alert ("Your browser does not support AJAX!"); 
return; 
} 
var url="responsexml.php"; 
url=url+"?q="+str; 
url=url+"&sid="+Math.random(); 
xmlhttp.onreadystatechange=stateChanged; 
xmlhttp.open("GET",url,true); 
xmlhttp.send(null); 
} 
 
function stateChanged() 
{ 
if (xmlhttp.readyState==4) 
{ 
document.getElementById("txtHint").innerHTML=xmlhttp.responseText; 
} 
} 
 
function GetXmlHttpObject() 
{ 
if (window.XMLHttpRequest) 
{ 
// code for IE7+, Firefox, Chrome, Opera, Safari 
return new XMLHttpRequest(); 
} 
if (window.ActiveXObject) 
{ 
// code for IE6, IE5 
return new ActiveXObject("Microsoft.XMLHTTP"); 
} 
return null; 
}
-------------------------------------------------------
responsexml.php
------------------------------------------------
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
 
 
<?php 
$q=$_GET["q"]; 
 
$xmlDoc = new DOMDocument(); 
$xmlDoc->load("pd_catalog.xml"); 
 
$x=$xmlDoc->getElementsByTagName('NOM_PRODUIT'); 
 
for ($i=0; $i<=$x->length-1; $i++) 
{ 
//Process only element nodes 
if ($x->item($i)->nodeType==1) 
{ 
if ($x->item($i)->childNodes->item(0)->nodeValue == $q) 
{ 
$y=($x->item($i)->parentNode); 
} 
} 
} 
 
$pp=($y->childNodes); 
 
for ($i=0;$i<$pp->length;$i++) 
{ 
//Process only element nodes 
if ($pp->item($i)->nodeType==1) 
{ 
echo("<b>" . $pp->item($i)->nodeName . ":</b> "); 
echo($pp->item($i)->childNodes->item(0)->nodeValue); 
echo("<br />"); 
} 
} 
?>
------------------------------------------