Foros del Web » Programando para Internet » PHP »

al ejecutar un select me despliege campos de una tabla Mysql

Estas en el tema de al ejecutar un select me despliege campos de una tabla Mysql en el foro de PHP en Foros del Web. Hola amigos, tengo la siguiente duda, pero no se si se hace con javascript o con php, tengo un select el cual estan los nombres ...
  #1 (permalink)  
Antiguo 20/03/2006, 16:44
 
Fecha de Ingreso: julio-2005
Mensajes: 44
Antigüedad: 12 años, 4 meses
Puntos: 0
al ejecutar un select me despliege campos de una tabla Mysql

Hola amigos, tengo la siguiente duda, pero no se si se hace con javascript o con php, tengo un select el cual estan los nombres de tablas que tengo en MySql, y necesito hacer que al presionar una opcion de esta select aparezca otra select que despliege los campos de la tabla que seleccione, alguien tiene algun ejemplo o algun indicio para comenzar a hacer esto ????
De antemano gracias por todo su apoyo !!!!!
  #2 (permalink)  
Antiguo 21/03/2006, 00:13
Avatar de silvanha  
Fecha de Ingreso: marzo-2006
Ubicación: En mi mundo de sueños
Mensajes: 652
Antigüedad: 11 años, 8 meses
Puntos: 65
Sonrisa si se puede!!

hola!.. de hecho yo tuve ese problema, pero me encontre la solucion en la pagina de desarrollo web, de hecho lo puedes hacer en javascript, php o incluso en ASP.. solo recuerda de que lado quieres trabajar si del lado del usuario o del servidor..

no te puedo agregar los links, pero te transcribo lo que dice el articulo:

En este ejemplo, se trabajará con dos selects:

- Uno de países
- Otro de provincias o comunas

Para empezar, tenemos que tener 2 tablas:

-Países, con un campo id_pais y un campo país con el nombre del mismo (si lo quieren hacer bilingüe le agregan un campo pais_i con el nombre del país en inglés).
-Provincias, con un campo id_prov, otro id_pais donde colocan el id del país al que corresponde esa provincia y un campo prov con el nombre de la misma (idem al anterior si lo quieren hacer en inglés).

Básicamente hay que usar 2 páginas. La pagina1.php en la cual está el formulario, ahí vamos a poner el nombre de quien llena el formulario (sólo a efectos de mostrar como queda el formulario cuando tiene más campos a completar), también vamos a elegir el país. Si es la primera vez que abrimos el formulario el campo del nombre va a quedar vacío y en el combobox del país sólo va a decir: seleccione el país, y el combobox de las provincias ni va a aparecer.

Apenas comienza el script le damos a la variable $paisant el mismo valor que $pais. Ya que la segunda variable no está todavía declarada, el valor de la primera será también nulo.

En el combobox del país, le damos una orden en javascript, que básicamente dice que al cambiar la opción del combobox, se envíe el formulario a la pagina2.php (para que funcione esta orden de javascript, hay que dejar como figura la orden de submit del form).

En la pagina2.php lo primero que vamos a corroborar es que $paisant y $pais sean iguales.
$paisant era nulo, pero $pais tuvo un nuevo valor, el valor del id_ del país que tomó al haber elegido el nuevo país en el combobox.

Al ser distintas las dos variables, volvemos a la pagina1.php enviando todos los valores ya elegidos en el form. Ahí se vuelve a declarar la variable $paisant que esta vez toma el valor del país previamente elegido, ya que $pais no es nulo, sino que vale id_pais.

Esta vez, debido a que $pais tiene un valor diferente a cero, mostramos el combobox de las provincias.


*** PAGINA1.PHP ***


<html>
<html>
<head>
<title>pagina1.php</title>
</head>

<body>
<form method="post" action="pagina2.php">

<table width="70%" border="0" align="center">
<?php
// Me conecto a la base de datos
mysql_connect("localhost","root","");
mysql_select_db("nombre_de_la_base");

// Declaro la variable $paisant que es la que me va a indicar si hay que volver a cargar los datos de las provincias
$paisant=$pais;

print ("
<tr>
<td><div align=\"right\"><strong>Nombre y Apellido:</strong></div></td>
<td> <input type=\"text\" name=\"nombre\" value=\"$nombre\"></td>
</tr>

<input type=\"hidden\" name=\"paisant\" value=\"$paisant\">

<tr>
<td><div align=\"right\"><strong>Pais:</strong></div></td>
<td><select name=\"pais\" onchange=\"submit();\">
");
//Muestra el combobox de las provincias una vez que se haya elegido el país, no antes
if (!isset($pais)){
print ("<option selected>Seleccione el pais</option>");
$pais="0";
}

$sql="select * from paises order by 2";
$res=mysql_query($sql);

while($fila=mysql_fetch_array($res)){
print("<option value=\"$fila[id_pais]\"");
if ($fila[id_pais] == $pais) {
print ("selected");
}
print(">$fila[pais]</option>\n");
}
print("</select></td></tr>");

if ($pais!="0"){
print("
<tr>
<td><div align=\"right\"><strong>Provincia:</strong></div></td>
<td><select name=\"prov\">
");

$sqlprov="select * from provincias where id_pais='$pais' order by 2";
$resprov=mysql_query($sqlprov);

while($filaprov=mysql_fetch_array($resprov)){
print("<option value=\"$filaprov[id_prov]\">$filaprov[prov]</option>");
}
print("
</select>
</td>
</tr>
");
}
?>
<tr>
<td><div align="right"><input name="button" type="submit" value="Enviar"></div></td>
<td><input name="reset" type="reset" value="Borrar"></td>
</tr>
</table>

</form>

</body>
</html>


*** PAGINA2.PHP ***


<?php

if ($paisant!=$pais) {
header("location:pagina1.php?nombre=$nombre&pais=$ pais");
}
else {
// Ingreso de datos a la base de datos
}
?>

Si lo necesitas en javascript, seria algo asi:

Para empezar, vamos a utilizar un formulario con dos selects, uno para el país y otro para la provincia.

<form name="f1">
<select name=pais onchange="cambia_provincia()">
<option value="0" selected>Seleccione...
<option value="1">España
<option value="2">Argentina
<option value="3">Colombia
<option value="4">Francia
</select>

<select name=provincia>
<option value="-">-
</select>
</form>

Nos fijamos en el select asociado al país de este formulario que, cuando se cambia la opción de país, se debe llamar a la función cambia_provincia(). Veremos más adelante esta función, ahora es importante fijarse que está asociada al evento onchange que se activa cuando cambia la opción en el select.

Todo lo demás será código Javascript. Empezamos definiendo un montón de arrays con las provincias de cada país. En este caso tenemos sólo 4 países, entonces necesitaré 4 arrays. En cada array tengo la lista de provincias de cada país, colocada en cada uno de los elementos del array. Además, dejaré una primera casilla con un valor "-" que indica que no se ha seleccionado ninguna provincia.

var provincias_1=new Array("-","Andalucía","Asturias","Baleares","Canarias","Ca stilla y León","Castilla-La Mancha","...")
var provincias_2=new Array("-","Salta","San Juan","San Luis","La Rioja","La Pampa","...")
var provincias_3=new Array("-","Cali","Santamarta","Medellin","Cartagena","..." )
var provincias_4=new Array("-","Aisne","Creuse","Dordogne","Essonne","Giron de ","...")

Hay que fijarse que los índices del array de cada país se corresponden con los del select del país. Por ejemplo, la opción España, tiene el valor asociado 1 y el array con las provincias de España se llama provincias_1.

El script se completa con una función que realiza la carga de las provincias en el segundo select. El mecanismo realiza básicamente estas acciones:

Detecto el país que se ha seleccionado
Si el valor del país no es 0 (el valor 0 es cuando no se ha seleccionado país)
Tomo el array de provincias adecuado, utilizando el índice del país.
Marco el número de opciones que debe tener el select de provincias
Para cada opcion del select, coloco su valor y texto asociado, que se hace corresponder con lo indicado en el array de provincias.
SI NO (El valor de país es 0, no se ha seleccionado país)
Coloco en el select de provincia un único option con el valor "-", que significaba que no había provincia.
Coloco la opción primera del select de provincia como la seleccionada.
La función tiene el siguiente código. Está comentado para que se pueda entender mejor.

function cambia_provincia(){
//tomo el valor del select del pais elegido
var pais
pais = document.f1.pais[document.f1.pais.selectedIndex].value
//miro a ver si el pais está definido
if (pais != 0) {
//si estaba definido, entonces coloco las opciones de la provincia correspondiente.
//selecciono el array de provincia adecuado
mis_provincias=eval("provincias_" + pais)
//calculo el numero de provincias
num_provincias = mis_provincias.length
//marco el número de provincias en el select
document.f1.provincia.length = num_provincias
//para cada provincia del array, la introduzco en el select
for(i=0;i<num_provincias;i++){
document.f1.provincia.options[i].value=mis_provincias[i]
document.f1.provincia.options[i].text=mis_provincias[i]
}
}else{
//si no había provincia seleccionada, elimino las provincias del select
document.f1.provincia.length = 1
//coloco un guión en la única opción que he dejado
document.f1.provincia.options[0].value = "-"
document.f1.provincia.options[0].text = "-"
}
//marco como seleccionada la opción primera de provincia
document.f1.provincia.options[0].selected = true
}


Espero te sirvaaa!!... Cuidate!!..
  #3 (permalink)  
Antiguo 31/03/2006, 09:28
 
Fecha de Ingreso: julio-2005
Mensajes: 44
Antigüedad: 12 años, 4 meses
Puntos: 0
De acuerdo gracias

Gracias silvanha, me dejaste mas que claro como debia partir lo que pennsaba hacer, mil gracias por iluminarme..
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 18:53.