Foros del Web » Programando para Internet » PHP »

kilombo de selects

Estas en el tema de kilombo de selects en el foro de PHP en Foros del Web. tengo una base de datos mysql con 1 unica tabla. uno de esos campos guarda nombre de ciudades. resulta que las ciudades almacenadas son las ...
  #1 (permalink)  
Antiguo 12/01/2004, 14:16
Avatar de pereztroff  
Fecha de Ingreso: junio-2002
Ubicación: En la Internet.
Mensajes: 4.068
Antigüedad: 22 años, 5 meses
Puntos: 5
kilombo de selects

tengo una base de datos mysql con 1 unica tabla. uno de esos campos guarda nombre de ciudades. resulta que las ciudades almacenadas son las mismas: Madrid, Barcelona, Sevilla, Valencia.

la pregunta:
¿como hago para que desde un formulario con select (creo que alguno lo llama combo) para que dependiendo del valor selecionado realice una consulta a la bb.dd. y saque otro con todos los registros cuyo campo ciudad coincida con la seleccion anterior, en este segundo solo saldra un campo determinado.

Gracias.
  #2 (permalink)  
Antiguo 12/01/2004, 14:52
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Pero .. esas ciudades están en tu única tabla? (deberías "normalizar" tu BD usan una tabla extra con los nombres de ciudades posibles a elegir ...)

Para el SELECT (SQL) del select HTML .. deberías hacer una consulta sobre ese campo que sean "distintos":

Código PHP:
$sql="SELECT DISTINTC ciudades,etc campos si necesitas FROM tabla"
(ahora no recuerdo si se escribe DISTINCT o DISTINTC .. visita www.mysql.com para confirmarlo).

Y de esa ciudad .. la consulta sería "condicional" usando WHERE al campo y dato que requieres .. tipo:

Código PHP:
$sql="SELECT * FROM tabla WHERE ciudad='".$_POST['ciudad']."'"
Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 12/01/2004 a las 14:53
  #3 (permalink)  
Antiguo 12/01/2004, 15:07
Avatar de pereztroff  
Fecha de Ingreso: junio-2002
Ubicación: En la Internet.
Mensajes: 4.068
Antigüedad: 22 años, 5 meses
Puntos: 5
los campos de la tabla son: ciudad, descripcion, , habitantes,foto

todos los registros tiene una de las ciudades que comente antes.

entonces dependiendo del nombre de ciudad seleccionado saque otro formulario select con tantas opciones como registros que cumplan dicha condicion.

¿si? me explique ahora mejor?

gracias nuevamente.
  #4 (permalink)  
Antiguo 12/01/2004, 15:12
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Pues te haces un select HTML normal con esas opciones en un formulario y mandas a ejecutar nua consulta tipo:

$sql="SELECT * FROM tabla WHERE ciudad='".$_POST['ciudad']."'";

Se entiende?

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 12/01/2004, 16:03
Avatar de pereztroff  
Fecha de Ingreso: junio-2002
Ubicación: En la Internet.
Mensajes: 4.068
Antigüedad: 22 años, 5 meses
Puntos: 5
entiendo mas o menos.
ahora del resltado de esa consulta, ¿como meto los valores de un campo en otro formulario tipo select?

imaginemos que la ciudad seleccionada es Madrid, y nos da como resultado 40 registros, como meto el campo x en otro formulario de ese mismo tipo?

quiero que cualquier usuario pueda seleccionar una opcion y salga definitivamente todos los campos de ese registro.

Todo el kilombo se debe a falta de espacio en la pantalla, para no tener que listar 40 links, uno por cada registro.

¿hay por ahi algun ejemplo para echar un vistazo?

gracias again.
  #6 (permalink)  
Antiguo 12/01/2004, 16:32
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
En las FAQ's tienes ejemplos que obtienen datos de una consulta SQL (Mysql) y generan un select HTML ..

pero si te fijas bien .. y ya sabes hacer un "SELECT" SQL y obtener sus datos .. ¿que te hará falta .. ?

Te refresco la memoria con HTML

