Pasar id desde un script

1. Agregar el botón para abrir la ventana modal en la tabla de clientes:

Dentro de tu tabla de clientes, añade un botón en cada fila que abra la ventana modal para agregar un caso:

<td>

    <form method="post" style="display: inline-block;">

        <input type="hidden" name="action" value="eliminar">

        <input type="hidden" name="id" value="<?php echo $cliente['id']; ?>">

        <button type="submit" class="btn btn-danger">Eliminar</button>

    </form>

    <!-- Botón para abrir la ventana modal para agregar un caso -->

    <button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#agregarCasoModal" data-cliente-id="<?php echo $cliente['id']; ?>">

        Agregar Caso

    </button>

</td>

2. Crear la ventana modal para agregar un caso:

Debajo de tu tabla o donde lo consideres conveniente, agrega el siguiente código para la ventana modal:

<!-- Modal Agregar Caso -->

<div class="modal fade" id="agregarCasoModal" tabindex="-1" aria-labelledby="agregarCasoModalLabel" aria-hidden="true">

    <div class="modal-dialog">

        <div class="modal-content">

            <div class="modal-header">

                <h5 class="modal-title" id="agregarCasoModalLabel">Agregar Caso</h5>

                <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>

            </div>

            <div class="modal-body">

                <form method="post">

                    <input type="hidden" name="action" value="crearCaso">

                    <input type="hidden" id="cliente_id" name="cliente_id">

                    <div class="mb-3">

                        <label for="numero_expediente" class="form-label">Número de Expediente</label>

                        <input type="text" class="form-control" id="numero_expediente" name="numero_expediente" required>

                    </div>

                    <div class="mb-3">

                        <label for="tipo_caso" class="form-label">Tipo de Caso</label>

                        <select class="form-control" id="tipo_caso" name="tipo_caso" required>

                            <option value="Control Penal">Control Penal</option>

                            <option value="Civil">Civil</option>

                            <option value="Familiar">Familiar</option>

                            <option value="Laboral">Laboral</option>

                        </select>

                    </div>

                    <div class="mb-3">

                        <label for="juzgado" class="form-label">Juzgado</label>

                        <input type="text" class="form-control" id="juzgado" name="juzgado" required>

                    </div>

                    <div class="mb-3">

                        <label for="fecha_apertura" class="form-label">Fecha de Apertura</label>

                        <input type="date" class="form-control" id="fecha_apertura" name="fecha_apertura" required>

                    </div>

                    <div class="mb-3">

                        <label for="estado" class="form-label">Estado</label>

                        <select class="form-control" id="estado" name="estado" required>

                            <option value="Activo">Activo</option>

                            <option value="Cerrado">Cerrado</option>

                            <option value="Archivado">Archivado</option>

                        </select>

                    </div>

                    <div class="mb-3">

                        <label for="descripcion" class="form-label">Descripción</label>

                        <textarea class="form-control" id="descripcion" name="descripcion"></textarea>

                    </div>

                    <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cerrar</button>

                    <button type="submit" class="btn btn-success">Agregar Caso</button>

                </form>

            </div>

        </div>

    </div>

</div>

3. Configurar el cliente ID al abrir la ventana modal:

Usa JavaScript para pasar el ID del cliente al formulario dentro de la ventana modal cuando se haga clic en el botón "Agregar Caso":

<script>

document.addEventListener('DOMContentLoaded', function () {

    var agregarCasoModal = document.getElementById('agregarCasoModal');

    agregarCasoModal.addEventListener('show.bs.modal', function (event) {

        var button = event.relatedTarget;

        var clienteId = button.getAttribute('data-cliente-id');

        var inputClienteId = agregarCasoModal.querySelector('#cliente_id');

        inputClienteId.value = clienteId;

    });

});

</script>



 El valor de cliente_id se obtiene a través del atributo data-cliente-id que se define en el botón "Agregar Caso" dentro de cada fila de la tabla. Este atributo data-cliente-id se configura con el ID del cliente correspondiente a esa fila.

Desglose del proceso:

  1. Asignación del ID del cliente al botón: En cada fila de la tabla de clientes, tienes un botón que abre la ventana modal para agregar un caso. Este botón incluye un atributo data-cliente-id que almacena el valor del ID del cliente:

    php
    <button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#agregarCasoModal" data-cliente-id="<?php echo $cliente['id']; ?>"> Agregar Caso </button>

    Aquí, <?php echo $cliente['id']; ?> es el valor que obtienes de la base de datos y que estás imprimiendo en el HTML. Este valor se asigna al atributo data-cliente-id del botón.

  2. Captura del valor cliente_id al abrir la ventana modal: Cuando el botón es clicado y la ventana modal se está por mostrar, el script JavaScript captura el evento show.bs.modal y accede al valor de data-cliente-id que se encuentra en el botón:

    javascript
    var agregarCasoModal = document.getElementById('agregarCasoModal'); agregarCasoModal.addEventListener('show.bs.modal', function (event) { var button = event.relatedTarget; // El botón que activó la modal var clienteId = button.getAttribute('data-cliente-id'); // Obtener el cliente_id del atributo data-cliente-id var inputClienteId = agregarCasoModal.querySelector('#cliente_id'); // Input hidden en el formulario inputClienteId.value = clienteId; // Asignar el valor del cliente_id al input hidden });

    Aquí, button.getAttribute('data-cliente-id') obtiene el valor del atributo data-cliente-id del botón clicado. Luego, este valor se asigna al campo oculto (input) con el ID cliente_id dentro de la ventana modal.

  3. Asignación del valor a una variable POST: En el formulario dentro de la ventana modal, tienes un campo oculto (input type="hidden") que almacena el valor de cliente_id. Este campo oculto se rellena con el valor capturado en el paso anterior:

    html
    <form method="post"> <input type="hidden" id="cliente_id" name="cliente_id"> <!-- Otros campos del formulario --> <button type="submit" class="btn btn-success">Agregar Caso</button> </form>

    Cuando se envía el formulario, el valor de cliente_id se envía como parte de los datos POST del formulario, lo que permite que esté disponible en el backend cuando procesas la solicitud.

En resumen, el valor de cliente_id se obtiene del atributo data-cliente-id del botón dentro de la tabla, se pasa al formulario a través de un campo oculto cuando se abre la ventana modal, y finalmente se envía al servidor cuando se envía el formulario.


4. Agregar lógica en tu controlador:

En tu controlador clienteBasectr.php, agrega un nuevo caso para manejar la creación de un nuevo caso:


case 'crearCaso':

    $datosCaso = [

        "cliente_id" => $_POST["cliente_id"],

        "numero_expediente" => $_POST["numero_expediente"],

        "tipo_caso" => $_POST["tipo_caso"],

        "juzgado" => $_POST["juzgado"],

        "fecha_apertura" => $_POST["fecha_apertura"],

        "estado" => $_POST["estado"],

        "descripcion" => $_POST["descripcion"]

    ];

    

    $resultado = CasosModel::crearCaso($datosCaso);

    if ($resultado === true) {

        echo '<script>

            if (window.history.replaceState) {

                window.history.replaceState(null, null, window.location.href);

            }

            window.location = "agenda/clienteBase.php";

        </script>';

    } else {

        echo '<script>

            if (window.history.replaceState) {

                window.history.replaceState(null, null, window.location.href);

            }

            window.location.reload();

        </script>';

    }

    break;

5. Agregar el método crearCaso en el modelo CasosModel:

Crea este método en tu modelo para insertar los datos en la tabla casos:


static public function crearCaso($datos)

{

    $stmt = Conexion::conectar()->prepare("INSERT INTO casos (cliente_id, numero_expediente, tipo_caso, juzgado, fecha_apertura, estado, descripcion) VALUES (:cliente_id, :numero_expediente, :tipo_caso, :juzgado, :fecha_apertura, :estado, :descripcion)");

    $stmt->bindParam(":cliente_id", $datos['cliente_id'], PDO::PARAM_INT);

    $stmt->bindParam(":numero_expediente", $datos['numero_expediente'], PDO::PARAM_STR);

    $stmt->bindParam(":tipo_caso", $datos['tipo_caso'], PDO::PARAM_STR);

    $stmt->bindParam(":juzgado", $datos['juzgado'], PDO::PARAM_STR);

    $stmt->bindParam(":fecha_apertura", $datos['fecha_apertura'], PDO::PARAM_STR);

    $stmt->bindParam(":estado", $datos['estado'], PDO::PARAM_STR);

    $stmt->bindParam(":descripcion", $datos['descripcion'], PDO::PARAM_STR);

    

    if ($stmt->execute()) {

        return true;

    } else {

        return false;

    }

}


Comentarios

Entradas populares de este blog

Normalizar valores

NORMALIZAR TABLA-audiencia_intervinientes

Listar audiencias