PHP - dos select seguidos

 
Vista:
Imágen de perfil de Charly
Val: 182
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

dos select seguidos

Publicado por Charly (66 intervenciones) el 19/12/2018 16:56:54
Tengo que hacer este ejercicio antes del viernes y no me termina de salir, me explicaré.
Tengo en una base de datos países, ciudades y datos de esas ciudades, a la cual conecto bien.
Necesito hacer dos select en html seguidos, uno de países y otro de ciudades.
Hasta que no seleccione algo del primero no aparecerá nada en el segundo y al seleccionar de éste, aparecerá una tabla con datos de la tercera tabla.
Pues bien, el primer select funciona, pero el segundo no y ya le he dado muchas vueltas, pero no me sale.
Este es el código que he hecho:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<html>
	<head>
		<title>WORLD</title>
	</head>
	<body>
		<?php
			define("SERVIDOR","localhost");
			define("USUARIO","root");
			define("CLAVE","");
			//define("BD","world");
			$BD="world";
			$db;
			try{
				if($BD!='')
					$db=new PDO("mysql:host=".SERVIDOR.";dbname=".$BD.";charset=utf8",USUARIO,CLAVE,array(PDO::MYSQL_ATTR_INIT_COMMAND=>"SET NAMES 'utf8'"));
				else
					$db=new PDO("mysql:host=".SERVIDOR.";charset=utf8",USUARIO,CLAVE,array(PDO::MYSQL_ATTR_INIT_COMMAND=>"SET NAMES 'utf8'"));
				$db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY,true);
				$db->setAttribute(PDO::NULL_TO_STRING,true);
				if($BD==''){
					$sql=file_get_contents('world.sql');
					$this->ejecuta_SQL($sql);
				}
			}catch(PDOException $e){
				die("<p><h3>No se ha podido establecer la conexión.
					<p>Compruebe si está activado el servidor de bases de
					datos MySQL.</h3></p>\n<p>Error: ".$e->getMessage()."</p>\n");
			}
			echo "<h1>EJERCICIO CONSULTA DE PAISES POR REGIONES</h1>
				<form name='form1' method='post' action=\"index.php\">";
			$sql1='SELECT Region FROM country';
			$resultado1=$db->query($sql1);
			echo "Selecciona Region: <select name='campo_busqueda1'>
				<option>Selecciona...</option>";
			while(($fila1=$resultado1->fetch(PDO::FETCH_ASSOC))!=NULL){
				echo '<option value="'.$fila1["Region"].'">'.$fila1["Region"].'</option>';
			};
			echo "</select>";
			$region=$_GET["campo_busqueda1"];
			echo "<input type='submit' value='Enviar'>
			<br>";echo $region;
			$sql2='SELECT Name FROM country WHERE Region="$region"';
			$resultado2=$db->query($sql2);
			echo "Selecciona Pais: <select name='campo_busqueda2'>
				<option>Selecciona...</option>";
			while(($fila2=$resultado2->fetch(PDO::FETCH_ASSOC))!=NULL){
				echo '<option value="'.$fila2["Name"].'">'.$fila2["Name"].'</option>';
			};
			echo "</select>
				<input type='submit' value='Enviar'><br>
			</form>";
		?>
		<table border=1>
			<tr>
				<th>Nombre</th>
				<th>Poblacion</th>
			</tr>
				<?php
					/*foreach(){
						<tr><td></td><td></td></tr>
					}*/
				?>
		</table>
	</body>
</html>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
1
Responder
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

dos select seguidos

Publicado por xve (6935 intervenciones) el 19/12/2018 19:55:52
Hola Charly, de la manera que lo estas haciendo, va todo seguido, y creo que es erróneo... no puedes buscar en la base de datos country hasta que haya seleccionado la región... y según esta tu código, intenta buscarlo cuando todavía no existe.

De todas maneras, te tendría que mostrar el segundo select, pero sin valores...

Creo que veo donde tienes el problema... el formulario lo envias en post, por lo que esta linea:
1
$region=$_GET["campo_busqueda1"];
tendría que ser:
1
$region=$_POST["campo_busqueda1"];

Coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Charly
Val: 182
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

dos select seguidos

Publicado por Charly (66 intervenciones) el 19/12/2018 20:21:05
Gracias xve, pero me sigue fallando en lo mismo.
Al cargarse la página aparecía debajo del primer select esto:
Notice: Undefined index: campo_busqueda1 in C:\xampp\htdocs\world\index.php on line 39
Aunque el aviso desaparece al seleccionar uno.
Lo que he hecho es guardar $region antes de salir del primer select.
Además la elección del primer select desaparece si le das al botón de enviar.
Y en el segundo no me aparece nada.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 1.071
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

dos select seguidos

Publicado por Yamil Bracho (888 intervenciones) el 19/12/2018 20:32:49
La primera vez que cargas las pagian al avraible no existe Nin en $_GET nin en $_POST.
Como tienes un boton de Submit, al presionarle se va a recragra la pagina via POST.Pra lo del arnign haces algo como :

1
$region =isset($_POST["campo_busqueda1"]) ? $_POST["campo_busqueda1"] : "";
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Charly
Val: 182
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

dos select seguidos

Publicado por Charly (66 intervenciones) el 20/12/2018 11:48:21
Si, así comprobamos si existe el campo y si está relleno, pero el problema todavía sigue.
Esta no es la solución.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar