Foros del Web » Programando para Internet » PHP »

tres combobox depedientes

Estas en el tema de tres combobox depedientes en el foro de PHP en Foros del Web. Hola Utilizo esta programación para tener dos combox dependientes, pero no logro que funcionen tres sin que se cambien los datos del primero cuando selleciono ...
  #1 (permalink)  
Antiguo 06/11/2008, 10:52
 
Fecha de Ingreso: enero-2007
Mensajes: 23
Antigüedad: 17 años, 3 meses
Puntos: 0
tres combobox depedientes

Hola
Utilizo esta programación para tener dos combox dependientes, pero no logro que funcionen tres sin que se cambien los datos del primero cuando selleciono el segundo ¿Como podria añadir el tercero para las ciudades?

<?
mysql_select_db($database_conexion, $conexion);
$query_pais = "SELECT * FROM paises ORDER BY pais ASC";
$pais = mysql_query($query_pais, $conexion) or die(mysql_error());
$row_pais = mysql_fetch_assoc($pais);
$totalRows_pais = mysql_num_rows($pais);

$colname_estado = "-1";
if (isset($_POST['id_pais'])) {
$colname_estado = $_POST['id_pais'];
}
mysql_select_db($database_conexion, $conexion);
$query_estado = sprintf("SELECT id_estado, estado FROM estados WHERE relacion = %s ORDER BY estado ASC", GetSQLValueString($colname_estado, "int"));
$estado = mysql_query($query_estado, $conexion) or die(mysql_error());
$row_estado = mysql_fetch_assoc($estado);
$totalRows_estado = mysql_num_rows($estado);
?>

// Primer combo

<select class="letras" name="id_pais" id="select" onChange="submit()">
<option value="0">Aqui Los distintos paises</option>
</select>

// Segundo combo

<select class="letras" name="id_estado" id="id_estado">
<option value="0" selected>Aqui las distintas provincias y estados</option>
  #2 (permalink)  
Antiguo 06/11/2008, 14:56
Avatar de sub_cero  
Fecha de Ingreso: noviembre-2008
Mensajes: 8
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: tres combobox depedientes

Puedes hacerlo de la siguiente manera."submit()" puede ser una funcion en JavaScript para mandar a ejecutar el submit del formulario. Si no has seleccionado ningun pais no aparecen los estados ni las ciudades y si no has seleccionado un estado no aparecen las ciudades.

<form action="{$url}" method="post" enctype="application/x-www-form-urlencoded">
<!--Primer Combo-->
<?php
$conexion=mysql_connect($host,$user,$pass);
mysql_select_db($database_conexion, $conexion);

if(!isset($_POST['country']))
$_POST['country']=-1;

$Rc=mysql_query("SELECT id,name FROM countries ORDER BY name ASC",$conexion) or die("Error");
$row=mysql_fetch_assoc($Rc);
?>
<select class="letras" name="country" id="country" onChange="submit()">
<?php
if($row)
{
?>
<option value="-1" <?php if($_POST['country']==-1){echo 'selected="selected"';}?> >Selecione el Paises</option>
<?php
}
while($row)
{
?>
<option value="<?php echo $row['id'];?>" <?php if($_POST['country']==$row['id']){echo 'selected="selected"';}
?> ><?php echo $row['name'];?></option>
<?php
$row=mysql_fetch_assoc($Rc);
}
?>
</select>
<!-- Segundo Combo-->
<?php
if($_POST['country']>=0)
{
if(!isset($_POST['state']))
$_POST['state']=-1;

$Rc=mysql_query("SELECT id,name FROM states WHERE idpais=".$_POST['country'].
" ORDER BY name ASC",$conexion) or die("Error");
$row=mysql_fetch_assoc($Rc);
?>
<select class="letras" name="state" id="state" onChange="submit()">
<?php
if($row)
{
?>
<option value="-1" <?php if($_POST['state']==-1){echo 'selected="selected"';}?> >Selecione el Estado</option>
<?php
}
while($row)
{
?>
<option value="<?php echo $row['id'];?>" <?php if($_POST['state']==$row['id']){echo 'selected="selected"';}
?> ><?php echo $row['name'];?></option>
<?php
$row=mysql_fetch_assoc($Rc);
}
?>
</select>
<!-- Tercer Combo-->
<?php
if($_POST['state']>=0)
{
if(!isset($_POST['city']))
$_POST['city']=-1;

$Rc=mysql_query("SELECT id,name FROM cities WHERE idstate=".$_POST['state'].
" ORDER BY name ASC",$conexion) or die("Error");
$row=mysql_fetch_assoc($Rc);
?>
<select class="letras" name="city" id="city" >
<?php
if($row)
{
?>
<option value="-1" <?php if($_POST['city']==-1){echo 'selected="selected"';}?> >Selecione la Ciudad</option>
<?php
}
while($row)
{
?>
<option value="<?php echo $row['id'];?>" <?php if($_POST['city']==$row['id']){echo 'selected="selected"';}
?> ><?php echo $row['name'];?></option>
<?php
$row=mysql_fetch_assoc($Rc);
}
?>
</select>
<?php
}
?>
<?php
}
?>
</form>
  #3 (permalink)  
Antiguo 06/11/2008, 16:06
Avatar de boby6killer  
Fecha de Ingreso: abril-2008
Mensajes: 81
Antigüedad: 16 años
Puntos: 1
Respuesta: tres combobox depedientes

ajax es la solucion. Ese script ya esta hecho y lo puedes encontrar buscando un poquito en la web
  #4 (permalink)  
Antiguo 07/11/2008, 02:55
Avatar de Silko  
Fecha de Ingreso: septiembre-2008
Mensajes: 62
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: tres combobox depedientes

Te popngo un trozo de mi codigo a ver si te sirve para aplicarlo al tullo:
(lo mismo pasaria con el segundo select)

Código PHP:

/*con onchange enviamos el parametro $_Post nada mas seleccionarlo, para que realice la segunda consulta con dicho parametro*/

echo "<select name='comunidad' id='comunidad' class='campo' onchange='this.form.submit()'>";
        
/*Si no se ha enviado ningun parametro*/
    
if (empty($_POST["comunidad"]) ){
        echo 
"<option selected value=0 >Cualquiera";//seleccionado por defecto
    
}else{
        echo 
"<option value=0 >Cualquiera";
    }
    
$j=1;
    
/*Escrbe las comunidades tomadas de la base de datos*/
    
while ($j<$c){


                
/*Al hacer onchange se vuelve a realizar la consulta de comunidades para no perder el dato comoparamos el valor enviado  con la consulta de comunidades y cuando estos dos coincidan*/

        
if ($_POST["comunidad"] == $comunidades[$j]){
            echo 
"<option value='".$comunidades[$j]."' selected>".$comunidades[$j]."";/*Cuando coincidan pongo dicha en el option de dicha comunidad la propiedad "selected"*/
        
}
        else{
            echo 
"<option value='".$comunidades[$j]."' >".$comunidades[$j]."";
        }
    
$j++;
    }
echo 
"</select>"
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:48.