Foros del Web » Programando para Internet » PHP »

lista de seleccion con select * ......

Estas en el tema de lista de seleccion con select * ...... en el foro de PHP en Foros del Web. quiero hacer una lista de seleccion que liste los valores de una tabla en una base de datos segun la seleccion de otra lista. ejemplo ...
  #1 (permalink)  
Antiguo 19/04/2006, 16:16
 
Fecha de Ingreso: abril-2005
Ubicación: colombia
Mensajes: 242
Antigüedad: 19 años, 7 meses
Puntos: 0
lista de seleccion con select * ......

quiero hacer una lista de seleccion que liste los valores de una tabla en una base de datos segun la seleccion de otra lista.
ejemplo
tengo una lista de diferentes convenios que salen de una tabla cuando el usuario escoje el convenio deben salir los valores de el tipo de plan que estan en otra tabla. Como hago para obtener el value de la primera lista para luego hacer el select con ese valor para que desplieguen los valores en la segunda lista. Todo esto se debe hacer sin oprimir el boton submit.
ojala me entiendan

gracias
__________________
:aplauso: Ivomat
  #2 (permalink)  
Antiguo 19/04/2006, 21:53
Avatar de jmn2k1  
Fecha de Ingreso: noviembre-2001
Ubicación: Buenos Aires...
Mensajes: 489
Antigüedad: 23 años
Puntos: 2
Busca "listas dependientes" en el foro... ya lo contestaron varias veces.

Depende la cantidad de datos podrias cargar todo en arrays de javascript o refrescar la pagina (y mantener todos lo valores del formulario) al cambiar el "select".

Saludos.
__________________
JmN
  #3 (permalink)  
Antiguo 20/04/2006, 11:31
 
Fecha de Ingreso: abril-2005
Ubicación: colombia
Mensajes: 242
Antigüedad: 19 años, 7 meses
Puntos: 0
todos los que veo son con la opcion de form.submit yo no quiero que envie la forma si no con onChange y una funcion en javascript.

gracias
__________________
:aplauso: Ivomat
  #4 (permalink)  
Antiguo 20/04/2006, 11:46
 
Fecha de Ingreso: abril-2005
Ubicación: colombia
Mensajes: 242
Antigüedad: 19 años, 7 meses
Puntos: 0
<script>
function cargaPlan(){
var i; var i=0; var tam,x; tam=0;
var mis_planes= new Array(); var num_planes;
num_dptos=0;
<?php
$sql=mysql_query("select idplan from tb_plan where clinit = '$f_clinit' ");
while ($roww=mysql_fetch_array($sql)){?>
mis_planes[tam]='<?echo $roww['idPlan'];?>'
tam++;
<?php } ?>
num_planes=mis_planes.length;
if (num_planes>0){
document.forma_adicionar_beneficiario.f_benplan.le ngth = num_planes;
for(i=0;i<num_planes;i++){
document.forma_adicionar_beneficiario.f_benplan.op tions[i].value=mis_planes[i]
document.forma_adicionar_beneficiario.f_benplan.op tions[i].text=mis_planes[i]
}
}else{
document.forma_adicionar_beneficiario.f_benplan.le ngth = 1
document.forma_adicionar_beneficiario.f_benplan.op tions[0].value = "-"
document.forma_adicionar_beneficiario.f_benplan.op tions[0].text = "-"
}
}

Y LA LLAMO ACA
<SELECT NAME="f_clinit" class="campos" onchange="cargaPlan()">
<option value = "0">Seleccionar</option>
<?
$query_con = "SELECT clinit,razon_social FROM tb_convenio ORDER BY razon_social";
$result_con = mysql_query($query_con);
............................................

PERO NO me funciona la condicion del select no saca los valores siempre me saca son las lines " - " por defecto.

si alguien puede ayudarme en este error.
gracias
__________________
:aplauso: Ivomat
  #5 (permalink)  
Antiguo 20/04/2006, 11:52
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Cita:
Iniciado por ivomat
todos los que veo son con la opcion de form.submit yo no quiero que envie la forma si no con onChange y una funcion en javascript.

