Comunidad de diseño web y desarrollo en internet online

Cargar variables

Citar            
MensajeEscrito el 09 Abr 2011 04:55 pm
Amigos tengo un gran lio, en estos momentos me encuentro realizando un sistema que gestiona reclamos en la web, estoy usando PHP, AJAX y MYSQL, a través de un formulario gestione el ingreso de información.
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.

Por zerojano

29 de clabLevel



 

chrome
Citar            
MensajeEscrito el 10 Abr 2011 05:08 am
En primer lugar, creo que editaste mucho el archivo select_ajax, y se te perdieron las variables XD
un claro ejemplo es que en el select, utilizas la variable $valor1
Pero esa variable la tienes comentada en la parte de arriba, y la unica variable antes a eso es $valor, probablemente te da un error la consulta sql y no lo has visto

saludos

Por sebifrost

61 de clabLevel



 

firefox
Citar            
MensajeEscrito el 10 Abr 2011 04:03 pm
te comento que e descomentado la variable pero nada...parece que lleva nada.

Por zerojano

29 de clabLevel



 

safari
Citar            
MensajeEscrito el 10 Abr 2011 05:35 pm
prueba lo siguiente, si le estas pasando por get los datos, entonces en la barra de direcciones, escribe la direccion completa de la pagina, por ejemplo


localhost/carpetaproyecto/select_ajax.php?rut=unvalor

luego ve el codigo fuente de esa pagina, si te devuelve las option, entonces el problema es en el javascript y no en el php

Por sebifrost

61 de clabLevel



 

firefox
Citar            
MensajeEscrito el 10 Abr 2011 11:40 pm
No se puede, tendré que declarar la variable en archivo js?.

Por zerojano

29 de clabLevel



 

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.