Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/05/2010, 09:02
Biribu
 
Fecha de Ingreso: mayo-2010
Mensajes: 17
Antigüedad: 14 años, 7 meses
Puntos: 0
Combobox dependiente ajax php y envio de datos a otra pagina

Buenas.

Tengo un cobobox que deja seleccionar una carrera y luego otro combobox en el que se cargan los cursos de la carrera seleccionada. El problema que tengo es que necesito añadir un boton para enviar esos datos a una pagina que posteriormente llamara a un archivo php que usara los dos datos seleccionados.

Pero por mas que pruebo como enviar esos datos a cualquier sitio no se envian. Nunca se envia nada, funciona correctamente para mostrar el segundo combobox pero nada mas.

No os pongo los formularios e historias que he intentado a ver si lo conseguia. Por si veis que hay que añadir para que se pueda:

Seleccionar_dependientes.php

Código PHP:
<?php

function generaCarrera()
{
    include 
'conexion.php';
    
conectar();
    
$consulta=mysql_query("SELECT id, nombre FROM carrera");
    
desconectar();

    
// Voy imprimiendo el primer select compuesto por las carreras
    
echo "<select name='carrera' id='carrera' onChange='cargaContenido(this.id)'>";
    echo 
"<option value='0'>Elige</option>";
    while(
$registro=mysql_fetch_row($consulta))
    {
        echo 
"<option value='".$registro[0]."'>".$registro[1]."</option>";
    }
    echo 
"</select>";
}
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

<!-- 



Este contenido es de libre uso y modificación bajo la siguiente licencia: http://creativecommons.org/licenses/by-nc-sa/2.5/deed.es

Sobre el reconocimiento:
Todos los códigos han sido realizados con la idea de que sirvan para colaborar con el aprendizage de aquellos que se están introduciendo
en estas tecnologías y no con el objetivo de que sean utilizados directamente en sitios web. No obstante si utilizas algún código en tu sitio 
(ya sea sin modificar o modificado), o si ofreces los fuentes para descargar o si bien decides publicar alguno de los artículos debes cumplir con:
-Colocar un link a http://www.formatoweb.com.ar/ajax/ visible por tus usuarios como forma de mención a la fuente original del contenido.
-Enviar un correo a [email protected] informando la URL donde el contenido se ha publicado o se va a publicar en un futuro.
-Si publicas los fuentes para descargar este texto no debe ser eliminado ni alterado.

Más ejemplos y material sobre AJAX en: http://www.formatoweb.com.ar/ajax/
Cualquier sugerencia, crítica o comentario son bienvenidos.
Contacto: [email protected]



-->

<html lang="es">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Seleccionar carrera y curso</title>
<link rel="stylesheet" type="text/css" href="select_dependientes.css">
<script type="text/javascript" src="select_dependientes.js"></script>
</head>

<body>
                <div id="demo" style="width:600px;">
                    <div id="demoDer">
                        <select disabled="disabled" name="curso" id="curso">
                            <option value="0">Selecciona opci&oacute;n...</option>
                        </select>
                    </div>
                        <div id="demoIzq"><?php generaCarrera(); ?></div>
                       </div>    
</body>
</html>
Seleccionar_dependientes_proceso.php

Código PHP:
<?php
// Array que vincula los IDs de los selects declarados en el HTML con el nombre de la tabla donde se encuentra su contenido
$listadoSelects=array(
"carrera"=>"carrera",
"curso"=>"curso"
);

function 
validaSelect($selectDestino)
{
    
// Se valida que el select enviado via GET exista
    
global $listadoSelects;
    if(isset(
$listadoSelects[$selectDestino])) return true;
    else return 
false;
}

function 
validaOpcion($opcionSeleccionada)
{
    
// Se valida que la opcion seleccionada por el usuario en el select tenga un valor numerico
    
if(is_numeric($opcionSeleccionada)) return true;
    else return 
false;
}

$selectDestino=$_GET["select"]; $opcionSeleccionada=$_GET["opcion"];

if(
validaSelect($selectDestino) && validaOpcion($opcionSeleccionada))
{
    
$tabla=$listadoSelects[$selectDestino];
    include 
'conexion.php';
    
conectar();
    
$consulta=mysql_query("SELECT id, nombre FROM $tabla WHERE id_carrera='$opcionSeleccionada'") or die(mysql_error());
    
desconectar();
    
    
// Comienzo a imprimir el select
    
echo "<select name='".$selectDestino."' id='".$selectDestino."' onChange='cargaContenido(this.id)'>";
    echo 
"<option value='0'>Elige</option>";
    while(
$registro=mysql_fetch_row($consulta))
    {
        
// Convierto los caracteres conflictivos a sus entidades HTML correspondientes para su correcta visualizacion
        
$registro[1]=htmlentities($registro[1]);
        
// Imprimo las opciones del select
        
echo "<option value='".$registro[0]."'>".$registro[1]."</option>";
    }            
    echo 
"</select>";
}
?>
Y las tablas necesarias:
Código:
create table carrera(
id int(2) primary key, 
nombre char(10));

insert into carrera values(1, "carrera1");
insert into carrera values(2, "carrera2");
insert into carrera values(3, "carrera3");

create table curso(
id int(2) primary key,
nombre char(10),
grupo int(2),
id_carrera int(2),
foreign key (id_carrera) references carrera(id));

insert into curso values(1, "primero", 3, 1);
insert into curso values(2, "segundo", 4, 1);
insert into curso values(3, "tercero", 2, 1);

insert into curso values(4, "primero", 5, 2);
insert into curso values(5, "segundo", 3, 2);
insert into curso values(6, "tercero", 8, 2);

insert into curso values(7, "primero", 9, 3);
insert into curso values(8, "segundo", 8, 3);
insert into curso values(9, "tercero", 7, 3);

A ver que os parece...