<select name="ciudad">
<option value="nose">nose</option>
etc...
</select>

Ese "option" es el que tienes que generar dinámicamente a partir de los datos de tu consulta. Intentalo .. no es dificil.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 13/01/2004, 02:03
Avatar de pereztroff  
Fecha de Ingreso: junio-2002
Ubicación: En la Internet.
Mensajes: 4.068
Antigüedad: 22 años, 5 meses
Puntos: 5
tengo error, pero voy bien?
<body>
<form action="" method="get">
<select name="ciudad" size="1">
<option selected>Madrid</option>
<option>Sevilla</option>
</select>
Código PHP:
  <?php $con mysql_connect("localhost""xxxx""xxxxx")or die("Connect Error: ".mysql_error());
$db="xxxxxxxxxx";
mysql_select_db($db$con)or die("Connect Error: ".mysql_error());

$result mysql_db_query($db,"select * from patrimonio WHERE ciudad='".$_POST['municipio']."'";

while (
$row mysql_fetch_array($result)) {
if(
$row['municipio'] == ciudad)
                echo
"<option value=\"$row[municipio]\" SELECTED>$row[municipio]</option>\n";
            
        }

        
?>
</form>
</body>
  #8 (permalink)  
Antiguo 13/01/2004, 06:45
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Pero vamos a ver ..

que quieres hacer?

Tener ese select HTML con esas 3 ciudades .. seleccionar una y que te muestre los registros que coincida el campo "ciudad" con lo que selecciones en ese select HTML ?

Es eso?

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 13/01/2004, 07:19
Avatar de pereztroff  
Fecha de Ingreso: junio-2002
Ubicación: En la Internet.
Mensajes: 4.068
Antigüedad: 22 años, 5 meses
Puntos: 5
exacto cluster.
  #10 (permalink)  
Antiguo 13/01/2004, 07:31
 
Fecha de Ingreso: diciembre-2003
Ubicación: Zaragoza
Mensajes: 30
Antigüedad: 20 años, 11 meses
Puntos: 0
Yo lo haría creando una funcion JavaScript que actúa en el onChange del Select original. Esta función convertiría el array de los resultados de PHP en una array de javascript y los añadiría al segundo Select.
La función de JavaScript sería:

function Lloc_change() {
var est = new Array("<?php echo join('","',$estac); ?>"); //creamos el array de Javascript tomando los valores del de php
num_est = est.length; //calculamos la longitud del array para el tamaño del select

if (document.form1.lloc.value == "estacio") {
document.form1.nomlloc.disabled=false;
document.form1.nomlloc.length = num_est;
for(i=0;i<num_est;i++){
document.form1.nomlloc.options[i].value=est[i];
document.form1.nomlloc.options[i].text=est[i];
}

Espero que te sirva. Un saludo,
  #11 (permalink)  
Antiguo 13/01/2004, 07:32
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Pues .. entonces para que estás haciendo:

if($row['municipio'] == ciudad)
echo"<option value=\"$row[municipio]\" SELECTED>$row[municipio]</option>\n";


No tendrás que hacer un "echo" a tus $row['municipio'] etc y demás datos de ese(os) registro(s) que quieres mostrar?.



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 13/01/2004, 07:44
Avatar de pereztroff  
Fecha de Ingreso: junio-2002
Ubicación: En la Internet.
Mensajes: 4.068
Antigüedad: 22 años, 5 meses
Puntos: 5
los campos de la tabla son: nficha, polacion, descripcion, habitantes,foto

los datos de la tabla:
Ma-01, Madrid, barrio xxxx, 500000, Ma-01.jpg
Se-01, Sevilla, barrio zzzzz, 60000, Se-01.jpg
Ma-02, Madrid, barrio bbbbb, 500000, Ma-02.jpg
Va-01, Valencia, barrio tttttt, 500000, Va-01.jpg
Ba-01, Barcelona, barrio hhhhhh, 5000, Ba-01.jpg
.......
...........

entonces partiendo de ahi habra una lista desplegable que permita seleccionar el nombre de cualquier ciudad: Madrid, Sevilla, Valencia o Barcelona.

Si se selecciona Madrid, que aparezca otra lista desplegable que contenga el campo descripcion de cada uno de los registros cuyo valor del campo ciudad sea Madrid.

De esta seguna lista desplegable el usuario elige una y podra visualizar completo todos los campos de ese registro.


Esa es la idea general. Perdonadme si no me explique bien antes.
Gracias.
  #13 (permalink)  
Antiguo 13/01/2004, 07:59
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
bueno .. si entendí sería algo tipo:

nose.php
Código PHP:
<html>
<head>
</head>
<body>
<form action="nose.php" method="POST">
<select name="ciudad" size="1">
<option selected>Madrid</option>
<option>Sevilla</option>
</select>
<?php
 $con 
mysql_connect("localhost""xxxx""xxxxx")or die("Connect Error: ".mysql_error());
$db="xxxxxxxxxx";
mysql_select_db($db$con)or die("Connect Error: ".mysql_error());

$result mysql_db_query($db,"select * from patrimonio WHERE ciudad='".$_POST['ciudad']."'";

echo 
"<select name=\"municidescripcion\">";
while (
$row mysql_fetch_array($result)) {
    echo
"<option value=\"".$row['id']."\">".$row['descripcion']."</option>\n";            
    }
echo 
"</select>";
 
?>
....Tu botón submit ...

</form>
</body>
</html>
llamaló nose.php (lo que indique el action del formulario ..) usa el metodo POST .. (method del formulario) ya que así las recogemos en la parte PHP.

Indicates los datos de tu tabla .. pero no el nombre (estructura) de esos datos (nombres de los campos). Así que no sé si tu campo "ciudad" o "municipio" como hacias por ahí referencia.

No veo en tu tabla .. algún campo tipo ID (identificador único) que identifique a ese registro como único como para poder por ejemplo .. "si selecciono ya esa descripción de esa ciudad .. " lanzar una ventanita o pàgina nueva con la descripción completa de ese registro incluido esa imagen que ronda por ahí. Deberías usarlo, eso facilitará mucho la taréa de "normalización" de tus BD.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #14 (permalink)  
Antiguo 13/01/2004, 15:07
Avatar de pereztroff  
Fecha de Ingreso: junio-2002
Ubicación: En la Internet.
Mensajes: 4.068
Antigüedad: 22 años, 5 meses
Puntos: 5
sigo teniendo problemas, creo que no me toma ninguna valor en la linea:
<select name="ciudad" size="1">

decir que a cada option, le di un value...

porque aqui
Código PHP:
$result mysql_db_query($db,"select * from patrimonio WHERE ciudad='".$_POST['ciudad']."'"
da el error de --> Parse error: parse error



gracias.

Última edición por pereztroff; 13/01/2004 a las 15:16
  #15 (permalink)  
Antiguo 14/01/2004, 06:23
Avatar de pereztroff  
Fecha de Ingreso: junio-2002
Ubicación: En la Internet.
Mensajes: 4.068
Antigüedad: 22 años, 5 meses
Puntos: 5
joer, creo que ya vi el error.
me comi el parentesis, digo cerrar el parentesis.
voy a probar.
  #16 (permalink)  
Antiguo 14/01/2004, 13:09
Avatar de pereztroff  
Fecha de Ingreso: junio-2002
Ubicación: En la Internet.
Mensajes: 4.068
Antigüedad: 22 años, 5 meses
Puntos: 5
pues ahora me encuentro con otro problemilla:

<b>Warning</b>: mysql_fetch_array(): supplied argument is not a valid MySQL result resource

la segunda lista no me toma ningun valor de la base de datos.

¿que sera?
  #17 (permalink)  
Antiguo 15/01/2004, 07:11
Avatar de pereztroff  
Fecha de Ingreso: junio-2002
Ubicación: En la Internet.
Mensajes: 4.068
Antigüedad: 22 años, 5 meses
Puntos: 5
solucionado hasta aqui.


gracias por la ayuda.
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:11.