Select dinamicos en php y js por el metodo POST

publicado por: Anonymous

El siguiente código corresponde a la consulta e información obtenida de la DB MySQL:

<?php
$conexion = new PDO("mysql:host=localhost;dbname=scouts_601_palmira","root","");

$Id = $_POST['Id'];

echo '<script type="text/javascript">alert("'.$Id.'");</script>';

$sql = "SELECT Id, Nombre FROM Especialidades WHERE Id_eje = ':$Id'";
$sentencia = $conexion -> prepare($sql);
$sentencia -> bindParam(':$Id', $Id, PDO::PARAM_STR);
$sentencia -> execute();
$resultado = $sentencia -> fetchAll(PDO::FETCH_ASSOC);

echo '<script type="text/javascript">alert("'.count($resultado).'");</script>';

$opcion = "<option value='0'>Seleccionelo</option>";

while ($especialidades = $resultado) {
$opcion = "<option value='".$fila['Id']."'>".$fila['Nombre']."</option>";
}

echo $opcion;
?>

Este código no devuelve los datos de la consulta.

Y el siguiente código divido en dos partes es donde están los select que requiero, que sean dinámicos.

Esta primera parte contiene el JavaScript que hace uso del código proporcionado arriba.

<script type="text/javascript">
$(document).ready(function() {
    $("#eje-progresion").change(function() {
        //$("#nivel-especialidad").find('option').remove().end().append(
        //  '<option value="Seleccione"></option>').val('Seleccione');

        $("#eje-progresion option:selected").each(function() {
            Id = $(this).val();
            $.post("../Sql/ArregloEspecialidades.php", {Id: Id
            }, function(data){
                $("#especialidad-eje").html(data);
            });
        });
    })
});

Este es el código PHP y HTML donde están los select.

<form method="POST">
<table class="table table-bordered">
<thead>
    <tr>
        <td>Persona</td>
        <td>Eje</td>
        <td>Especialidad</td>
        <td>Nivel</td>
        <td>Acción</td>
    </tr>
</thead>
<tbody>
    <tr>
        <td><select>
            <option></option>
            <?php
            foreach ($personas_rama as $fila) {?>
                <option><?php echo $fila['Primer_nombre']." ".$fila['Segundo_nombre']." ".$fila['Primer_apellido']." ".$fila['Segundo_apellido']; ?></option>
            <?php
            }
            ?>
        </select></td>
        <td><select id="eje-progresion" name="eje-progresion">
            <option>Selecciona</option>
            <?php
            $ejes = DAOEje :: consultarNombreEjesPorIdProgresion($conexion, $id_cargo_recuperado);
            foreach ($ejes as $eje) {?>
                <option value="<?php echo $eje['Id']; ?>"><?php echo $eje['Nombre']; ?></option>
            <?php
            }
            ?>
        </select></td>
        <td><select id="especialidad-eje" name="especialidad-eje">
        </select></td>
        <td><select id="nivel-especialidad" name="nivel-especialidad">
            <option></option>
        </select></td>
        <td><button type="button" class="btn btn-success">Guardar</button></td>
    </tr>
</tbody>

Agradezco de antemano cualquier contribución que de solución u orientación para resolver este problema.

solución

Intenta modificar tu codigo javascript para que quede de esta manera:

<script type="text/javascript">
    $(document).ready(function() {
        $("#eje-progresion").change(function() {    
            var opcionSeleccinada = $(this).val();
            if(opcionSeleccinada > 0){
                $.post("../Sql/ArregloEspecialidades.php", {Id: opcionSeleccinada
                }, function(data){
                    $("#especialidad-eje").html(data);
                });
            }
        })
    });

Se supone que debas capturar el elemento seleccionado en el evento onChange del select y en el caso de que sea diferente al de ‘Seleccione un elemento’ entonces haces el $.post y pasas ese id.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *