как создать select pdo-зависимые


привет друзья в настоящее время я пытаюсь сделать зависимый select, но я не могу заставить его показать мне другие select, если я проверяю элемент, он показывает мне выбранное значение. Мои таблицы следующие:

таблица: сотрудники

Id_работающие, имена, фамилии, телефон, электронная почта, адрес

таблица: счета

Id_cuents, id_cuents, numer_cuents, id_ счета, id_банки

таблица: бусины

Id_ счета, счета

Таблица: банки

Id_bancos, банки,

Index.php

       <?php

       include 'funciones.php';
       ?>


    `<div class="input-field col s12 m4">
     <select name="id_empleados" id="id_empleados" required>
     <option value="" disabled selected>Seleccione un Empleado:</option>
     <?php
      $empleados = muestro_empleados();

      foreach($empleados as $indice => $registro){
      echo "<option value=".$registro['id_empleados'].">".$registro['cedula']." ".$registro['nombres']." ".$registro['apellidos']."</option>";
       }
       ?>
        </select>
        </div>




          <div class="input-field col s12 m4">
          <select  name="id_bancos" id="id_bancos">
          <option value="" disabled selected>Primero seleccion un empleado</option>
          </select>
          </div>



          <div class="input-field col s12 m4">
          <select  name="id_cuentas" id="id_cuentas"/>
          <option value="" disabled selected>Primero seleccion un banco</option>
         </select>
         </div>




        <script>
        $("#id_empleados").on("change", buscar_bancos);
         $("#id_bancos").on("change", buscar_cuentas);

          function buscar_bancos(){
        $("#id_cuentas").html("<option value=''>- primero seleccione un id_bancos -</option>");

       $id_empleados = $("#id_empleados").val();

    if($id_empleados == ""){
  $("#id_bancos").html("<option value=''>- primero seleccione un id_empleados -</option>");
         }
     else {
   $.ajax({
  dataType: "json",
  data: {"id_empleados": $id_empleados},
  url:   'funcion2.php',
  type:  'post',
  beforeSend: function(){
    //Lo que se hace antes de enviar el formulario
    },
  success: function(respuesta){
    //lo que se si el destino devuelve algo
    $("#id_bancos").html(respuesta.html);
  },
  error:  function(xhr,err){ 
    alert("readyState: "+xhr.readyState+"\nstatus: "+xhr.status+"\n \n responseText: "+xhr.responseText);
  }
   });
   }
   }

   function buscar_cuentas(){
    $id_bancos = $("#id_bancos").val();

    $.ajax({
    dataType: "json",
    data: {"id_bancos": $id_bancos},
    url:   'funcion2.php',
    type:  'post',
    beforeSend: function(){
  //Lo que se hace antes de enviar el formulario
  },
    success: function(respuesta){
      //lo que se si el destino devuelve algo
      $("#id_cuentas").html(respuesta.html);
     },
    error:  function(xhr,err){ 
  alert("readyState: "+xhr.readyState+"\nstatus: "+xhr.status+"\n \n responseText: "+xhr.responseText);
    }
   }); 
   }
  </script>`

Funciones.php

    <?php

    function conectaBaseDatos(){
    try{
    $servidor = "localhost";
    $puerto = "3306";
    $basedatos = "sav1";
    $usuario = "root";
    $contrasena = "";
    $conexion = new 
    PDO("mysql:host=$servidor;port=$puerto;dbname=$basedatos",
                        $usuario,
                        $contrasena,
                        array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
    $conexion->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
    return $conexion;
    }
    catch (PDOException $e){
    die ("No se puede conectar a la base de datos". $e->getMessage());
    }
    }

    function muestro_empleados(){
    $resultado = false;
    $consulta = "SELECT * FROM empleados ORDER BY id_empleados";

    $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 muestro_bancos($id_empleados = ''){
    $resultado = false;
    $consulta = "SELECT
    cuentas_bancarias.id_cuentas_bancarias,
    cuentas_bancarias.id_empleados,
    cuentas_bancarias.numero_cuenta,
    cuentas_bancarias.id_cuentas,
    cuentas_bancarias.id_bancos,
    bancos.id_bancos,
    bancos.bancos
    FROM cuentas_bancarias INNER JOIN bancos ON 
    cuentas_bancarias.id_bancos=bancos.id_bancos";

    if($id_empleados != ''){
    $consulta .= " WHERE id_empleados = :id_empleados";
    }

    $consulta .= " ORDER BY id_cuentas_bancarias";

    $conexion = conectaBaseDatos();
    $sentencia = $conexion->prepare($consulta);
    $sentencia->bindParam('id_empleados',$id_empleados);

    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 muestro_cuentas($id_empleados = ''){
    $resultado = false;
    $consulta = "SELECT
    cuentas_bancarias.id_cuentas_bancarias,
    cuentas_bancarias.id_empleados,
    cuentas_bancarias.numero_cuenta,
    cuentas_bancarias.id_cuentas,
    cuentas_bancarias.id_bancos,
    cuentas.id_cuentas,
    cuentas.cuentas
    FROM cuentas_bancarias INNER JOIN cuentas ON 
    cuentas_bancarias.id_cuentas=cuentas.id_cuentas";

    if($id_empleados != ''){
    $consulta .= " WHERE id_empleados = :id_empleados";
    }

    $consulta .= " ORDER BY id_cuentas_bancarias";

    $conexion = conectaBaseDatos();
    $sentencia = $conexion->prepare($consulta);
    $sentencia->bindParam('id_empleados',$id_empleados);

    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;
     }


     ?>

Funcion2.php

<?php
 require_once("funciones.php");

 if(isset($_POST['id_empleados'])){

$cuentas_bancarias = muestro_bancos($_POST['id_empleados']);

$html = "<option value=''>- Seleccione un bancos -</option>";
foreach($cuentas_bancarias as $indice => $registro){
    $html .= "<option value='".$registro['id_empleados']."'>".$registro['bancos']."</option>";
}

$respuesta = array("html"=>$html);
echo json_encode($respuesta);
 }

 if(isset($_POST['id_bancos'])){

$cuentas_bancarias= muestro_cuentas($_POST['id_bancos']);

$html = "<option value=''>- Seleccione una cuenta -</option>";
foreach($cuentas_bancarias as $indice => $registro){
    $html .= "<option value='".$registro['id_empleados']."'>".$registro['cuentas']."</option>";
}

$respuesta = array("html"=>$html);
echo json_encode($respuesta);
}

?>

Теперь то, что я хочу достичь: в select один загружаются личные данные сотрудника, затем при выборе сотрудник должен быть загружен во второй select, который банки зарегистрировали этого сотрудника, затем в третьем select будет взиматься тип счета: является ли это сбережением или текущим и, наконец, номер счета сотрудника.

Author: yoclens, 2017-06-14

1 answers

Вот как я это исправил:

<script>
$("#id_empleados").on("change", buscar_bancos);
$("#id_bancos").on("change", buscar_cuentas);
$("#id_cuentas").on("change", buscar_numero_cuentas);

 function buscar_bancos(){
 $("#id_numero_cuentas").html("<option value=''>Primero Seleccione una 
 Cuenta</option>");

 $id_empleados = $("#id_empleados").val();

 if($id_empleados == ""){
  $("#id_bancos").html("<option value=''>Primero Seleccione una 
 Empleado</option>");
 }
  else {
   $.ajax({
  dataType: "json",
  data: {"id_empleados": $id_empleados},
  url:   '../conexion/funciones2.php',
  type:  'POST',
  beforeSend: function(){
    //Lo que se hace antes de enviar el formulario
    },
  success: function(respuesta){
    //lo que se si el destino devuelve algo
    $("#id_bancos").html(respuesta.html);
  },
  error:  function(xhr,err){ 
    alert("readyState: "+xhr.readyState+"\nstatus: "+xhr.status+"\n \n 
  responseText: "+xhr.responseText);
  }
  });
  }
  }

  function buscar_cuentas(){
  $id_bancos = $("#id_bancos").val();

  $.ajax({
  dataType: "json",
data: {"id_bancos": $id_bancos},
url:   '../conexion/funciones2.php',
    type:  'POST',
beforeSend: function(){
  //Lo que se hace antes de enviar el formulario
  },
    success: function(respuesta){
  //lo que se si el destino devuelve algo
  $("#id_cuentas").html(respuesta.html);
},
error:  function(xhr,err){ 
  alert("readyState: "+xhr.readyState+"\nstatus: "+xhr.status+"\n \n responseText: "+xhr.responseText);
}
 }); 
}

 function buscar_numero_cuentas(){
 $id_cuentas = $("#id_cuentas").val();

 $.ajax({
dataType: "json",
data: {"id_cuentas": $id_cuentas},
url:   '../conexion/funciones2.php',
    type:  'POST',
beforeSend: function(){
  //Lo que se hace antes de enviar el formulario
  },
    success: function(respuesta){
  //lo que se si el destino devuelve algo
  $("#id_numero_cuentas").html(respuesta.html);
},
error:  function(xhr,err){ 
  alert("readyState: "+xhr.readyState+"\nstatus: "+xhr.status+"\n \n 
responseText: "+xhr.responseText);
}
}); 
}
</script>
 1
Author: yoclens, 2017-06-15 23:33:11