Mis tablas MYSQL:
REGISTROS: Id_reg – Run – id_tipo – nom_tipo – nombres – apaterno - amaterno
MAQUINAS: id_maq – id_tipo – Run - Maquina
Posteriormente en el formulario cargo la información del registro al cual se quiere ingresar un reclamo, cargando a su vez un select padre esto lo realizo mediante un código AJAX que almacena los id_tipo con la siguiente sentencia:
Código PHP :
[b]Archivo: addreclamo.php[/b] $rut=htmlspecialchars(trim($_GET['rut'])); $coneccion=mysql_connect("localhost", "root", "clave") or die(mysql_error()); mysql_select_db("sistemareclamos", $coneccion) or die(mysql_error()); $consulta=mysql_query("SELECT id_tipo,nom_tipo FROM registros WHERE rut='".$rut."' GROUP BY nom_tipo"); echo "<select class='combo' id='select_0' name='ciudades' onChange='return(cargaContenido() && infoBox(this.form));' >", "<option value=''>Selecciona tipo...</option>"; while($registro=mysql_fetch_row($consulta)) { echo "<option value='".$registro[0]."'>".$registro[1]."</option>"; } echo "</select>"; }
Luego deseo cargar en un Select hijo dependiente del padre.Las maquinas correspondientes al registros, estas pueden ser N maquinas, en el siguiente código muestro como las cargas:
Código PHP :
Archivo: select_ajax.php <?php $valor=$_GET["seleccionado"]; //$valor1=$_GET["rut"]; // Si el numero corresponde a un codigo de pais valido paso a procesar //$rut=htmlspecialchars(trim($_POST['rut'])); $coneccion=mysql_connect("localhost", "root", "clave") or die(mysql_error()); mysql_select_db('sistemareclamos', $coneccion) or die(mysql_error()); // Genero la consulta trayendo todos los estados que correspondan al codigo de pais elegido $consulta=mysql_query("SELECT id_maq,patente FROM maquina WHERE id_tipo='$valor' AND rut='".$valor1."'"); // Comienzo a imprimir el select echo "<select class='combo' id='select_1' name='comunas'>"; while($registro=mysql_fetch_row($consulta)) { $registro[1]=htmlentities($registro[1]); // Imprimo las opciones del select echo "<option value='".$registro[0]."'>".$registro[1]."</option>"; } echo "</select>"; ?>
Y el código del archivo AJAX es el siguiente:
Código Javascript :
Archivo select_dependientes.js function nuevoAjax() { /* Crea el objeto AJAX. Esta funcion es generica para cualquier utilidad de este tipo, por lo que se puede copiar tal como esta aqui */ var xmlhttp=false; try { // Creacion del objeto AJAX para navegadores no IE xmlhttp=new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) { try { // Creacion del objet AJAX para IE xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } catch(E) { xmlhttp=false; } } if (!xmlhttp && typeof XMLHttpRequest!='undefined') { xmlhttp=new XMLHttpRequest(); } return xmlhttp; } function cargaContenido() { var valor=document.getElementById("select_0").options[document.getElementById("select_0").selectedIndex].value; if(valor==0) { // Si el usuario eligio la opcion "Elige", no voy al servidor y pongo todo por defecto combo=document.getElementById("select_1"); combo.length=0; var nuevaOpcion=document.createElement("option"); nuevaOpcion.value=0; nuevaOpcion.innerHTML="Selecciona patente..."; combo.appendChild(nuevaOpcion); combo.disabled=true; } else { ajax=nuevoAjax(); ajax.open("GET", "select_ajax.php?seleccionado="+valor, true); //ajax.open("GET", "select_ajax.php?selec="+valor1, true); ajax.open("GET", valor1); ajax.onreadystatechange=function() { if (ajax.readyState==1) { // Mientras carga elimino la opcion "Elige pais" y pongo una que dice "Cargando" combo=document.getElementById("select_1"); combo.length=0; var nuevaOpcion=document.createElement("option"); nuevaOpcion.value=0; nuevaOpcion.innerHTML="Cargando..."; combo.appendChild(nuevaOpcion); combo.disabled=true; } if (ajax.readyState==4) { document.getElementById("fila_2").innerHTML=ajax.responseText; } } ajax.send(null); } }
La finalidad de cargar en los Select anidados funciona, pero estoy intentando filtrar la información que se muestra en el Select hijo donde se muestran las maquinas, ya que cuando selecciono el Select debería mostrarme solo las maquinas asociadas a ese Run y no todas las de la Tabla Registros, he intentado enviar la variable de la primera pagina mediante el método GET a el archivo select_ajax.php pero no me carga nada en el segundo select, es porque no tiene nada la variable, nose como puedo solucionar este problema amigos.
Saludos a todos ojala me puedan dar alguna pista a mi problema.