Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/11/2013, 03:26
cristiangd00
 
Fecha de Ingreso: octubre-2013
Ubicación: Asturias
Mensajes: 52
Antigüedad: 10 años, 6 meses
Puntos: 1
Problema eleccion multiple de select (json)

Buenos dís, tengo un problema a la hora de realizar una eleccion multiple. No se en que falla y no encuentro solución.

formulario.php
Código PHP:
Ver original
  1. <?php
  2. require_once("funciones.php");
  3. ?>
  4. <!doctype html>
  5. <html>
  6. <head>
  7. <meta charset="utf-8">
  8. <title></title>
  9. <script src="jquery-1.10.2.min.js"></script>
  10.  
  11. </head>
  12.  
  13. <body>
  14. <form style="width: 480px">
  15.     <fieldset>
  16.     <legend>Prueba</legend>
  17.     <label>Grupo:</label>
  18.         <select name="grupo" id="grupo">
  19.                 <option value="">- Seleccione un Grupo -</option>
  20.         <?php
  21.         $grupos = dameGrupo();
  22.        
  23.         foreach($grupos as $indice => $registro){
  24.             echo "<option value=".$registro['grupo'].">".$registro['grupo']."</option>";
  25.         }
  26.         ?>
  27.     </select>
  28.     <br><br>
  29.     <label>Seccion:</label>
  30.         <select name="seccion" id="seccion">
  31.                 <option value="">- primero seleccione un grupo -</option>
  32.    
  33.     </select>
  34.     <br><br>
  35.     <label>Denominacion:</label>
  36.         <select name="denominacion" id="denominacion">
  37.                 <option value="">- primero seleccione una seccion -</option>
  38.     </select>
  39.     </fieldset>
  40. </form>
  41. <hr>
Código Javascript:
Ver original
  1. <script>
  2. $("#grupo").on("change", buscarSecciones);
  3. $("#seccion").on("change", buscarDenominacion);
  4.  
  5. function buscarSecciones(){
  6.     $("#denominacion").html("<option value=''>- primero seleccione una seccion -</option>");
  7.     $grupo = $("#grupo").val();
  8.    
  9.     if($grupo == ""){
  10.             $("#seccion").html("<option value=''>- primero seleccione un grupo -</option>");
  11.     }
  12.     else {
  13.         $.ajax({
  14.             dataType: "json",
  15.             data: {"grupo": $grupo},
  16.             url:   'buscar.php',
  17.             type:  'post',
  18.             beforeSend: function(){
  19.                 //Lo que se hace antes de enviar el formulario
  20.                 },
  21.             success: function(respuesta){
  22.                 //lo que se si el destino devuelve algo
  23.                 $("#seccion").html(respuesta.html);
  24.             },
  25.             error:  function(xhr,err){
  26.                 alert("readyState: "+xhr.readyState+"\nstatus: "+xhr.status+"\n \n responseText: "+xhr.responseText);
  27.             }
  28.         });
  29.     }
  30. }
  31. function buscarDenominaciones(){
  32.     $seccion = $("#seccion").val();
  33.    
  34.     $.ajax({
  35.         dataType: "json",
  36.         data: {"seccion": $seccion},
  37.         url:   'buscar.php',
  38.         type:  'post',
  39.         beforeSend: function(){
  40.             //Lo que se hace antes de enviar el formulario
  41.             },
  42.         success: function(respuesta){
  43.             //lo que se si el destino devuelve algo
  44.             $("#denominacion").html(respuesta.html);
  45.         },
  46.         error:  function(xhr,err){
  47.             alert("readyState: "+xhr.readyState+"\nstatus: "+xhr.status+"\n \n responseText: "+xhr.responseText);
  48.         }
  49.     });
  50. }
  51.  
  52. </script>
</body>
</html>


