Foros del Web » Programando para Internet » PHP »

Guardar valor de un Select

Estas en el tema de Guardar valor de un Select en el foro de PHP en Foros del Web. Hola amigos traigo este problemita........ Utilizo un combo para el clasico Pais, Estado, Ciudad... Funciona muy bien,.... el problema es que cuando guardo el valor ...
  #1 (permalink)  
Antiguo 11/12/2010, 22:23
 
Fecha de Ingreso: mayo-2008
Mensajes: 103
Antigüedad: 15 años, 10 meses
Puntos: 0
Pregunta Guardar valor de un Select

Hola amigos traigo este problemita........

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 >
  #2 (permalink)  
Antiguo 12/12/2010, 00:06
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Guardar valor de un Select

deberías saber que el valor que se pasa por el formulario es siempre el value, así que lo que pongas ahí recibirás...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 12/12/2010, 06:46
Avatar de ElJavista
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: Lima Perú
Mensajes: 2.231
Antigüedad: 17 años, 1 mes
Puntos: 67
Respuesta: Guardar valor de un Select

Para que te guarde el nombre del pais solo debes imprimir o colocar en value el nombre del país no su ID, por otra parte tendré que darte una pequeña orientación sobre base de datos.

En realidad es correcto que se guarde el ID, así se hace en sistema decente. Eso es una base de datos relacional, supongo que usas MySQL. No debes guardar cada nombre del país porque estarías multiplicando datos. Solo guarda el ID, eso está muy bien. Ahora, seguro estás pensando que lo que quieres después es obtener el nombre del país mediante una consulta. Para eso existe el INNER JOIN. Solo busca "MySQL INNER JOIN" y verás para qué sirve y como se usa.

Nada más por lo pronto. Suerte!
  #4 (permalink)  
Antiguo 12/12/2010, 07:45
 
Fecha de Ingreso: enero-2010
Ubicación: Colombia
Mensajes: 238
Antigüedad: 14 años, 3 meses
Puntos: 2
Respuesta: Guardar valor de un Select

En el value del select, debes escribir los nombres de los paises, dptos, tec, por que los formularios siempre guardan la informacion que se encuentra dentro de los 'values'

Ejemplo,

<select name="pais" ><option>
<option value="Colombia">Colombia</option>
<option value="USA">USA</option>
</select>

En este caSO guardara los valores 'Colombia' o 'USA
'
  #5 (permalink)  
Antiguo 12/12/2010, 13:58
 
Fecha de Ingreso: mayo-2008
Mensajes: 103
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Guardar valor de un Select

Gracias a todos por sus respuestas......... estuve viendo lo de INNER JOIN pero la verdad no pude hacerlo..............

se me ocurrio guardar el valorl Select al momento que serellena y compararlo con la base de datos para sacar el nombre y guardar el resultadoen una variable... a lo mejor era mas facil con INNER JOIN pero no pude........... de esta forma ya me guarda el nombre en labase de datos y no el numero.............

Código PHP:
          $idesta $_POST["estado"];
                
$est mysql_query("SELECT * FROM estado WHERE idestado = $idesta  ");
                
$cant_est =  mysql_num_rows($est);
                
$rs_estado mysql_fetch_array($est);
                
$estado $rs_estado["estado"]; 
                
                
$idciudad $_POST["ciudad"];
                
$ciu mysql_query("SELECT * FROM ciudad WHERE idciudad = $idciudad  ");
                
$cant_ciu =  mysql_num_rows($ciu);
                
$rs_ciudad mysql_fetch_array($ciu);
                
$ciudad $rs_ciudad["ciudad"]; 
  #6 (permalink)  
Antiguo 13/12/2010, 08:16
Avatar de ElJavista
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: Lima Perú
Mensajes: 2.231
Antigüedad: 17 años, 1 mes
Puntos: 67
Respuesta: Guardar valor de un Select

Pon tu estructura de base de datos y te doy la sentencia con INNER JOIN que necesitas.
  #7 (permalink)  
Antiguo 13/12/2010, 10:59
 
Fecha de Ingreso: mayo-2008
Mensajes: 103
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Guardar valor de un Select

Te lo agradezco mucho ElJavista

aquí van las estructuras de las tablas.....


-- Estructura de tabla para la tabla `pais`
--

CREATE TABLE IF NOT EXISTS `pais` (
`idpais` int(11) unsigned NOT NULL auto_increment,
`pais` varchar(50) default NULL,
PRIMARY KEY (`idpais`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

--
-- Volcar la base de datos para la tabla `pais`
--

INSERT INTO `pais` (`idpais`, `pais`) VALUES
(1, 'México');

************************************************** **********************************

-- Estructura de tabla para la tabla `estado`

CREATE TABLE IF NOT EXISTS `estado` (
`idestado` int(11) unsigned NOT NULL auto_increment,
`estado` varchar(50) default NULL,
`pais` int(11) NOT NULL default '0',
PRIMARY KEY (`idestado`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=33 ;

INSERT INTO `estado` (`idestado`, `estado`, `pais`) VALUES
(1, 'Aguascalientes', 1),
(2, 'Baja California', 1),
(3, 'Baja California Sur', 1),
(4, 'Campeche', 1),

etc.......


************************************************** ***********************************
-- Base de datos: `vission_vissiontotal`
--
-- Estructura de tabla para la tabla `ciudad`

CREATE TABLE IF NOT EXISTS `ciudad` (
`idciudad` int(10) unsigned NOT NULL auto_increment,
`ciudad` varchar(50) NOT NULL default '',
`estado` int(11) NOT NULL default '0',
`pais` int(10) unsigned NOT NULL default '0',
PRIMARY KEY (`idciudad`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=2422 ;

INSERT INTO `ciudad` (`idciudad`, `ciudad`, `estado`, `pais`) VALUES
(1, 'Aguascalientes', 1, 1),
(2, 'Asientos', 1, 1),
(3, 'Calvillo', 1, 1),

etc...........
  #8 (permalink)  
Antiguo 14/12/2010, 13:42
Avatar de ElJavista
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: Lima Perú
Mensajes: 2.231
Antigüedad: 17 años, 1 mes
Puntos: 67
Respuesta: Guardar valor de un Select

Código:
SELECT pai.idpais, pai.pai, est.idestado, est.estado, ciu.idciudad, ciu.ciudad
FROM pais 
INNER JOIN estado est ON pai.id = est.pais
INNER JOIN ciudad ciu ON est.id = ciu.estado AND pai.id = ciu.pais
WHERE est.idestado = $idestado
Servido.
  #9 (permalink)  
Antiguo 15/12/2010, 14:32
 
Fecha de Ingreso: mayo-2008
Mensajes: 103
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Guardar valor de un Select

Muchas gracias por la ayuda.......

voy a estudiar bien la sentencia para saber cómo es su funcionamiento y ponerla en mi web

voy aprendiendo lo que voy implementando en mi pagina y esta es nueva para mi....

muchas gracias..............

Etiquetas: 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 14:48.