tengo un problema con PHP i AJAX, os cuento.
Tengo una página web con 3 desplegables. En función de lo que escojo en el primero, me tienen que salir unas opciones en el segundo, y en función de lo que escoja en el segundo me tienen que salir unas opciones en el tercero. Estas opciones las consulto en mi base de datos y eso me funciona correctamente.
El orden de los ficheros es el siguiente:
1 -> 2 -> 3
html_ejemplo.php -> get_user.php -> get_user2.php
Os los copio a continuación:
html_ejemplo.php
Código PHP:
Ver original
<html> <head> <script> function showUser(str, str2) { if (str=="") { document.getElementById("txtHint").innerHTML=""; return; } if (window.XMLHttpRequest) { xmlhttp=new XMLHttpRequest(); // code for IE7+, Firefox, Chrome, Opera, Safari } else { xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); // code for IE6, IE5 } xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById("txtHint").innerHTML=xmlhttp.responseText; } } xmlhttp.open("GET","get_user.php?q="+str+"&q2="+str2,true); xmlhttp.send(); } </script> </head> <body> <form> <select name="users" onchange="showUser(this.value, 3)"> <option value="">Escoger:</option> <option value="1">Proyecto 1</option> <option value="2">Proyecto 2</option> <option value="3">Proyecto 3</option> <option value="22">Proyecto 22</option> </select> </form> <br> <p id="txtHint">-</p> </body> </html>
get_user.php
Código PHP:
Ver original
<html> <head> <script> function showUser2(str, str2) { if (str=="") { document.getElementById("txtHint").innerHTML=""; return; } if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else { // code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById("txtHint").innerHTML=xmlhttp.responseText; } } xmlhttp.open("GET","get_user2.php?q3="+str+"&q4="+str2,true); xmlhttp.send(); } </script> </head> <body> <?php require("connBD.php"); $sqla = "select ... ...'"; echo "q2: ".$q2; echo '<select name="resul_'.$q2.'" id="resul_'.$q2.' onchange="showUser2(this.value, 3)">'; $id = $rowa['id']; echo "<option id=".$id.">".$rowa['nom']."</option>"; } echo '</select>'; ?> <p id="txtHint">-</p>
get_user2.php
Código PHP:
Ver original
<?php require("connBD.php"); $sqla = "select ..."'"; $resultado2 = mysql_query($sqla); echo "q4: ".$q4; echo '<select name="resul_'.$q4.'" id="resul_'.$q4.'">'; while($rowa = mysql_fetch_assoc($resultado2)) { $id_3 = $rowa['id']; echo "<option id=".$id_3.">".$rowb['nom_2']."</option>"; } } echo '</select>'; ?>
Entonces,... el funcionamiento de 1 a 2 va bien, pero de 2 a 3 no. Si modifico algunos parámetros y pruebo de 1 a 3 también me funciona correctamente.
Las variables q2 y q4 están ahí porqué este trozo de código, cuando funcione, tiene que ir dentro de un bucle ya que tengo varios desplegables en una misma página.
Alguien puede ver el error?
Muchas gracias!!