Foros del Web » Programando para Internet » PHP »

Llenar un select con informacion de una base de datos con otro select

Estas en el tema de Llenar un select con informacion de una base de datos con otro select en el foro de PHP en Foros del Web. Hola a todos soy un total rookie en lenguaje PHP, pero tengo nociones de programacion. Es posible que este tema ya este, pero en los ...
  #1 (permalink)  
Antiguo 20/10/2012, 22:39
 
Fecha de Ingreso: octubre-2012
Ubicación: Guatemala
Mensajes: 2
Antigüedad: 11 años, 6 meses
Puntos: 0
Pregunta Llenar un select con informacion de una base de datos con otro select

Hola a todos soy un total rookie en lenguaje PHP, pero tengo nociones de programacion. Es posible que este tema ya este, pero en los temas relacionados no puedo relacionarlo con mi duda.

Lo que deseo es ...

Tengo un Select con los Grados de una Escuela y al seleccionar un grado enviar el valor a una consulta, cargar la consulta en otro select.

Ya pude hacerlo funcionar, pero tuve que copiar el mismo codigo varias veces por cada grado, y me imagino que debe de haber alguna forma mas simplificada.

Les envio copia del codigo.. Gracias a todos.

Código:
<?php
	include("conexion.php");
	
?>
<html>
<head>
<title>PRUEBA 2</title>
</head>

<script language="javascript">
	function ver(){

		var idgrado = document.f.grados.value;
		var contador=1;
		
		if (idgrado == "1") { // GRADO 1
		<?php $sql = "SELECT * FROM pensum WHERE id_grado=1 ORDER BY curso";
		
		$resultados = mysql_query ($sql);
		$numero = mysql_num_rows($resultados)+1;
		$contador=1; ?>

		document.f.cursos.length = "<?php echo $numero; ?>";
		document.f.cursos.options[0].value = 0;
		document.f.cursos.options[0].text = "Seleccione un curso.";

		<?php
		while ($fila=mysql_fetch_array($resultados)) { ?>

		document.f.cursos.options[contador].value = "<?php echo $fila["id_curso"]; ?>";
		document.f.cursos.options[contador].text = "<?php echo $fila["curso"]; ?>";
		contador++;
		<?php
		} 
		?>
		return;
		}
		
		if (idgrado == "2") { // GRADO 2
		<?php $sql = "SELECT * FROM pensum WHERE id_grado=2 ORDER BY curso";
		
		$resultados = mysql_query ($sql);
		$numero = mysql_num_rows($resultados)+1;
		$contador=1; ?>

		document.f.cursos.length = "<?php echo $numero; ?>";
		document.f.cursos.options[0].value = 0;
		document.f.cursos.options[0].text = "Seleccione un curso.";

		<?php
		while ($fila=mysql_fetch_array($resultados)) { ?>

		document.f.cursos.options[contador].value = "<?php echo $fila["id_curso"]; ?>";
		document.f.cursos.options[contador].text = "<?php echo $fila["curso"]; ?>";
		contador++;
		<?php
		} 
		?>
		return;
		}
		
		if (idgrado == "3") { // GRADO 3
		<?php $sql = "SELECT * FROM pensum WHERE id_grado=3 ORDER BY curso";
		
		$resultados = mysql_query ($sql);
		$numero = mysql_num_rows($resultados)+1;
		$contador=1; ?>

		document.f.cursos.length = "<?php echo $numero; ?>";
		document.f.cursos.options[0].value = 0;
		document.f.cursos.options[0].text = "Seleccione un curso.";

		<?php
		while ($fila=mysql_fetch_array($resultados)) { ?>

		document.f.cursos.options[contador].value = "<?php echo $fila["id_curso"]; ?>";
		document.f.cursos.options[contador].text = "<?php echo $fila["curso"]; ?>";
		contador++;
		<?php
		} 
		?>
		return;
		}

<!-- ..... Y se repite por cada grado. -->
}
</script>

<body>
	<form name="f" method="post" action="">
	<?php
		$sql_grado="SELECT * FROM GRADOS";
		$result=mysql_query($sql_grado,$link);
		$rows=mysql_num_rows($result);
		
		if ($row=mysql_fetch_array($result)){ 
			echo "<table border='1' width='100%'>";
			echo "<tr>";
			echo "<td>Grados:</td>";
			echo "<td><select name='grados' onchange=ver();>";
			echo "<option value= '0' selected='selected'> Seleccione un grado.</option>";
			do {
				echo"<option value= '".$row["id_grado"]."'>".$row["grado"]."</option>";
				}
			while ($row=mysql_fetch_array($result));
			
			echo "</select></td>";
			echo "</tr>";
			
			echo "<tr>";
			echo "<td>Cursos:</td>";
			echo "<td>";
				echo "<select name='cursos'>";
				echo "<option value= '0' selected='selected'> Seleccione un curso.</option>";
				echo "</select>";
			echo "</tr></table>";
		}
		?>
	</form>
</body>
</html>
De ante mano les doy las gracias por este magnifico foro y las personas que lo crearon.

Última edición por leri88; 20/10/2012 a las 23:05
  #2 (permalink)  
Antiguo 21/10/2012, 02:37
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Llenar un select con informacion de una base de datos con otro select

Es muy sencillo...

El select con los grados
Código HTML:
Ver original
  1. <select name="grados">
  2. <option value="1">Grado 1</option>
  3. <option value="2">Grado 2</option>
  4. <option value="3">Grado 3</option>
  5. <option value="X">Grado X</option>

En la consulta...
Código PHP:
Ver original
  1. $sql = 'SELECT * FROM pensum WHERE id_grado='.$_POST['grados'].' ORDER BY curso';
  2. $resultado = mysql_query($sql,$conexion) or die(mysql_error());
  3. //demás código para imprimir los items devueltos...

Otra cosa que se me olvidaba, en tu código estas enviando todos los grados existentes antes siquiera de que el usuario seleccione el grado que quiere, eso esta completamente mal, primero debes esperar que el usuario te envie que grado quiere, para luego devolver el resultado, de otra forma solo haces que tarde mas en cargar la página para envar resultados que probablemente el usuario ni si quiera necesite....
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #3 (permalink)  
Antiguo 21/10/2012, 23:41
 
Fecha de Ingreso: octubre-2012
Ubicación: Guatemala
Mensajes: 2
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: Llenar un select con informacion de una base de datos con otro select

Y como mando a llamar al codigo php que escriniste? con onchange o como? como te digo soy nuevo en esto
  #4 (permalink)  
Antiguo 22/10/2012, 00:03
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Llenar un select con informacion de una base de datos con otro select

eso ya es decisión tuya, si lo trabajas como un formulario normal (evento submit) o con ajax o como mejor te acomode, si eres nuevo en esto te estas complicando demasiado...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)

Etiquetas: html, informacion, mysql, select, sql
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 14:05.