Listas desplegables dinamicas dependientes...

Iniciado por wilru, 16 Septiembre 2010, 22:33 PM

0 Miembros y 2 Visitantes están viendo este tema.

wilru

hola a tod@s, tengo que hacer una mesa de ayuda o help desk que le llaman, estoy nuevo en esto de programacion web, por eso recurro aca en busca de ayuda, estoy utilizando Apache, Mysql y PHP, tambien Dreamweaver CS4, el programa debe tener las siguientes caracteristicas:

1. Un cliente llama  a la empresa o ingresa a la pagina web a la sesion de soporte donde esta la mesa de ayuda
2. Aqui debe escoger Una Incidencia (problema generalizado), lo estoy mostrando en una lista desplegable que se carga desde la base de datos Mysql
3. Una vez escoge la incidencia, tengo otra lista desplegable llamada Categoria, aqui se deberan cargar las categorias de la incidencia que se selecciono anteriormente.
4. una vez escogida la categoria, tengo un cuadro o area de texto donde se mostrara texto indicando al cliente u operador de la mesa, los pasos que debe seguir para resolver el problema, como una especie de lista de chequeo, esta tambien es leida de otra tabla llamada "Solucion" en la base de datos, la cual se cargara dinamicamente en esta area de texto una vez seleccionada la categoria.
5. Despues de esto se le pregunta al usuario si se resolvio el problema, si es asi, se le envia a la pagina inicio, de lo contrario se muestra en el area de texto una segunda solucion y asi sucesivamente hasta agotar las soluciones en la tabla, para tomar la respuesta que de el cliente sobre si se resolvio o no el problema tengo dos radio button..
6. por ultimo si se agotan las soluciones, se le pregunta si desea recibir asistencia personalizada, aqui otros dos radio button o botones de opcion: SI, NO, si el cliente escoge SI se le envia a otra pagina para que llene un formulario con sus datos y se debe cargar automaticamente en dicho formulario el problema reportado por el cliente en la mesa de ayuda.

Chic@s soy nuevo en esto, necesito ayuda por favor, mientras voy aprendiendo, es que no cuento con mucho tiempo para bbotarle corriente, ayuda por favor
Mil gracias, mi correo es wilru25@hotmail.com


Franki

No creo que nadie se pare a ayudarte. No con ese espíritu. No puedes pretender que los demás hagan tu tarea. Aquí hay gente que trabaja y le pagan por ello.

Si lo que necesitas es ayuda intentalo tú primero y en el código que te atasques te podremos ayudar. Pero de esta forma no.

wilru

Franki, tienes toda la razon, pero es que tampoco pretendo que me lo hagan todo, no soy tan descarado, mira que este trabajo me lo pusieron en una materia llamada calidad de software y me ha tocado investigar mucho, temas que aun no he visto por ejemplo:
1. Base de datos, ya  cree toda la base de datos - tablas del programa
2. Avrigue e instale el servidor apache y el MyAdmin de Mysql junto con Mysql, igual el interprete de apache y el Dreamweaver...
3. He bajado varios tutoriales de Dreamweaver para saber manejarlo
4. He creado el sitio y configurado el servidor de pruebas, y
5. Ya tengo una gran parte hecha, pues no es solo la mesa de ayuda lo que me pidieron, tambien se debe vender productos, llevar inventario, llevar un registro de clientes a parte de un monton de informes que debe generar el programa..., estoy trabajando duro en eso, tambien trabajo y estudio de noche, por eso pido ayuda, no pido que me lo hagan todo..., por lo menos que me expliquen como crear las benditas listas desplegables dependientes, o sea que cuando escoja una incidencia se carguen en la otra lista las categorias de la incidencia seleccionada..

Muchas gracias por tu apreciacion...

wilru

Puedo mostrar el trabajo que llevo hasta ahora, si hay alguien que se interese o pueda ayudarme.., con gusto envio lo que he realizado..

wilru

Franki se ve muy interesante tu blog, se ve que sos un teso, yo apenas estoy en VII semestre de ingenieria y me toca duro, pues la universidad es a distancia...
Mirare a ver que puedo encontrar en tu blog...

Franki

Muy bien, perdona si te ha molestado. Veo que te lo estás currando, en un rato vengo e intento ayudarte un poco. Si eso pon lo que llevas hecho y lo analizamos juntos.

Hasta ahora  :D

Franki

Hola de nuevo wilru, vale, veo que lo tienes más o menos controlado, lo único que te faltaría sería crear listas dependientes.

Bien, si quieres que las listas sean dinámicas tendrás que hacerlo con javascript. La teoría esta en definir una función manejador del evento onchange de la lista desplegable, para que cuando se cambie/seleccione una Incidencia se carguen las categorias relacionadas. Es decir tendrás que realizar una petición POST al servidor en segundo plano usando la tecnología AJAX.

Esto lo he hecho millones de veces en el trabajo, pero utilizando jQuery, que es un framework de javascript que te ayuda mucho en estas cosas, pero en tu caso supongo que tu profesor te habrá dicho que uses solo javascript nativo, sin apoyarte en librerías de terceros.

Bien, manos a la obra.

Supongamos que el <select> tiene un id="incidencia" pues en javascript empezamos haciendo esto dentro de la etiqueta script:

Código (javascript) [Seleccionar]
window.onload = function() {

document.getElementById('incidencia').onchange = function(){

}

}


Ya tenemos el cuerpo de nuestro script, de esta forma cuando se cargue el DOM de elementos podremos asignar una función manejadora del evento onchange del select. Dentro del cuerpo de esta función cogeremos el valor seleccionado y lo enviaremos mediante AJAX al servidor para que sea procesado por un script PHP que lo recupere y consulte en la base de datos las diferentes categorías. Una vez devueltos los valores los cargaremos en un <select> con id="categoria".

Código (javascript) [Seleccionar]
window.onload = function() {

document.getElementById('incidencia').onchange = function(){
    var incidencia = this.value;

    if(window.XMLHttpRequest) {
       peticion_http = new XMLHttpRequest();
    }
    else if(window.ActiveXObject) {
       peticion_http = new ActiveXObject("Microsoft.XMLHTTP");
    }

    // Preparar la funcion de respuesta
    peticion_http.onreadystatechange = cambiaCategoria;

    // Realizar peticion HTTP
    peticion_http.open('GET', 'miservidor.com/miscript.php?inc='+incidencia);
    peticion_http.send(null);

   function cambiaCategoria() {
      if(peticion_http.readyState == 4) {
         if(peticion_http.status == 200) {
             document.getElementById('categoria').innerHTML=peticion_http.responseText;
      }
    }
  }
}

}

}



Hasta aqui la parte de javascript, ahora el miscript.php del servidor. Lo que hace es recibirlo, hacer la consulta y enviar los datos con las <option>. Lo ideal seria enviar los datos con JSON y crear las <option> en el cliente, pero eso ya es un poco más avanzado y así te sirve igualmente.

Código (php) [Seleccionar]
$incidencia = $_GET['inc'];

// hacemos la consulta, no se como seran tus tablas

$sql = "SELECT categorias FROM Categorias WHERE incidencias=$incidencia"

$result = mysql_query($sql,$conexion) or die(mysql_error());
while($row = mysql_fetch_array($result))

echo '<option>'.$row['categoria'].'</option>'



La cosa sería algo así, supongo que fallara porque ni lo he depurado ni lo he probado, pero más o menos ya tienes algo de como funcionan las listas desplegables.

Suerte.


wilru

Hola Franki,

Muchisimas gracias por tomar de tu valioso tiempo para ayudarme, de verdad que aprecio mucho tal gesto, tratare de incorporar a lo que tengo el codigo que me has dado, cualquier duda volvere a molestarte.

Mil gracias y bendiciones.