PHP - cargar combo box dependientes

   
Vista:
Imágen de perfil de Hfr

cargar combo box dependientes

Publicado por Hfr (84 intervenciones) el 09/09/2015 08:10:52
hola chicos la otra a vez hice varios foros de php y sqlserver , la verdad me ayudaron mucho y les agradezco sus consejos y opiniones
hoy estoy generando un combo box dependiente en php
me pareció genial este video de youtube




este es mi código php


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
66
67
<?php include ("ajax_procesa.php"); ?>
<html>
<head> <title>  listas despegables </title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.js"></script>
 
 
</head>
 
<script type="text/javascript">
 
 
function mostrar_user ()
{
 
	var user =$("#select_tipo").val();
 
	$.ajax (
	{
	url:  'ajax_procesa.php',
	data:  {  tipouser: user },
	type: 'post',
		success: function  (data)
		{
			$("#select_user").html(data);
		}
 
 
	}
	)
}
</script>
 
 
<body>
 
 
 
<form>
 
<fieldset>
<legend> agregar usuario </legend>
 
<label>tipo usuario: </label>
 
<select id="select_tipo" name ="tipo" onchange="mostrar_user()">
<?php while($row=mysqli_fetch_array($resul))
{?>
<option value= " <?php echo $row['cod_fm']?> " > <?php echo htmlentities($row['nom_cuida']);?> </option>
<?php } ?>
 
 
</select>
<br></br>
 
<label>usuario: </label>
<select id="select_user" name ="user">
 
 
</select>
 
</fieldset>
 
</form>
<body>
 
 
</html>


y este otro es el php de consultas



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php include ('con_mysql.php');
 
$linkx = new conexion();
$xCon= $linkx->conectar();
 
$sql=mysqli_query($xCon, "select nom_cuida, ape_cuida, cod_fm from familia");
$resul=($sql);
 
$user=$_post['tipouser'];
 
$sql=mysqli_query($xCon, "select * from nnja where  nom_ciud='.$user.'    and  	ape_ciud='.$user.' ") ;
 
$consulta=($sql);
 
while ($fil =mysqli_fetch_array($consulta))
{
	echo "<option value= \"".$fil['cod_nnja'] ."\">".utf8_decode($fil['nombre'])."</option>";
}
 
?>


recorte
y ese es el resultado
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Xavi

cargar combo box dependientes

Publicado por Xavi (28 intervenciones) el 09/09/2015 08:50:24
Hola Hfr, creo que tu problema esta en que pusiste $_post en minúsculas, y va en mayúsculas!!!

Si lo puedes modificar y comentarnos...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Hfr

cargar combo box dependientes

Publicado por Hfr (84 intervenciones) el 09/09/2015 08:57:23
no compañero no son las mayúsculas ya las cambie y sigue generado
Notice: Undefined index: tipouser in C:\xamm\htdocs\dashboard\aldeasinfantiles\php\ajax_procesa.php on line 15
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Vainas

cargar combo box dependientes

Publicado por Vainas (254 intervenciones) el 09/09/2015 10:56:18
Buenas:

No genera el mismo error. Lo que te comentaba Xavi a arreglado en parte un problema, ahora tu nuevo problema es que en el envío no defines bien "key" y "value" fijate en las comillas:

{ "tipouser" : user }

Espero que te sirva.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Hfr

cargar combo box dependientes

Publicado por Hfr (84 intervenciones) el 09/09/2015 15:53:16
cursor


lo curioso es que al posar el cursor sobre el paréntesis me dice que este se cierra con las llaves pero el paréntesis se esta cerrando correctamente tal cual como lo muestra la imagen
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Vainas

cargar combo box dependientes

Publicado por Vainas (254 intervenciones) el 09/09/2015 16:31:02
Buenas de nuevo:

No entiendo que dices sobre un parentesis.

en el ajax:

1
type: "post"

va en minisculas o mayusculas como quieras

1
data: { "tipouser" : user }

el nombre de la variable a enviar va entre comillas (dobles o simples como quieras).

En el php:

1
$_POST['tipouser']

post va en mayusculas.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Hfr

cargar combo box dependientes

