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:
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-idque 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 atributodata-cliente-iddel botón.Captura del valor
cliente_idal abrir la ventana modal: Cuando el botón es clicado y la ventana modal se está por mostrar, el script JavaScript captura el eventoshow.bs.modaly accede al valor dedata-cliente-idque se encuentra en el botón:javascriptvar 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 atributodata-cliente-iddel botón clicado. Luego, este valor se asigna al campo oculto (input) con el IDcliente_iddentro de la ventana modal.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 decliente_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_idse envía como parte de los datosPOSTdel 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
Publicar un comentario