| |||
llenar una lista a partir de un item escogido por el usuario expuse un tema hace poco pero aunque lo han leido varios nadie me ha respondido, el problema que tengo es que debo llenar una lista a partir de una seleccion hecha por un usuario lo habia diseñado con input radio, pero, vi una pagina con una dos listas, escogen una opcion en la primera (en mi caso tendría que llenarla a partir de datos de una tabla) y esta selección me serviría de filtro para la consulta que me llenaría la segunda, mi problema no son las conexiones a la bd, ni las instrucciones sino como realizar esta acción, supuestamente es con java script pero no se manipular datos y consultas con javascript solo con php, si alguien me puede ayudar se lo agradesco debido a que este problema me tiene parada hace 2 dias y todavia no encuentro solución gracias el codigo que tengo actualmente es: [PHP] <?php require_once('Connections/BD_Connect.php'); ?> <?php function Generar_Select(){ echo "<script language=\"JavaScript\">"; echo "var $Valor=document.emisionsol.OpcTipoCliente.value"; echo "var $query_RstClientes = \"SELECT * FROM clientes WHERE CodCliente = '$Valor'\""; echo "</script>"; echo "$query_RstClientes"; $RstClientes = mysql_query($query_RstClientes, $BD_Connect) or die(mysql_error()); echo "<select name=\"Clientes\">"; if ($row_RstClientes = mysql_fetch_assoc($RstClientes)){ while ($row_RstClientes = mysql_fetch_assoc($RstClientes)){ echo "<OPTION value=$row_RstClientes[CodCliente]>$row_RstClientes[Nombre]</OPTION>"; } } else { echo "<OPTION value=\"0\">\"No Existen Clientes Cargados o Seleccione el Tipo de cliente\"</OPTION>"; } echo"</select>";} ?> <?php require_once('Connections/BD_Connect.php'); $query_RSTTipoCliente = "SELECT * FROM tipodecliente ORDER BY CodTipoDeCliente ASC"; $RSTTipoCliente = mysql_query($query_RSTTipoCliente, $BD_Connect) or die(mysql_error()); $totalRows_RSTTipoCliente = mysql_num_rows($RSTTipoCliente); $query_RSTarea = "SELECT CodArea FROM areas ORDER BY CodArea ASC"; $RSTarea = mysql_query($query_RSTarea, $BD_Connect) or die(mysql_error()); $totalRows_RSTarea = mysql_num_rows($RSTarea); ?> <style type="text/css"> <!-- .Estilo1 { color: #003399; font-style: italic; font-weight: bold; } .Estilo5 { color: #004080; font-family: "Franklin Gothic Medium"; font-weight: bold; } --> </style> <p> </p> <form action="" method="post" name="emisionsol" id="emisionsol"> <table width="100%" height="100%" border="0"> <caption align="top"> <span class="Estilo1"><br> Emisión de Solicitudes </span> </caption> <tr> <td width="188" align="right" valign="middle"><p align="right" class="Estilo5"><em>AREA:</em></p></td> <td valign="middle"><div align="left"></div> <table width="200" height="100%" border="1" bordercolor="#F3F3F3"> <tr> <?php while ($row_RSTarea = mysql_fetch_assoc($RSTarea)){ echo "<td width=\"20\"><label>". "<input type=\"radio\" name=\"OpcArea\" value=$row_RSTarea[CodArea]>". "$row_RSTarea[CodArea]</label></td>"; } ?> </tr> </table></td> </tr> <tr> <td align="right" valign="middle"><div align="right"><em><span class="Estilo5">CLIENTE:</span></em></div></td> <td align="left" valign="middle"><div align="center"></div> <table height="100%" border="1" bordercolor="#F3F3F3"> <tr> <?php while ($row_RSTTipoCliente = mysql_fetch_assoc($RSTTipoCliente)){ echo "<td width=\"200\"><label>". "<input type=\"radio\" name=\"OpcTipoCliente\" value=$row_RSTTipoCliente[CodTipoDeCliente] onClick=\"DatosCliente()\" >". "$row_RSTTipoCliente[Nombre]</label></td>"; } ?> </tr> </table> </td> </tr> <tr> <td align="right" valign="middle"><div align="right"></div></td> <td align="center" valign="middle"> <div align="left"> <?php DatosCliente() ?> </div></td> </tr> <tr> <td align="right" valign="middle"><div align="right"></div></td> <td align="center" valign="middle"> </td> </tr> <tr> <td align="right" valign="middle"><div align="right"></div></td> <td align="center" valign="middle"> </td> </tr> <tr> <td align="right" valign="middle"><div align="right"></div></td> <td align="center" valign="middle"> </td> </tr> </table> </form> <?php mysql_free_result($RSTarea); mysql_free_result($RSTTipoCliente); mysql_free_result($RstClientes); ?> |
| ||||
Te rogaría que cuando postees código lo hafas entre las etiquetas de PHP para que se coloree y sea más sencillo de seguir. sobre tu pregunta, te recomiendo leer esta FAQ a ver si ahí se resuelve tu problema. http://www.forosdelweb.com/showthrea...608#post327608 Saludos |
| ||||
Ah.. y si nadie te responde, no creas que repitiendo tu pregunta N veces en temas diferentes alguien va a responderte... lo que te recomiendo en ese caso es que re-plantees la pregunta pero dentro del mismo tema. Lo digo por este post que citas: http://www.forosdelweb.com/s/msg181857.html Saludos |
| |||
ok a ver si se ve mejor Ok gracias por la recomendacion la verdad no sabia como hacer para que saliera coloreado el codigo: Código PHP: |
| |||
Lei tu sugerencia jPinedo me remiti a la FAQ que me recomendaste, Tema: Formularios+Mysql, y eso es mas o menos lo que quiero hacer con la diferencia que no quiero darle submit al formulario sino que cuando cambie primera lista o seleccionen una opcion (input type "radio" que es como lo tengo actualmente) se cargue la segunda sin darle submit al form, ya que el formulario (que ahora solo estoy empezandolo a hacer) es muy complejo y al final va a tener muchos campos, y segun explican ahi y hasta lo que yo se tendría que reasignarle los valores que ya habia escrito el usuario a cada input o variable y eso seria algo engorroso. Bueno la verdad es que soy nueva con esto y no se si lo que estoy planteando puede o no hacerse. espero respuestas u opciones |
| |||
Se puede hacer .. pero, debes genererar tu código javascript completo (supongo que llenado un par de arrays de javascrpt) desde PHP .. Es decir .. hacer tu consulta SQL a tus dos tablas y generar el código Javasscript de esos arrays+la gestion desde Javascript que implica. Si mal no recuerdo . .en este foro había un ejemplo (pero ahora no lo encuentro). Lo otro que puedes usar es lo que llaman "remote scripting" que se basa en iframes/frames ocultos y mucho javascript para hacer tus consultas a tus BD sin "recarga" aparente de la página (en realidad algo se recarga .. pero suele ser un iframe/frame oculto ..) Te dejo info sobre ese tema para que veas: http://www.ashleyit.com/rs/jsrs/select/php/select.php Un saludo,
__________________ Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo. |
| |||
y como hacer eso hola puchito, ya me habian dado en otro foro tu misma sugerencia del uso de javascript, actualmente lo tengo con input radio que creo tantas tipos de clientes alla tantos input creo, aunque ya me convenci a sustituirlos por una lista. el caso es que eso funciona bien el problema es lo que debo hacer cuando los seleccionan, es decir en el evento onchange (en el caso de que use una lista padre) o en el evento onclic (en el caso de que use input radio padres) para tomar esos valores sin haber hecho submit al form, porque ya logre que al hacer clic se llame a una funcion que tengo en un script pero, yo se como trabajar con mysql en php pero no en scripts java, entonces si se genera el evento y voy a la funcion pero hasta ahi llego y no se como capturar el valor seleccionado y como es la sintaxis (si es que se puede) para manipular consultas mysql en javascript, si pudieras tomarte un tiempito y observar el codigo que expuse arriba a ver |
| |||
AnaLezama ... Cuando se trabaja con Javascript y enventos .. tienes que "pre-cargar" tus datos (todos los posibles que intervengan) en los array's javascript o variables que correspondan .. Date cuenta que "javascript" se ejecuta en el cliente .. por ende requiere de TODOS los datos para poderlos "trabajarlos" en el cliente. Si tienes Base de datos extensas .. va a ser mucha carga para el cliente (navegador) . .dependerá de las características de ese PC que lo ejecute que tu código se deselvuelva con mayor soltura o se haga pesimo manejarlo. Para solventar estos problemas y "no recargar" la página de forma aparente .. Usa las técnicas del "remote scriptin" como veras en el ejemplo del link que dejé .. Un saludo,
__________________ Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo. |
| |||
Gracias!! Baje el codigo que esta en el link que me enviaste y lo estoy adaptando a mi sitio y esa es la solución que estaba buscando. si necesito otra ayuda les aviso. Gracias |