gracias
El ejemplo de esta FAQ:
http://www.forosdelweb.com/showthrea...999#post664999

Si te fijas bien . .es cierto que hace un "submit" del formulario .. Pero también se explica o podrás ver que se envian los datos al mismo script que contiene el formulario .. por supuesto con una evidente "recarga" de página .. pero es que PHP es así en su base. Ahí veras que no se procesa igual si el "submit" lo genera el evento de javascript o si pulsas el botón del formulario.

Si quieres soluciones que -no recarguen- la página . .ve soluciones por el lado del "Remote Scripting" o bien "Ajax" (tenemos un foro para tal fin .. visitalo).

Por lo demás .. esos temas de que si no usar un submit .. o si de tal evento .. es tema 100% de javascript el como capturaras esos datos, compondras un URL tal vez y los envies a tal script PHP . .Pero lo dicho, eso no es taréa de PHP sino de Javascript .. (revisa ese tema concreto en el foro adecuado).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #6 (permalink)  
Antiguo 20/04/2006, 11:52
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 19 años, 8 meses
Puntos: 33
Pues lo que haces no es correcto puesto que Javascript se ejecuta del lado del cliente y Php del lado del servidor.

Je quieras uno tienes que hacer uso de submit() o bien podrias usar AJAX.
  #7 (permalink)  
Antiguo 20/04/2006, 11:55
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Cita:
Iniciado por ivomat
<script>
function cargaPlan(){
var i; var i=0; var tam,x; tam=0;
var mis_planes= new Array(); var num_planes;
num_dptos=0;
<?php
$sql=mysql_query("select idplan from tb_plan where clinit = '$f_clinit' ");
while ($roww=mysql_fetch_array($sql)){?>
mis_planes[tam]='<?echo $roww['idPlan'];?>'
tam++;
<?php } ?>
num_planes=mis_planes.length;
if (num_planes>0){
document.forma_adicionar_beneficiario.f_benplan.le ngth = num_planes;
for(i=0;i<num_planes;i++){
document.forma_adicionar_beneficiario.f_benplan.op tions[i].value=mis_planes[i]
document.forma_adicionar_beneficiario.f_benplan.op tions[i].text=mis_planes[i]
}
}else{
document.forma_adicionar_beneficiario.f_benplan.le ngth = 1
document.forma_adicionar_beneficiario.f_benplan.op tions[0].value = "-"
document.forma_adicionar_beneficiario.f_benplan.op tions[0].text = "-"
}
}

Y LA LLAMO ACA
<SELECT NAME="f_clinit" class="campos" onchange="cargaPlan()">
<option value = "0">Seleccionar</option>
<?
$query_con = "SELECT clinit,razon_social FROM tb_convenio ORDER BY razon_social";
$result_con = mysql_query($query_con);
............................................

PERO NO me funciona la condicion del select no saca los valores siempre me saca son las lines " - " por defecto.

si alguien puede ayudarme en este error.
gracias
Te recomiendo una cosa:

Mira el código HTML/etc generado por la ejecución de ese script que presentas (en tu navegador ver-> código fuente) .. trata el tema como si ubieras usado datos "estáticos" (a mano colocados en el código que en definitiva eso es lo que hace PHP "dinámicamente": genera esa página para que el "cliente": navegador haga su parte).

Con ese código en la mano (recuerda: el que ves en tu navegador generado) te vas al foro de Javascirpt y expones el problema .. es probable que allá también te puedan ayudar, pues usas mucho javascript por médio ..

Si en el foro de javascript te comentan que el error es que .. te faltó una comilla .. o un salto de línea que usar, modifica el código PHP que lo genera.

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 20/04/2006, 12:00
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Cita:
Iniciado por mauled
Pues lo que haces no es correcto puesto que Javascript se ejecuta del lado del cliente y Php del lado del servidor.

Je quieras uno tienes que hacer uso de submit() o bien podrias usar AJAX.
Como no se vé todo el código en su contexto no sé si realmente pretende hacer eso o no ..

