Foros del Web » Programando para Internet » PHP »

Select segun otro Select con PHP

Estas en el tema de Select segun otro Select con PHP en el foro de PHP en Foros del Web. Hola, Llevo 1 mes con PHP, mysql y JavaScript. Así que estoy muy verde. No se si por el título se me entiende mucho, pero ...
  #1 (permalink)  
Antiguo 18/04/2009, 18:03
 
Fecha de Ingreso: abril-2009
Mensajes: 25
Antigüedad: 15 años
Puntos: 0
Select segun otro Select con PHP

Hola,
Llevo 1 mes con PHP, mysql y JavaScript. Así que estoy muy verde.
No se si por el título se me entiende mucho, pero ahora me explicaré mejor.
Estoy intentando cargar un select dependiendo del valor de otro select.
Select donde indico la opcion: selProblemaG1
Select donde cargo segun opcion: selProblema1
La conexión con la BBDD ya esta hecha, y funciona correctamente, asi que así recogo lo que quiero mostrar:

Código PHP:
mysql_select_db($database_mysql$mysql);
$query_registroPSICO "SELECT * FROM problemapsico";
$registroPSICO mysql_query($query_registroPSICO$mysql) or die(mysql_error());
$row_registroPSICO mysql_fetch_assoc($registroPSICO);
$totalRows_registroPSICO mysql_num_rows($registroPSICO); 
Tengo el select, el cual selecciono la opción,y al cambiar la opción va a la función:seleccionTipoProblema()
Código HTML:
<select name="selProblemaG1" id="selProblemaG1" onchange="seleccionTipoProblema()" > 
Esta es el caos de función que pretendo hacer que funcione:
Código HTML:
function seleccionTipoProblema()
	  {
 var letraG = document.form.selProblemaG1.value;
	 if(letraG=="A")
	{
	document.getElementById("selProblema1").options.length = 0;
	//Cargar el select psicológico
	document.form.selProblemaG1.options[0] = "-1";
	<?php
	$index=1;
	do
	{
	?>
			 variable=new Option("<?php echo   $row_registroMEDIO['descripccion']?>",
									
"<?php echo $row_registroMEDIO['codigo']?>",
									
"<?php echo $row_registroMEDIO['codigo']?>",
									
"false");
	document.form.selProblemaG1.options[index] = variable;
	<?php
	$index++;
	} while ($row_registroPSICO = mysql_fetch_assoc($registroPSICO));
 	 $rows = mysql_num_rows($registroPSICO);
  	if($rows > 0) {
     	mysql_data_seek($registroPSICO, 0);
	$row_registroPSICO = mysql_fetch_assoc($registroPSICO);
  	}
	?>
				
	}
}
El fallo que me da es el siguiente:
[CAPTURADO DEL FIREBUG]
uncaught exception: [Exception... "Failure" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :::: seleccionTipoProblema :: line 26" data: no]
Espero que me pueda echar una mano.
Muchas gracias.
SALUDOS
  #2 (permalink)  
Antiguo 18/04/2009, 18:24
Avatar de By_George  
Fecha de Ingreso: abril-2009
Ubicación: localhost
Mensajes: 629
Antigüedad: 15 años
Puntos: 19
Respuesta: Select segun otro Select con PHP

bueno yo te sugiero que cheques este codigo para que hagas lo de los select dependientes

codigo
  #3 (permalink)  
Antiguo 19/04/2009, 04:03
 
Fecha de Ingreso: abril-2009
Mensajes: 25
Antigüedad: 15 años
Puntos: 0
Respuesta: Select segun otro Select con PHP

Gracias por contestar.
No lo entiendo, no debería de tener un evento onChange en el select padre?.
Pero como yo quiero que lo que cargue el select hijo sea segun lo que ha seleccionado en select padre, tenmos que hacerlo a traves de JS no?.
Si tienes un <select onChange="controlarSelect()">
No?
Gracias de nuevo.
SALUDOS
  #4 (permalink)  
Antiguo 19/04/2009, 09:19
Avatar de By_George  
Fecha de Ingreso: abril-2009
Ubicación: localhost
Mensajes: 629
Antigüedad: 15 años
Puntos: 19
Respuesta: Select segun otro Select con PHP

checa la parte que te puse en rojo del siguiente codigo del link que te pase ahi esta el onchange

if (!empty($_POST['enviado'])){

// Procesar el formulario ...
echo "Procesando formulario:<br>";
echo "Recibido id_tabla_padre: ".$_POST['id_padre']."<br>";
echo "Recibido id_tabla_hija: ".$_POST['id_hija'];

} else {

// Conexión a la BD
$conexion = mysql_connect($servidor, $usuario, $clave) or die(mysql_error());
mysql_select_db($basedatos, $conexion) or die(mysql_error());

// Obtener el $id_padre del envío a sí mismo del formulario ...
$id_padre=$_POST['id_padre'];

// Inicio Formulario .. PHP_SELF enviamos a sí mismo (a este script).
echo "<form action=\"".$_SERVER['PHP_SELF']."\" method=\"POST\">\n\n";

// Formar Selec "Padre".
echo "<select name=\"id_padre\" onChange=\"this.form.submit()\">\n";
echo "<option value=\"\"> Seleccione un Item </option>\n";

$SQLconsulta_padre="SELECT * FROM tabla_padre";
$consulta_padre = mysql_query($SQLconsulta_padre,$conexion) or die(mysql_error());

While ($registro_padre=mysql_fetch_assoc($consulta_padre )){
// Se mira si el ID del registro es el mismo q el $id_padre q recibimos si hemos cambiado el select hijo.
// Se selecciona en consecuencia (selected) la opción elegida.
if ($id_padre == $registro_padre['id']){
echo "<option value=\"".$registro_padre['id']."\" selected>".$registro_padre['item_texto']."</option>\n";
} else {
echo "<option value=\"".$registro_padre['id']."\">".$registro_padre['item_texto']."</option>\n";
}
}
echo "</select>\n\n";

mysql_free_result($consulta_padre); // Liberar memoria usada por consulta.

// Formar Select "Hijo"
echo "<select name=\"id_hija\">\n";

// Si $id_padre no tiene valor (caso de que no se ha seleccionado ningua opción del select hijo
// se muestra el mensaje de "seleccine un item" (del select padre).
if (!empty($id_padre)){

$SQLconsulta_hija="SELECT * FROM tabla_hija WHERE id_padre='$id_padre'";
$consulta_hija = mysql_query($SQLconsulta_hija,$conexion) or die(mysql_error());
// se mira el total de registros de la consulta .. si es 0 se muestra mensaje en el select ..
if (mysql_num_rows($consulta_hija) != 0){
While ($registro_hija=mysql_fetch_assoc($consulta_hija)) {
echo "<option value=\"".$registro_hija['id']."\">".$registro_hija['item_texto']."</option>\n";
}
} else {
echo "<option value=\"\"> No hay registros para este Item </option>";
}
} else {
echo "<option value=\"\"> <-- Seleccione un Item </option>";
}

mysql_free_result($consulta_hija); // Liberar memoria usada por consulta.

echo "</select>\n\n";
echo "<input type=\"submit\" name=\"enviado\" value=\" Enviar \" >\n\n";
echo "</form>\n";
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 08:50.