Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Error selects dependientes

Estas en el tema de Error selects dependientes en el foro de PHP en Foros del Web. Tengo 3 selects, estados, municipios y localidades y el problema es el siguiente: Cuando selecciono un estado me carga los municipios bien, e igualmente con ...
  #1 (permalink)  
Antiguo 15/02/2016, 23:52
 
Fecha de Ingreso: enero-2016
Ubicación: Venezuela
Mensajes: 139
Antigüedad: 8 años, 3 meses
Puntos: 3
Error selects dependientes

Tengo 3 selects, estados, municipios y localidades y el problema es el siguiente:

Cuando selecciono un estado me carga los municipios bien, e igualmente con los municipios me carga las localidades bien, pero si tengo seleccionadas las 3 opciones al darle click en Seleccione un municipio: que es la primera opción del select me salen todas las localidades, realicé estos selects con ajax y php pero supongo que esto es parte de php...
  #2 (permalink)  
Antiguo 16/02/2016, 09:43
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Error selects dependientes

Cita:
pero supongo que esto es parte de php...
Mejor no supongas y muestra lo que has hecho.

En teoría, si los scripts de PHP hacen lo que deben no tendrías problema ¿los has ejecutado directamente sin Ajax y los resultados son los correctos?

Pero bueno, sin conocer ambos código es difícil entender así como es bien fácil echarle la culpa a PHP.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 16/02/2016, 11:47
 
Fecha de Ingreso: enero-2016
Ubicación: Venezuela
Mensajes: 139
Antigüedad: 8 años, 3 meses
Puntos: 3
Respuesta: Error selects dependientes

Cita:
Iniciado por pateketrueke Ver Mensaje
Mejor no supongas y muestra lo que has hecho.
Tengo un archivo llamado funciones.php que tiene estas funciones:

Código PHP:
function dameEstado(){
    
$resultado false;
    
$consulta "SELECT * FROM estados ORDER by nombreestado" ;
    
    
$conexion conectaBaseDatos();
    
$sentencia $conexion->prepare($consulta);
    
    try {
        if(!
$sentencia->execute()){
            
print_r($sentencia->errorInfo());
        }
        
$resultado $sentencia->fetchAll();
        
//$resultado = $sentencia->fetchAll(PDO::FETCH_ASSOC);
        
$sentencia->closeCursor();
    }
    catch(
PDOException $e){
        echo 
"Error al ejecutar la sentencia: \n";
            
print_r($e->getMessage());
    }
    
    return 
$resultado;
}

function 
dameMunicipio($estado ''){
    
$resultado false;
    
$consulta "SELECT * FROM municipios";
    
    if(
$estado != ''){
        
$consulta .= " WHERE idestado = :nombreestado ORDER by nombremunicipio";
    }
    
    
$conexion conectaBaseDatos();
    
$sentencia $conexion->prepare($consulta);
    
$sentencia->bindParam('nombreestado',$estado);
    
    try {
        if(!
$sentencia->execute()){
            
print_r($sentencia->errorInfo());
        }
        
$resultado $sentencia->fetchAll();
        
//$resultado = $sentencia->fetchAll(PDO::FETCH_ASSOC);
        
$sentencia->closeCursor();
    }
    catch(
PDOException $e){
        echo 
"Error al ejecutar la sentencia: \n";
            
print_r($e->getMessage());
    }
    
    return 
$resultado;
}

function 
dameLocalidad($municipio ''){
    
$resultado false;
    
$consulta "SELECT * FROM localidades";
    
    if(
$municipio != ''){
        
$consulta .= " WHERE idmunicipio = :nombremunicipio ORDER by nombrelocalidad";
    }
    
    
$conexion conectaBaseDatos();
    
$sentencia $conexion->prepare($consulta);
    
$sentencia->bindParam('nombremunicipio',$municipio);
    
    try {
        if(!
$sentencia->execute()){
            
print_r($sentencia->errorInfo());
        }
        
$resultado $sentencia->fetchAll();
        
//$resultado = $sentencia->fetchAll(PDO::FETCH_ASSOC);
        
$sentencia->closeCursor();
    }
    catch(
PDOException $e){
        echo 
"Error al ejecutar la sentencia: \n";
            
print_r($e->getMessage());
    }
    
    return 
$resultado;

Otro llamado buscar.php

Código PHP:
<?php
require_once("funciones.php");

if(isset(
$_POST['estado'])){
    
    
$municipios dameMunicipio($_POST['estado']);
    
    
$html "<option value=''>Seleccione un Municipio</option>";
    foreach(
$municipios as $indice => $registro){
        
$html .= "<option value='".$registro['idmunicipio']."'>".$registro['nombremunicipio']."</option>";
    }
    
    
$respuesta = array("html"=>$html);
    echo 
json_encode($respuesta);
}

if(isset(
$_POST['municipio'])){
    
    
$localidadesdameLocalidad($_POST['municipio']);
    
    
$html "<option value=''>Seleccione una Localidad</option>";
    foreach(
$localidades as $indice => $registro){
        
$html .= "<option value='".$registro['idlocalidad']."'>".$registro['nombrelocalidad']."</option>";
    }
    
    
$respuesta = array("html"=>$html);
    echo 
json_encode($respuesta);
}
Repito el problema: Al seleccionar un estado y luego que me carguen los municipios de ese estado, al darle click en Seleccione un municipio: que es la primera opción del select del municipio, me devuelve todas las localidades registradas en la base de datos..

Gracias.
  #4 (permalink)  
Antiguo 16/02/2016, 12:03
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Error selects dependientes

Cita:
al darle click en Seleccione un municipio: que es la primera opción del select del municipio, me devuelve todas las localidades registradas en la base de datos..
Ya entiendo, te explico:

El asunto es que el value de dicha opción está vacio, ¿qué supone esto?

Cuando construyes tus consultas verificas si $municipio está vacío (lo cual está) y en caso contrario agregas el WHERE.

¿Qué sucede?

Pues que la consulta se queda sin WHERE y por eso saca todo de la base de datos.

El problema es tu lógica.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 16/02/2016, 12:39
 
Fecha de Ingreso: enero-2016
Ubicación: Venezuela
Mensajes: 139
Antigüedad: 8 años, 3 meses
Puntos: 3
Respuesta: Error selects dependientes

Tienes razón, en dameLocalidad coloqué un else que no me devuelva las localidades, muchas gracias.

Saludos.

Etiquetas: dependientes, select, selects
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 09:23.