Eventos en php

Tengo un pequeño problema, necesito que por favor me indiques si se puede manejar eventos con php. Es decir por ejemplo yo quiero que cuando seleccione una opción en un combo, en el combo siguiente pero en la misma página se coloquen opciones asociadas con la opción escogida en el primer combo. Más o menos así: En el primer combo escojo un país, entonces en el segundo combo deberían aparecer los estados de ese país. Si escojo otro país pues deberán borrarse las opciones del combo y ponerse los estados del nuevo país seleccionado. Esto en VB es fácil, pero estoy migrando una aplicación y me gustaría saber la manera en que puedo hacerlo o en todo caso simularlo.
He visto algunos manuales pero son básicos y por eso recurrí a un experto para que me ayude.

1 Respuesta

Respuesta
1
G77:
No está directamente ligado con tu problema particular pero quería demostrarte más o menos el manejo de eventos desde la fusión PHP y JS, tal vez te ayude un poco. Si no ves la forma de realizarlo envía nuevamente un mensaje para darte otra mano.
Lo que tines que saber (y me imagino que ya lo sabes) es que PHP sólo genera HTML o algo que sea interpretado por un browser como JS, el ejemplo que muestras estaría bien si haces los siguientes retoques
<html>
<head>
<script language="JavaScript">
function mostrar(x)
{ document.write(x);
return; }
</script>
<?
print "<script>";
for($i=1;$i<7;$i++)
print "mostrar('<h".$i.">Es sólo un ejemplo</h".$i.">')";
print "</script>";
?>
</body>
</html>
Con eso comprenderás mejor el funcionamiento. Pero no te confundas con mezclar una llamada de PHP a JS, loquepuedes hacer es generar JS con PHP y llamar a JS, está un poco rebuscado pero si lo lees tranquilo lo verás.
Es todo
Gracias por contestar, si sabia que php utiliza los recursos del sistema para generar una página html que el navegador en el cliente lo interpreta y muestra la página. También se que js es un lenguaje que permite a las páginas ser dinámicas.
Tu ejemplo me ayuda para entender como puedo fusionar php y js, pero sin embargo eso no soluciona mi problema, ya que el ejemplo tuyo se puede generar directamente solo con php.
Lo que deseo hacer es como te explicaba la vez anterior es que al escoger una opción en el combo 1 se cargen opciones en el combo 2, si escojo otra opción en el combo 1 se borran las opciones del combo 2 y se cargaran nuevas opciones relacionadas con el combo1.
Una opción que podría ser es que si ya se escoge una opción en el combo1 entonces la página vuelva a recargarse con los datos ya ingresados y que ademas cargue el combo2, el problema es como le digo al sistema que cuando se seleccione una opción en el combo recargue la página, obviamente no debo utilizar ningún botón. Por si acaso estoy trabajando en ambientes linux.
Gracias por tu ayuda.
G77:
Tu problema en sí está centralizado en los eventos de JS, vamos a ver, los puedes realizar de dos maneras diferentes, con sus pros y sus contras cada uno, pero vamos paso por paso.
1º: puedes gestionar todo con JS exclusivamente, si te fijas en el manual de JS que lo puedes consultas de netscape.com, verás que en manual tendrás métodos exclusivos para cada unos de los objetos de un formulario, entre ellos estará el select, y verás que podrás realizar una carga dinámica, PERO! Con datos que no son dinámicos, para poner un ejemplo muy común, es el tema de los países y las provincias de cada país, si escoges esta opción tendrás que tener TODAS las provincias de TODOS los países en tu página principal, lo cual yo considero como información que no sirve, imagina lo que puede tardar en cargar una página con todas las provincias de los peises europeos, y americanos o lo que más te guste, pero tendrás por lo seguro 20 Kb, combinado con las estructuras de JS que tendrás que meter para que todo esto sea un array, a una persona con conexión por modem sean unos 10 segundos más de carga, lo cual, yo considero mucho.
2º la segunda forma es recargando la página lo cual sólo cargará las provincias de cada país sin ir más allá de los daots que necesitas, y puedes poner por defecto el país más consultado, para evitarte recargar la página, la contra de este método es que tendrás que hacer un script para enviar las variables de los formularios que ya has cargado para poder reasignar los valores una vez que se recarga la página, de otro modo los valores que tenías se borrarán.
Para ambos casos tendrás que usar el evento onChange de JS, y en el código quedará más o menos así..
<select name=paises onChange=recargar(this.value)>
<?aquí va tu consulta en php a la DB?>
</select>
<select name=provincias>
<?aqui va tu consulta en php de las provincias sin olvidarte que ahora tienes que poner en la consulta un where provincias.pais=$paises. ya que sólo filtrarás las provincias de un determinado país?>
</select>
y luego el script propiamente dicho
<script>
function recargar(a){
location.href ='la_misma_pagina.php?paises='+a;
}
</script>
Y con eso tendría que funcionar, o te podrás dar la idea, la verdad que eno lo he probado, pero como te digp tendrás una idea de cómo realizarlo..
Es todo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas