php-limpiando formularios

 Para que los datos de $_POST se eliminen después de actualizar la página, se necesita realizar una redirección después de procesar la solicitud. Esto se puede lograr utilizando la función header() para redirigir la página a sí misma, lo que efectivamente limpia los datos $_POST.

El problema en tu código actual es que la redirección no se realiza después de procesar la acción. A continuación, te muestro cómo se puede hacer correctamente:

  1. Procesa el formulario y realiza la redirección: Después de cada caso en el switch, realiza la redirección usando header() y exit().

  2. Eliminar los datos $_POST utilizando redirección: La redirección a la misma página limpiará los datos $_POST.

Aquí está el código corregido:

<!DOCTYPE html>

<html lang="en">

<head>

  <title>CRUD de Alumnos</title>

  <meta charset="utf-8">

  <meta name="viewport" content="width=device-width, initial-scale=1">


  <!-- jQuery -->

  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>

  <!-- Bootstrap CSS -->

  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">

  <!-- Bootstrap JS -->

  <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>

  <!-- SweetAlert for alerts -->

  <script src="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/2.1.2/sweetalert.min.js" integrity="sha512-AA1Bzp5Q0K1KanKKmvN/4d3IRKVlv9PYgwFPvm32nPO6QS8yH1HO7LbgB1pgiOxPtfeg5zEn2ba64MUcqJx6CA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>

  <!-- SweetAlert2 for enhanced alerts -->

  <script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>


  <script>

    // Función para restablecer el formulario cuando se carga la página

    window.onload = function() {

        document.getElementById("alumnoForm").reset();

    }


    // Función para restablecer el formulario principal antes de seleccionar un registro

    function resetForm() {

        document.getElementById("alumnoForm").reset();

    }

  </script>

</head>

<body>


<?php 

// Datos del formulario

$id = isset($_POST["id"]) ? $_POST["id"] : "";

$nombre = isset($_POST["nombre"]) ? $_POST["nombre"] : "";

$apellidos = isset($_POST["apellidos"]) ? $_POST["apellidos"] : "";

$cursos = isset($_POST["cursos"]) ? $_POST["cursos"] : array();

$accion = isset($_POST["accion"]) ? $_POST["accion"] : "";


// Función para conectar a la base de datos

function conectar() {

    // Crear una nueva conexión PDO a la base de datos MySQL

    $link = new PDO("mysql:host=localhost;dbname=aplicacion", "root", "");

    return $link;

}

$conexionBD = conectar();


$arregloCursos = array();  // Inicializar la variable


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

    switch($accion) {

        case "seleccionar":

            $sql = "SELECT * FROM alumnos WHERE id=:id";

            $consulta = $conexionBD->prepare($sql);

            $consulta->bindParam(":id", $id);

            $consulta->execute();

            $alumno = $consulta->fetch(PDO::FETCH_ASSOC);


            $nombre = $alumno["nombre"];

            $apellidos = $alumno["apellidos"];

    

            $sql = "SELECT cursos.id FROM alumnos_cursos ";

            $sql .= "INNER JOIN cursos ON cursos.id=alumnos_cursos.idcurso ";

            $sql .= "WHERE alumnos_cursos.idalumno=:id";

            $consulta = $conexionBD->prepare($sql);

            $consulta->bindParam(":id", $id);

            $consulta->execute();

            $cursosAlumno = $consulta->fetchAll(PDO::FETCH_ASSOC);

           

            foreach($cursosAlumno as $curso){

                $arregloCursos[] = $curso["id"];

            }

            // Redirigir para limpiar $_POST

            header("Location: " . $_SERVER['PHP_SELF']);

            exit();

            break;


        case "agregar":

            if (!empty($nombre) && !empty($apellidos)) {

                $sql = "INSERT INTO alumnos (id, nombre, apellidos) VALUES (null, :nombre, :apellidos)";

                $consulta = $conexionBD->prepare($sql);

                $consulta->bindParam(":nombre", $nombre);

                $consulta->bindParam(":apellidos", $apellidos);

                $consulta->execute();

            

                $id = $conexionBD->lastInsertId();

                $cursos = $_POST["cursos"];

                foreach($cursos as $curso){

                    $sql = "INSERT INTO alumnos_cursos (id, idalumno, idcurso) VALUES (null, :id_alumno, :id_curso)";

                    $consulta = $conexionBD->prepare($sql);

                    $consulta->bindParam(":id_alumno", $id);

                    $consulta->bindParam(":id_curso", $curso);

                    $consulta->execute();

                }

                $arregloCursos = $cursos;

                // Redirigir para limpiar $_POST

                header("Location: " . $_SERVER['PHP_SELF']);

                exit();

            }

            break;

        

        case "borrar":

            $sql = "DELETE FROM alumnos WHERE id=:id";

            $consulta = $conexionBD->prepare($sql);

            $consulta->bindParam(":id", $id);

            $consulta->execute();

            // Redirigir para limpiar $_POST

            header("Location: " . $_SERVER['PHP_SELF']);

            exit();

            break;

    }

}


// Obtener todos los cursos

$sql = "SELECT * FROM cursos";

$listaCursos = $conexionBD->query($sql);

$listaCursos = $listaCursos->fetchAll(PDO::FETCH_ASSOC);


// Consultar todos los alumnos de la base de datos

$sql = "SELECT * FROM alumnos";

$conexionBD = conectar();

$listaAlumnos = $conexionBD->query($sql);

$alumnos = $listaAlumnos->fetchAll(PDO::FETCH_ASSOC);


// Por cada alumno, consultar los cursos asociados

foreach ($alumnos as $clave => $alumno) {

    $sql = "SELECT * FROM cursos WHERE id IN (SELECT idcurso FROM alumnos_cursos WHERE idalumno = :idalumno)";

    $consulta = $conexionBD->prepare($sql);

    $consulta->bindParam(':idalumno', $alumno['id']);

    $consulta->execute();

    $cursosAlumno = $consulta->fetchAll(PDO::FETCH_ASSOC);

    $alumnos[$clave]['cursos'] = $cursosAlumno;

}

?>


<div class="container">

    <div class="row">

        <div class="col-md-5">

            <br/><br/>

            <!-- Formulario para agregar, editar y borrar alumnos -->

            <form action="" method="post" id="alumnoForm">

            <div class="card">

                <div class="card-header">

                  Alumnos

                </div>

                <div class="card-body">

                

                <div class="mb-3">

                    <label for="id" class="form-label">ID</label>

                    <input type="text" class="form-control" name="id" value="<?php echo $id;?>" id="id" aria-describedby="helpId" placeholder="ID">

                </div>        

                <div class="mb-3">

                  <label for="nombre" class="form-label">Nombre:</label>

                  <input type="text" class="form-control" value="<?php echo $nombre;?>" name="nombre" id="nombre" aria-describedby="helpId" placeholder="nombre">

                </div>


                <div class="mb-3">

                  <label for="apellidos" class="form-label">Apellidos</label>

                  <input type="text" class="form-control" value="<?php echo $apellidos;?>" name="apellidos" id="apellidos" aria-describedby="helpId" placeholder="Apellidos">

                </div>


                <div class="mb-3">

                  <label for="" class="form-label">Curso del alumno:</label>

                  <select multiple class="form-control" name="cursos[]" id="ListaCursos">

                    <?php foreach($listaCursos as $curso):?>

                        <option

                            <?php if(!empty($arregloCursos) && in_array($curso["id"], $arregloCursos)): ?>

                                selected

                            <?php endif; ?>

                            value="<?php echo $curso["id"];?>"><?php echo $curso["nombre_curso"];?></option>

                    <?php endforeach;?>

                  </select>

                </div>


                <div class="btn-group" role="group" aria-label="">

                    <button value="agregar" name="accion" type="submit" class="btn btn-success">Agregar</button>

                    <button value="editar" name="accion" type="submit" class="btn btn-warning">Editar</button>

                    <button value="borrar" name="accion" type="submit" class="btn btn-danger">Borrar</button>

                </div>


                </div>

            </div>

            </form>

        </div>

        <div class="col-md-7">

            <br/><br/>

            <!-- Tabla para mostrar la lista de alumnos -->

            <table class="table">

                <thead>

                    <tr>

                        <th>ID</th>

                        <th>Nombre</th>

                        <th>Apellidos</th>

                        <th>Acciones</th>

                    </tr>

                </thead>

                <tbody>

                    <!-- Iterar sobre cada alumno para mostrar sus datos -->

                    <?php foreach ($alumnos as $alumno): ?>    

                    <tr>

                        <td><?php echo htmlspecialchars($alumno["id"]); ?></td>

                        <td>

                            <?php echo htmlspecialchars($alumno["nombre"]); ?> 

                            <br/>

                            <!-- Iterar sobre cada curso del alumno para mostrar el nombre del curso -->

                            <?php foreach ($alumno['cursos'] as $curso): ?>

                                <a href="#"><?php echo htmlspecialchars($curso['nombre_curso']); ?></a><br/>

                            <?php endforeach; ?>

                        </td>

                        <td><?php echo htmlspecialchars($alumno["apellidos"]); ?></td>

                        <td>

                            <form action="" method="post" id="formuseleccionar" onsubmit="resetForm()">

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

                                <input type="submit" value="seleccionar" name="accion"/>

                            </form>

                        </td>

                    </tr>

                    <?php endforeach; ?>

                </tbody>

            </table>

        </div>

    </div>

</div>


</body>

</html>


Comentarios

Entradas populares de este blog

3-3-entrada-descripcion-marca-trayendo marcas

4-SALIDAS

COMPUERTAS LOGICAS