En principio lo que "parece" que está intentando hacer es generar con javascript todas las combinaciones que puedan resultar de cruzar todos los datos de esas dos tablas (una opción más ademas de "ajax" o de "sólo PHP").

Por eso mismo le indico que tome el código que genera y pregunte en el foro de "Javascirpt" para que le orienten por si es problema de ese código javascript en sí. Si se está generando mál .. una vez confirmado eso ya lo podrá solucionar si es algún detalle de parte de PHP.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #9 (permalink)  
Antiguo 20/04/2006, 12:05
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 19 años, 8 meses
Puntos: 33
Buen punto...
  #10 (permalink)  
Antiguo 20/04/2006, 14:51
 
Fecha de Ingreso: abril-2005
Ubicación: colombia
Mensajes: 242
Antigüedad: 19 años, 7 meses
Puntos: 0
estoy intentando hacer esto y tampoco me funciona
function Tupla ( campo1, campo2 )
{
this.campo1 = campo1;
this.campo2 = campo2;
}
<?php

$resultado2=mysql_query("select * from tb_plan ");
$cuenta=0;
$cen="basura";
while($campos=mysql_fetch_array($resultado2)){
if ($cen!=$campos[0]){
//cambio de centro, empiezo a contar en 0
$cuenta=0;
$cen=$campos[0];
//además tengo que crear un nuevo array para la categoría
?>
var opciones<?php echo $cen;?> = new Array();
<?php
}
?>
opciones<?php echo $cen?>[<?php echo $cuenta;?>]=new Tupla("<?php echo $campos[2];?>","<?php echo $campos[1];?>");
<?php
$cuenta++;
}
?>

var contador;
function ComponerLista (array) {
// Compone la lista dependiente a partir
// del valor de la opcion escogida en la lista padre
BorrarLista();
array = eval("opciones" + array);
for (contador=0; contador<array.length; contador++)
{
// añade elementos nuestro combobox
var optionObj = new Option( array[contador].campo1, array[contador].campo2 );
Listas.Medicos.options[contador] = optionObj;
} // for
} // ComponerLista
function BorrarLista() {
Listas.Medicos.length=0;
}
//Inicializamos
ComponerLista (1);
-->
</script>
<form method="post" name="Listas">
<b>Centro</b>
<SELECT NAME="f_clinit" class="campos" OnChange="ComponerLista(document.Listas.f_clinit[selectedIndex].value);">
<?
$query_con = "SELECT clinit,razon_social FROM tb_convenio ORDER BY razon_social";
$result_con = mysql_query($query_con);
$numrows_con = mysql_numrows($result_con);
$i=0;
while ($i < $numrows_con) {
$p_clinit_con = mysql_result($result_con,$i,"clinit");
$p_razon_con = mysql_result($result_con,$i,"razon_social");
?>
<OPTION VALUE="<? echo $p_clinit_con ?>" > <? echo $p_razon_con ?> </OPTION>
<?
++$i;
}
?>
</SELECT>
<b>Planes</b>
<select name="Medicos" size="1">
</select>
<input name="" type="submit">
</form>
__________________
:aplauso: Ivomat
  #11 (permalink)  
Antiguo 20/04/2006, 15:54
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Lamentablemente no puedes tirar un código y decir "no me funciona" .. por favor por lo menos indica que sucede .. como se comporta el código .. en fin .. aporta más detalles. Fijate que tu usas ahí "base de datos".. nosotros no estamos en condiciones de probar ese código como tu si lo puedes hacer!.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #12 (permalink)  
Antiguo 20/04/2006, 15:57
 
Fecha de Ingreso: abril-2005
Ubicación: colombia
Mensajes: 242
Antigüedad: 19 años, 7 meses
Puntos: 0
me salen los datos de la primera lista pero al seleccionar sobre esa la otra lista no se llena, no pasa nada.
gracias
__________________
:aplauso: Ivomat
  #13 (permalink)  
Antiguo 20/04/2006, 16:02
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Y algún error de javascript? (revisa tu navegador) .. Por qué con tanto javascript que usas .. podría ser cualquier cosa. (podrías tomar el código fuente generado y preguntar en el foro de Javascript ..)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 13:05.