Foros del Web » Programando para Internet » PHP »

llenar una lista a partir de un item escogido por el usuario

Estas en el tema de llenar una lista a partir de un item escogido por el usuario en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 10/02/2004, 15:48
 
Fecha de Ingreso: enero-2004
Ubicación: Maturin
Mensajes: 54
Antigüedad: 20 años, 10 meses
Puntos: 1
Exclamación 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>&nbsp;</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">&nbsp;</td>
</tr>
<tr>
<td align="right" valign="middle"><div align="right"></div></td>
<td align="center" valign="middle">&nbsp;</td>
</tr>
<tr>
<td align="right" valign="middle"><div align="right"></div></td>
<td align="center" valign="middle">&nbsp;</td>
</tr>
</table>
</form>


<?php
mysql_free_result($RSTarea);

mysql_free_result($RSTTipoCliente);

mysql_free_result($RstClientes);
?>
  #2 (permalink)  
Antiguo 10/02/2004, 16:06
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 21 años, 2 meses
Puntos: 41
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
  #3 (permalink)  
Antiguo 10/02/2004, 16:09
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 21 años, 2 meses
Puntos: 41
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
  #4 (permalink)  
Antiguo 11/02/2004, 06:47
 
Fecha de Ingreso: enero-2004
Ubicación: Maturin
Mensajes: 54
Antigüedad: 20 años, 10 meses
Puntos: 1
Pregunta 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:
<?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>&nbsp;</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">&nbsp;</td>
    </tr>
    <tr>
      <td align="right" valign="middle"><div align="right"></div></td>
      <td align="center" valign="middle">&nbsp;</td>
    </tr>
    <tr>
      <td align="right" valign="middle"><div align="right"></div></td>
      <td align="center" valign="middle">&nbsp;</td>
    </tr>
  </table>
</form>


<?php
mysql_free_result
($RSTarea);

mysql_free_result($RSTTipoCliente);

mysql_free_result($RstClientes);
?>
  #5 (permalink)  
Antiguo 11/02/2004, 07:21
 
Fecha de Ingreso: enero-2004
Ubicación: Maturin
Mensajes: 54
Antigüedad: 20 años, 10 meses
Puntos: 1
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
  #6 (permalink)  
Antiguo 11/02/2004, 07:36
Avatar de puchitol  
Fecha de Ingreso: diciembre-2003
Ubicación: ELCHE
Mensajes: 322
Antigüedad: 20 años, 11 meses
Puntos: 0
Hola,
creo que lo que planteas no se puede hacer sin darle al submit en PHP, me explico, si quieres que al seleccionar de la primera lista se actualice la segunda sin darle a submit, deberias utilizar javascript. Los datos de la segunda lista se meterian en arrays de javascript y segun el valor de la primera lista se mostraria un array u otro.
Por otro lado, si quieres usar solo PHP, necesitas crear la primera lista a partir de consultas a la BD, seleccionar de esa lista, darle a submit, y una vez enviado el formulario tomar el dato seleccionado de esa primera lista (en otra pagina o en la misma) y tomarlo como dato para consultar en la BD para la segunda lista. En este caso, ya crearias la segunda lista a partir del dato de la primera, pero INSISTO, es necesario hacer submit en la primera lista.

espero que me hayas entendido.

un saludo.
__________________
If you think fuck is funny, fuck yourself and save your money,
espero que entendais la moraleja... je, je, je
  #7 (permalink)  
Antiguo 11/02/2004, 07:49
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
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.
  #8 (permalink)  
Antiguo 11/02/2004, 07:53
 
Fecha de Ingreso: enero-2004
Ubicación: Maturin
Mensajes: 54
Antigüedad: 20 años, 10 meses
Puntos: 1
Pregunta 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

  #9 (permalink)  
Antiguo 11/02/2004, 08:20
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
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.
  #10 (permalink)  
Antiguo 12/02/2004, 06:52
 
Fecha de Ingreso: enero-2004
Ubicación: Maturin
Mensajes: 54
Antigüedad: 20 años, 10 meses
Puntos: 1
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
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:30.