Utilizo un combo para el clasico Pais, Estado, Ciudad... Funciona muy bien,.... el problema es que cuando guardo el valor de los Select en la base de datos se guarda el número que corresponde a al estado por ejemplo y no se guarda el nombre del estado que es lo que me interesa...................
El valor de los Select se guardar por ejemplo...... $ciudad = $_POST['ciudad'];
Y esto seria el Select.........
Código HTML:
<select id="estado" name="estado" onChange=""> <option value="0" selected="selected">----------------</option> </select>
Este es el Scrip que utilizo en la pagina para que el combo funcione....
Código PHP:
<script src="jquery.js"></script>
<script>
$(document).ready(function(){
$("select").change(function(){
// Vector para saber cuál es el siguiente combo a llenar
var combos = new Array();
combos['pais'] = "estado";
combos['estado'] = "ciudad";
// Tomo el nombre del combo al que se le a dado el clic por ejemplo: país
posicion = $(this).attr("name");
// Tomo el valor de la opción seleccionada
valor = $(this).val()
// Evaluó que si es país y el valor es 0, vacié los combos de estado y ciudad
if(posicion == 'pais' && valor==0){
$("#estado").html(' <option value="0" selected="selected">----------------</option>')
$("#ciudad").html(' <option value="0" selected="selected">----------------</option>')
}else{
/* En caso contrario agregado el letreo de cargando a el combo siguiente
Ejemplo: Si seleccione país voy a tener que el siguiente según mi vector combos es: estado por qué combos [país] = estado
*/
$("#"+combos[posicion]).html('<option selected="selected" value="0">Cargando...</option>')
/* Verificamos si el valor seleccionado es diferente de 0 y si el combo es diferente de ciudad, esto porque no tendría caso hacer la consulta a ciudad porque no existe un combo dependiente de este */
if(valor!="0" || posicion !='ciudad'){
// Llamamos a pagina de combos.php donde ejecuto las consultas para llenar los combos
$.post("combos.php",{
combo:$(this).attr("name"), // Nombre del combo
id:$(this).val() // Valor seleccionado
},function(data){
$("#"+combos[posicion]).html(data); //Tomo el resultado de pagina e inserto los datos en el combo indicado
})
}
}
})
})
</script>
Este el el archivo llamado combos.php
Código PHP:
<?
function conexion(){
if (!(require_once('Connections/vissiontotal.php'))){
die("Error conectando a la base de datos.......");
}
if (!mysql_select_db($database_vissiontotal)){
die("Error seleccionando la base de datos..");
}
}
$conection = conexion();
$idcombo = $_POST["id"];
$action =$_POST["combo"];
switch($action){
case "pais":{
$res = mysql_query("SELECT idestado,estado FROM estado WHERE pais = $idcombo order by estado ASC");
while($rs = mysql_fetch_array($res))
echo '<option value="'.$rs["idestado"].'">'.htmlentities($rs["estado"]).'</option>';
break;
}
case "estado":{
$res = mysql_query("SELECT idciudad,ciudad FROM ciudad WHERE estado= $idcombo order by ciudad ASC");
while($rs = mysql_fetch_array($res))
echo '<option value="'.$rs["idciudad"].'">'.htmlentities($rs["ciudad"]).'</option>';
break;
}
}
?>
Y esto es lo que pongo en el primer Select de Pais... los otros se actualizan y rellenan solos....
Código PHP:
<select name="pais" id="pais">
<option selected="selected" value="0">---------</option>
<?
$res = mysql_query("SELECT * FROM pais");
$cant = mysql_num_rows($res);
if($cant>0){
while($rs = mysql_fetch_array($res)){
?>
<option value="<?=$rs["idpais"]?>">
<?=$rs["pais"]?>
</option>
<?
}
}
?>
</select >