Ver Mensaje Individual
  #11 (permalink)  
Antiguo 07/09/2005, 15:33
Avatar de tyo100
tyo100
 
Fecha de Ingreso: febrero-2005
Ubicación: Monterrey, NL
Mensajes: 475
Antigüedad: 19 años, 2 meses
Puntos: 1
ADRIANA_TE_AMO => DUDO_DE_ADRIANA => ADIÓS_ADRIANA son la misma persona????

Bueno que importa quien sea, la unica forma que se me ocurrio es hacer uso de JOIN MySQL, mira hay que cambiar los nombres de algunos campos

en cities, name lo cambias por city y en sates, name por state

Bueno tiene un problema, solo funciona la primera vez, que se cambia, el pais, pero al hacerlo por segunda vez ya existe un estado seleccionado por lo tanto no lo limpia

Código PHP:
<? 
// datos de conexion a la BD. 
$servidor  "localhost"// host 
$usuario   "root"
$clave     ""
$basedatos ""// Indicar una Base de datos. 

// si se ha pulsao el boton enviar ($enviado) se procesa el formulario .. 
// Sino, se continua con el formulario y los nuevos valores de los Select .. 
// OJO si se tienen mas varibles (mas <input> ) se van a perder sus valores a no ser 
// que los obtengamos y se les de como valor inicial en el value= de cada uno segun corresponda. 

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']."<br>"
    echo 
"Recibido id_tabla_nieta: ".$_POST['id_nieta']; 
}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 envio a si mismo del formulario .. 
    
if(isset($_POST['id_padre'])){ 
        
$id_padre=$_POST['id_padre']; 
    }
    if(isset(
$_POST['id_hija'])){ 
        
$id_hija=$_POST['id_hija']; 
    }    
    
// Inicio Formulario .. PHP_SELF enviamos a si 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 countries"
    
$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['country_id']){ 
            echo 
"<option value=\"".$registro_padre['country_id']."\" selected>".$registro_padre['name']."</option>\n"
        } else { 
            echo 
"<option value=\"".$registro_padre['country_id']."\">".$registro_padre['name']."</option>\n"
        } 
    } 
    echo 
"</select>\n\n"
    
mysql_free_result($consulta_padre); // Liberar memoria usada por consulta. 
    // Formar Select "Hijo" 
    
echo "<select name=\"id_hija\" onChange=\"this.form.submit()\">\n"
    
// Si $id_padre no tiene valor (caso de que no se ha seleccionado ningua opcion del select hijo 
    // se muestra el mensaje de "seleccine un item" (del select padre). 
    
if (!empty($id_padre)){
        
$SQLconsulta_hija="SELECT * FROM states WHERE country_id='$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)){ 
                if (
$id_hija == $registro_hija['state_id']){
                    echo 
"<option value=\"".$registro_hija['state_id']."\" selected>".$registro_hija['state']."</option>\n"
                } else { 
                    echo 
"<option value=\"".$registro_hija['state_id']."\">".$registro_hija['state']."</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"
    
// Formar Select "Nieto" 
    
echo "<select name=\"id_nieta\">\n"
    
// Si $id_padre no tiene valor (caso de que no se ha seleccionado ningua opcion del select hijo 
    // se muestra el mensaje de "seleccine un item" (del select padre). 
    
if (!empty($id_hija)){ 
        
$SQLconsulta_nieta="SELECT * FROM cities WHERE state_id='$id_hija'"
        
$consulta_nieta mysql_query($SQLconsulta_nieta,$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_nieta) != 0){
            While   (
$registro_nieta=mysql_fetch_assoc($consulta_nieta  )){
                echo 
"<option value=\"".$registro_nieta['id']."\">".$registro_nieta['city']."</option>\n";
            }
        } else { 
            echo 
"<option value=\"\"> No hay registros para este Item </option>"
        } 
    } else {
        if (empty(
$id_padre)){
            echo 
"<option value=\"\"> <-- Seleccione un Item  </option>"
        }else {
            
$SQLconsulta_nieta="SELECT * FROM cities LEFT JOIN states on states.state_id=cities.state_id WHERE states.country_id='$id_padre'"
            
$consulta_nieta mysql_query($SQLconsulta_nieta,$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_nieta) != 0){ 
                While   (
$registro_nieta=mysql_fetch_assoc($consulta_nieta  ))  { 
                    echo 
"<option value=\"".$registro_nieta['id']."\">".$registro_nieta['city']."</option>\n"
                }
            } else { 
                echo 
"<option value=\"\"> No hay registros para este Item </option>";
            }
        }
    } 
    
mysql_free_result($consulta_nieta); // Liberar memoria usada por consulta. 
    
echo "</select>\n\n"
    echo 
"<input type=\"submit\" name=\"enviado\" value=\" Enviar \" >\n\n"
    echo 
"</form>\n"
}
?>
Pero con un poco de Javascript
cambia onChange... por
onChange=\"this.form.id_hija.options.selectedIndex = -1;this.form.submit()\"
en echo "<select name=\"id_padre\" onChange=
__________________
Desde la tierra de los nopales, las tortillas de maiz, y en cuya ciudad se encuenta el cerro de la silla.
NalgAss Web
SpiderMex - La Historia del Hombre Araña en MEXICO

Última edición por tyo100; 07/09/2005 a las 15:43