как создать 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 будет взиматься тип счета: является ли это сбережением или текущим и, наконец, номер счета сотрудника.
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>