select dependiente php

Quiero hacer un pequeño formulario con 2 selects el segundo dependiente del primero,es posible hacer esto solo con php?,es que como no hay eventos no se como hacerlo :-?
?php
$db=mysql_connect("localhost","root","123");
mysql_select_db("paises",$db);
$qry=mysql_query('select pais from paises order by id ASC');
?>
Paises<br>
<?php
echo '<form method="POST" action="paises.php">';
echo '<select name="comboPaises">';
while($row=mysql_fetch_array($qry))
{
   //echo '<br>'.$row[0];
   echo "<option value='$row[0]'>$row[0]</option>";
}
echo '</select>'."<br>";
?>
Estados<br>
<?php
echo '<select name="comboEstado">';
echo '</select>';
echo '<br><input type="submit" value="Enviar">';
echo '</form>';
//echo $_POST['comboPaises'];
?>
Sin Javascript la única manera que se me ocurre es hacer un formulario por pasos. En el primer paso el haces el primer select y en el segundo ya puedes hacer el otro select (dependiente).

Saludos
No he entendido bien la pregunta, ¿Puedes explicar un poco mejor que tienes que hacer?
Delian escribió:No he entendido bien la pregunta, ¿Puedes explicar un poco mejor que tienes que hacer?

un combobox en el que se escoge un pais y cuando escoges un pais pues el siguiente combobox se rellena con las provincias,estados o lo que sea de ese pais seleccionado
Lo suyo es que uses una llama asíncrona al servidor. Si estás usando un navegador web como cliente, usa Ajax para que cuando selecciones el país, vía este método, se haga una llamada al servidor y este te devuelva el listado de provincias. Así no tienes que hacer submit de la página.

Si te suena a chino, puedes googlear un poco html ajax javascript y verás códigos de ejemplo con lo que necesitas. Para simplificar los procedimientos con Ajax, te recomiendo el framework jQuery, es una agrupación de funciones que usando javascript te permite trabajar con el DOM de HTML de una forma más potente y eficiente.

Un saludo.
Darthgon escribió:Lo suyo es que uses una llama asíncrona al servidor. Si estás usando un navegador web como cliente, usa Ajax para que cuando selecciones el país, vía este método, se haga una llamada al servidor y este te devuelva el listado de provincias. Así no tienes que hacer submit de la página.

Si te suena a chino, puedes googlear un poco html ajax javascript y verás códigos de ejemplo con lo que necesitas. Para simplificar los procedimientos con Ajax, te recomiendo el framework jQuery, es una agrupación de funciones que usando javascript te permite trabajar con el DOM de HTML de una forma más potente y eficiente.

Un saludo.

Gracias,googleare un poco,porque se para lo que sirve AJAX ero nunca lo he tocado ,asi aprendo algo nuevo que precisamente por eso estoy con esto,ya que de programacion web ando muy justo
De nada, ya nos cuentas.

Cuando te metas en el fregao, si te surgen dudas o algún problema, le echamos un ojo.

Un saludo.
La verdad es que estoy echo un lio XD,aunque me esta sirviendo para ir aprendiendo,lo primero que pense escribir una funcion en php que realice la consulta para obtener los estados del pais seleccionado en el primer select pero creo que con el evento onchange creo que no se puede llamar una funcion php(corregidme s me equivoco),y estoy mirando ejemplos de AJAX pero no cabo de acomodar lo que yo quiero con lo que veo en los tutoriales

edito:
Encontre un ejemplo que es exactamente lo que busco ,pero no acabo de entenderlo entero,por ejemplo se incluye un fichero js con lasfunciones javascript necesarias pero no veo que las llamen en ningun sitio,en fin me va a tocar estudiarlo bien jeje
Si no te aclaras con el AJAX (que yo te aconsejaria que estudiaras bien, ya que se usa mucho) puedes probar donde el segundo combobox, rodearlo de un if y dentro comprobar con el comando isset si la varabiable del primer combobox esta llena, entonces en el momento en el que selecciones el primer combobox, rellenara la variable, y entrara en el if, osea

php{}
combobox1
if(isset(variable combobox1)){
php{}
combobox2
}


Lo malo de este sistema es que recargas la pagina dos veces, y con AJAX no necesitarías recargar la pagina por decirlo de alguna forma, por ello te aconsejo que practiques un poco con AJAX y javascript.
Hola,

te intento resumir un poco lo que puedes hacer:

1) Descargarte el framework jquery, es un .js que incluyes en la cabecera de tu página, y te va a facilitar bastante trabajar con AJAX.

2) Como usar AJAX con jquery:

Tendrás que hacerte una función javascript que contenga este código, y que se dispare en el onclick.

$.ajax({
   type: "POST",
   url: "tu.php",
   data: "id_pais=(el valor seleccionado del combo de paises)",
   success: carga_combo(msg){
     //Código que haga un .innerHtml sobre el combo;
   }
});


Te resumo los parámetros:
TYPE: Será el tipo de envío de datos GET o POST.
URL: El .php al que se llamará (en tu caso tiene que ser el que haga la query para listar las provincias de un país).
DATA: Los parámetros que envías a tu .php, en tu caso creo que con un id_pais bastará. Si necesitas más parámetros, sería id_pais=x&id_capital=x&n=x.
SUCCESS: la función javascript de tu página html que tratará la información que devuelve el .php.

En tu .php puedes montar un string html con el listado de valores devueltos por la query y realizar un return de esa cadena. Luego en la página HTML en la función carga_combo que recibe el string, si este no es nulo, hacer un .innerHTML en el combo con tu string de valores.

A día de hoy, hacer una recarga de página para listar valores secundarios de combos está un poco obsoleto, a menos que tengas limitaciones a nivel de que no puedas usar javascript o algo parecido. El AJAX a nivel usuario es mucho más cómodo y te da sensación de robustez el no estar viendo recargas continuas de páginas.

Un saludo y ánimo.
Ya esta echo,gracias por la ayuda.
Una pregunta mas,aque hace referencia parentNode?? por ejemplo this.parentNode haria referencia al elemento que contiene a this ?por ejemplo di esta dentro de div,this parentNode seria ese div no?
10 respuestas