buscar.php
Código PHP:
Ver original
  1. ?php
  2. require("funciones.php");
  3.  
  4. if(isset($_POST['grupo'])){
  5.    
  6.     $secciones = dameSeccion($_POST['grupo']);
  7.     $html = "<option value=''>- Seleccione una Seccion -</option>";
  8.     foreach($secciones as $indice => $registro){
  9.         $html .= "<option value='".$registro['seccion']."'>".$registro['seccion']."</option>";
  10.     }
  11.    
  12.     $respuesta = array("html"=>$html);
  13.     echo json_encode($respuesta);
  14. }
  15.  
  16. if(isset($_POST['seccion'])){
  17.    
  18.     $denominaciones= dameDenominacion($_POST['seccion']);
  19.    
  20.     $html = "<option value=''>- Seleccione una Denominacion -</option>";
  21.     foreach($denominaciones as $indice => $registro){
  22.         $html .= "<option value='".$registro['denominacion']."'>".$registro['denominacion']."</option>";
  23.     }
  24.    
  25.     $respuesta = array("html"=>$html);
  26.     echo json_encode($respuesta);
  27. }
  28.  
  29. ?>
funciones.php
Código PHP:
Ver original
  1. <?php
  2.  
  3. /* Archivo para funciones */
  4.  
  5. function conectaBaseDatos(){
  6.     try{
  7.         $servidor = "localhost";
  8.         $puerto = "3306";
  9.         $basedatos = "cria";
  10.         $usuario = "rasty";
  11.         $contrasena = "rasty";
  12.    
  13.         $conexion = new PDO("mysql:host=$servidor;port=$puerto;dbname=$basedatos",
  14.                             $usuario,
  15.                             $contrasena,
  16.                             array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
  17.        
  18.         $conexion->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
  19.         return $conexion;
  20.     }
  21.     catch (PDOException $e){
  22.         die ("No se puede conectar a la base de datos". $e->getMessage());
  23.     }
  24. }
  25.  
  26. function dameGrupo(){
  27.     $resultado = false;
  28.     $consulta = "SELECT grupo FROM grupo";
  29.    
  30.     $conexion = conectaBaseDatos();
  31.     $sentencia = $conexion->prepare($consulta);
  32.    
  33.     try {
  34.         if(!$sentencia->execute()){
  35.             print_r($sentencia->errorInfo());
  36.         }
  37.         $resultado = $sentencia->fetchAll();
  38.         //$resultado = $sentencia->fetchAll(PDO::FETCH_ASSOC);
  39.         $sentencia->closeCursor();
  40.     }
  41.     catch(PDOException $e){
  42.         echo "Error al ejecutar la sentencia: \n";
  43.             print_r($e->getMessage());
  44.     }
  45.    
  46.     return $resultado;
  47. }
  48.  
  49. function dameSeccion($grupo = ''){
  50.     $resultado = false;
  51.     $consulta = "SELECT  * FROM seccion ";
  52.    
  53.     if($grupo != ''){
  54.         $consulta .= " WHERE grupo = :grupo";
  55.     }
  56.    
  57.     $conexion = conectaBaseDatos();
  58.     $sentencia = $conexion->prepare($consulta);
  59.     $sentencia->bindParam('grupo',$grupo);
  60.    
  61.     try {
  62.         if(!$sentencia->execute()){
  63.             print_r($sentencia->errorInfo());
  64.         }
  65.         $resultado = $sentencia->fetchAll();
  66.         $resultado = $sentencia->fetchAll(PDO::FETCH_ASSOC);
  67.         $sentencia->closeCursor();
  68.     }
  69.     catch(PDOException $e){
  70.         echo "Error al ejecutar la sentencia: \n";
  71.             print_r($e->getMessage());
  72.     }
  73.    
  74.     return $resultado;
  75. }
  76.  
  77. function dameDenominancion($seccion = ''){
  78.     $resultado = false;
  79.     $consulta = "SELECT denominacion FROM denominacion";
  80.    
  81.     if($seccion != ''){
  82.         $consulta .= " WHERE seccion = :seccion";
  83.     }
  84.    
  85.     $conexion = conectaBaseDatos();
  86.     $sentencia = $conexion->prepare($consulta);
  87.     $sentencia->bindParam('seccion',$seccion);
  88.    
  89.     try {
  90.         if(!$sentencia->execute()){
  91.             print_r($sentencia->errorInfo());
  92.         }
  93.         $resultado = $sentencia->fetchAll();
  94.         //$resultado = $sentencia->fetchAll(PDO::FETCH_ASSOC);
  95.         $sentencia->closeCursor();
  96.     }
  97.     catch(PDOException $e){
  98.         echo "Error al ejecutar la sentencia: \n";
  99.             print_r($e->getMessage());
  100.     }
  101.    
  102.     return $resultado;
  103. }
  104.  
  105.  
  106. ?>


Saludos y Gracias