Publicado por Hfr (84 intervenciones) el 09/09/2015 17:00:03
hola nuevamente



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
66
67
68
69
70
71
72
73
74
75
76
<?php include ("ajax_procesa.php"); ?>
<html>
<head> <title>  listas despegables </title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.js"></script>
 
 
</head>
 
<script type="text/javascript">
 
 
function mostrar_user ()
 
{
	 var user=$("#select_tipo").val();
	 $.ajax (
	 {
 
 
		url: "ajax_procesa.php" ,
 
			 data: { "tipouser" : user },
 
			type:  "POST",
 
 
 
 
	 success: function  (data)
	 {
 
		 $("#select_user").html(data);
	 }
 
	 }
 
	 )
 
}
 
</script>
 
 
<body>
 
 
 
<form>
 
<fieldset>
<legend> agregar usuario </legend>
 
<label>tipo usuario: </label>
 
<select id="select_tipo" name ="tipo" onchange="mostrar_user()">
<?php while($row=mysqli_fetch_array($resul))
{?>
<option value= " <?php echo $row['cod_fm']?> " > <?php echo htmlentities($row['nom_cuida']);?> </option>
<?php } ?>
 
 
</select>
<br></br>
 
<label>usuario: </label>
<select id="select_user" name ="user">
 
 
</select>
 
</fieldset>
 
</form>
</body>
 
</html>


y este otro


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
<?php include ('con_mysql.php');
 
 
$linkx = new conexion();
$xCon= $linkx->conectar();
 
 
$sql=mysqli_query($xCon,  "select nom_cuida, ape_cuida, cod_fm from familia");
$resul=($sql);
 
 
 
$user=$_POST['tipouser'];
 
 
$sql1=mysqli_query($xCon, "select * from nnja where  nom_ciud='.$user.'    and  	ape_ciud='.$user.' ") ;
 
 
$consulta=($sql1);
 
 
while ($fil =mysqli_fetch_array($consulta))
 
	{
 
	echo "<option value= \"".$fil['cod_nnja'] ."\">".utf8_decode($fil['nombre'])."</option>";
 
	}
 
?>


y sigue saliendo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

cargar combo box dependientes

Publicado por xve (5525 intervenciones) el 09/09/2015 17:27:25
Te recomiendo que tabules correctamente tus códigos, es un lío revisarlo...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Hfr

cargar combo box dependientes

Publicado por Hfr (84 intervenciones) el 09/09/2015 17:43:47
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
66
67
68
69
70
71
72
73
74
75
<?php include ("ajax_procesa.php"); ?>
<html>
			<head>
 
					<title>  listas despegables </title>
							<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.js"></script>
 
 
			</head>
 
<script type="text/javascript">
 
 
function mostrar_user ()
 
			{
				 var user=$("#select_tipo").val();
				 $.ajax (
								{
 
								url: "ajax_procesa.php" ,
 
										data: { "tipouser" : user },
 
												type:  "POST",
 
											success: function  (data)
 
																			{
 
																		 $("#select_user").html(data
 
																			}
 
 
								}
							)
			}
 
</script>
 
 
<body>
 
 
 
									<form>
 
														<fieldset>
														|		<legend> agregar usuario </legend>
 
																			<label>tipo usuario: </label>
 
																				<select id="select_tipo" name ="tipo" onchange="mostrar_user()">
																							<?php while($row=mysqli_fetch_array($resul))   	{?>
 
																							<option value= " <?php echo $row['cod_fm']?> " > <?php echo htmlentities($row['nom_cuida']);?> </option>
																									<?php } ?>
 
 
																			</select>
						<br></br>
 
														<label>usuario: </label>
															<select id="select_user" name ="user">
 
 
																	</select>
 
									</fieldset>
 
						</form>
			</body>
 
</html>


php









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
<?php include ('con_mysql.php');
 
 
		$linkx = new conexion();
		$xCon= $linkx->conectar();
 
 
					 $sql=mysqli_query($xCon,  "select nom_cuida, ape_cuida, cod_fm from familia");
					$resul=($sql);
 
 
								$user=$_POST['tipouser'];
 
 
														$sql1=mysqli_query($xCon, "select * from nnja where  nom_ciud='.$user.'    and  	ape_ciud='.$user.' ") ;
 
 
																	$consulta=($sql1);
 
 
																			while ($fil =mysqli_fetch_array($consulta))
 
																								{
 
																								echo "<option value= \"".$fil['cod_nnja'] ."\">".utf8_decode($fil['nombre'])."</option>";
 
 
																								}
 
?>




Notice: Undefined index: tipouser in C:\xamm\htdocs
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 Vainas

cargar combo box dependientes

Publicado por Vainas (254 intervenciones) el 09/09/2015 21:22:39
Una llamada ajax no requiere que incluyas el archivo php en la web que va a hacer la llamada asi que de tu index.html o el codigo que tiene el html quita:

<?php include ("ajax_procesa.php"); ?>

que no es necesario.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Vainas

cargar combo box dependientes

Publicado por Vainas (254 intervenciones) el 09/09/2015 21:06:18
Bueno ahora si que parece que tienes todo bien.

Podrias comprobar con las herramientas de chrome si ves que salen los paquetes del cliente (F12 y en la ventana que sale busca la pestaña Network y mira si hay alguna llamada a tu ajax_procesa.php).

Por otro lado hay herramientas (plugins del chrome) como Advance REST client o Postman - REST Client en donde puedes simular la llamada a tu php de tipo post con la variable tipouser a ver que sucede.

Quita tambien los espacios de aqui:

1
<option value= " <?php echo $row['cod_fm']?> " >

los que estan entre las comillas y el php, debe quedar asi:

1
<option value= "<?php echo $row['cod_fm']?>">

De momento no se me ocurre mas.

Saludos.

Actualizo:

Esto para mi no tiene ningun sentido:
$resul=($sql);

ni esto

$consulta=($sql1);

intenta colocar:
$user = $_POST['tipouser'];

antes de conectar con la bbdd no sea que algo pueda vaciar el valor ( no creo pero es por probar cosas). Intenta imprimir la variable a ver si tiene valor, aunque ya de entrada dice que no.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Hfr

cargar combo box dependientes

Publicado por Hfr (84 intervenciones) el 09/09/2015 22:28:06
el primer combo box si se carga con todos los registros

pero se supone que al seleccionar un item en el combo box que esta funcionando se deben cargar los demás registros en el otro combo box

combo-box
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Vainas

cargar combo box dependientes

Publicado por Vainas (254 intervenciones) el 10/09/2015 09:07:31
Bien pues la respuesta sale del cliente segun esto. Si haces click sobre ajax_procesa.php te tendria que salir en algun sitio el parametro que envias.

Por otro lado te queda comprobar con las herramientas que te dice si tu ajax_procesa.php devuelve lo que necesitas.

Tu archivo listas.php no requiere que incluyas el archivo ajax_procesa.php asi que quitalo de listas.php y pon el de conexion a la bbdd:

Este fuera:
<?php include ("ajax_procesa.php"); ?>

Este se pone:
<?php include ('con_mysql.php');

Prueba con las herramientas que te he dicho a ver que obtienes.

En tu ajax, en la funcion success podrias probar un console.log a ver que datos se obtienen:

1
2
3
4
success: function  (data){
        $("#select_user").html(data);
        console.log(data);
}

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Hfr

cargar combo box dependientes

Publicado por Hfr (84 intervenciones) el 14/09/2015 17:31:45
hola perdón por la ausencia pero estaba en cama ya que me dio chikungunya ...
vale quite el ajax_procesa.php y deje solo la conexión


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
66
67
68
69
<?php include ('con_mysql.php');
 
 
$linkx = new conexion();
$xCon= $linkx->conectar();
 
 
?>
<html>
	<head>
 
		<title>  listas despegables </title>
		<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.js"></script>
 
 
	</head>
 
<script type="text/javascript">
 
function mostrar_user ()
{
	var user=$("#select_tipo").val();
	$.ajax ( {
		url: 'ajax_procesa.php' ,
 
			data: { tipouser : user },
			type:  'post',
			success: function  (data)
			{
				$("#select_user").html(data)
			}
		}
	)
}
 
</script>
 
 
<body>
 
	<form>
 
		<fieldset>
			<legend> agregar usuario </legend>
 
			<label>tipo usuario: </label>
			<?php  $sql=mysqli_query ( $xCon,"SELECT `cod_fm`,`nom_cuida`,`ape_cuida` FROM familia"); ?>
 
 
			<select id="select_tipo" name ="tipo" onchange="mostrar_user()">
				<?php while($row=mysqli_fetch_array($sql))   	{?>
 
					<option value= "<?php echo $row['cod_fm']?>"> <?php echo htmlentities($row['nom_cuida']);?> </option>
				<?php } ?>
 
			</select>
<br></br>
 
			<label>usuario:
			</label>
			<select id="select_user" name ="user">
			</select>
 
		</fieldset>
 
	</form>
</body>
 
</html>


automáticamente se elimina el error del post
pero no carga la segunda consulta del combo box
que esta dentro de ajax_procesa y con el modo desarrollador de google dice no muestra el envio que hace con ajax_procesa


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
<?php include ('con_mysql.php');
 
 
$linkx = new conexion();
$xCon= $linkx->conectar();
 
 
$user=$_POST['tipouser'];
 
 
 
$sql=mysqli_query ($xCon, " SELECT nombre , apellido, cod_nnja
identificacion FROM nnja INNER JOIN familia 
WHERE nnja.nom_ciud = '$user' and familia.nom_cuida='$user' ");
 
 
$consulta=$sql;
 
 
while ($col=mysqli_fetch_array($consulta))		{
 
	echo "<option value= \"".$col['cod_nnja'] ."\">".utf8_decode($col['nombre'])."</option>";
 
}
 
?>
ddso
mmdos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Hfr

cargar combo box dependientes

Publicado por Hfr (84 intervenciones) el 21/09/2015 23:38:56
de esta forma pude cargar los combobox de dos niveles dentro del mismo formulario

arhivo ajax



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
function load(str)
{
var xmlhttp;
 
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("POST","proc.php",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("q="+str);
}


index

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
<?php
include 'conn.php';
?>
 
 
<html>
 
<head>
<script src="ajax.js"></script>
 
</head>
 
<body>
 
<h2>HTML - PHP - AJAX - MySQL</h2>
 
<?php
 
$con=conexion();
$res=mysqli_query($con," select    	NOM_PRO      from  programas    ORDER BY     NOM_PRO   asc");
 
?>
<form  ACTION="RECIBIR.PHP" method="POST" >
 
<select id="cont" onchange="load(this.value)">
 
<option value="">Seleccione</option>
 
<?php
 
while($fila=mysqli_fetch_array($res)){
 
?>
 
<option value="<?php  echo $fila['NOM_PRO'];  ?>"><?php echo $fila['NOM_PRO'];?> </option>
 
<?php } ?>
 
</select>
 
 
<div id="myDiv"></div>
 
<input type="submit" value ="enviar"  name ="send">
 
</body>
 
</html>


procesa php

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
<?php
  include ("con_mysql.php");
$qd=$_POST['q'];
$linkx = new conexion();
$xCon= $linkx->conectar();
echo $qd."<br>";
 
 
 
$res=mysqli_query($xCon,"SELECT nom_cuida,  ape_cuida FROM  familia  WHERE programa   ='$qd'   and 	estatus='activo' GROUP BY   nom_cuida");
 
?>
 
 
 
<select  name ="select1">
<option>  seleccione un niño </option>
<?php while($fila=mysqli_fetch_array($res)){ ?>
 
 
<option>  <?php echo $fila['nom_cuida']; ?>    <?php echo $fila['ape_cuida']; ?>  </option>
 
 
<?php } ?>
 
</select>


conxion php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class conexion{
 
	function conectar(){
			$hostin="localhost";
			$usuario="root";
			$pass="";
			$dbo="PDI";
 
			$link = mysqli_connect($hostin,$usuario,$pass,$dbo) or die ("No se puede conectar a la base de datos");
 
			if ($link){
 
				/* echo "conexion exitosa"; */
 
				return $link;
			}else{
				echo "no su pudo establecer conexion";
			}
	}
 
	}
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 xve

cargar combo box dependientes

Publicado por xve (5525 intervenciones) el 22/09/2015 11:04:26
Gracias por compartirlo!!!
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