php 当我提交一个变量时,我如何保存它,并且我需要在以后使用它,在同一个页面上提交另一个变量?

kb5ga3dv  于 2023-02-03  发布在  PHP
关注(0)|答案(1)|浏览(94)

我的代码中有一个问题,当我在第一个下拉列表中选择ID并单击显示当前部门时,我已经丢失了ID变量,我必须再次单击它才能在部门之间进行更改,问题是我不知道如何保留我选择的变量并进行更改,而不必单击它两次?
我已经设法进行了更改,如果当我显示所选ID在哪个部门时,我再次单击进行更改,一切似乎都工作正常。
这是进行更改的页面的代码。

<body>
    <h1>CAMBIO DEPARTAMENTO</h1>
    <form method="POST" name="alta_empleado" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>">
        <label for="">Elige el DNI en el desplegable</label>
        <?php

        include "funciones/funciones.php";
        $conn = conexion();
        $dnis = crearSelect($conn, "SELECT DNI, SALARIO FROM emple");
        crearSelectDni($dnis);
        echo "<br><br>";
        ?>
        <label for="">DEPARTAMENTO ACTUAL</label>
        <input type="text" name="dpto_actual" value="<?php
                                                        $dni = "";
                                                        if (isset($_POST['mostrar'])) {
                                                            // $conn = conexion();
                                                            dptoActual($conn);
                                                            
                                                            $dni = $_POST['todos'];
                                                        }

                                                        ?>">
        <input type="submit" name="mostrar" value="Mostrar Actual"><br><br>
        <label for="">elige el departameno nuevo en el desplegable</label>
        <?php
        // $conn = conexion();
        $resultado = crearSelect($conn, "SELECT NOMBRE from DPTO");
        crearSelectDpto($resultado);
        ?>
        </br></br>
        <input type="submit" name="cambio" value="cambio">
    </form>
</body>

<?php
if (isset($_POST['cambio'])) {

    try {
        $conn = conexion();
        cambioDpto($conn);
        echo "creado";
    } catch (PDOException $e) {
        echo $e->getMessage();
    }
}
?>

这是函数的代码

function dptoActual($conn)
{
    $dni_emple = $_POST['todos'];
    try {

        $stmt = $conn->prepare("SELECT dpto.NOMBRE FROM dpto,emple,emple_dpto 
        WHERE emple_dpto.ID_DPTO = dpto.ID 
        AND emple_dpto.DNI_EMPLE=emple.DNI
        AND emple.DNI=:dni_emple and FECHA_FIN IS NULL");

        $stmt->bindParam(':dni_emple', $dni_emple);
        $stmt->execute();
        $stmt->setFetchMode(PDO::FETCH_ASSOC); //hace que devuelva la select en un array asociativo
        $result = $stmt->fetchAll();
        foreach ($result as $key => $dptos) {
            echo  $dptos["NOMBRE"];
        }
    } catch (PDOException $e) {
        echo  $e->getMessage();
    }
}

function cambioDpto($conn)
{
    //creamos la fecha de fin
    $dni = $_POST['todos'];
    $fecha_fin = date("y-m-d");
    $nombre_dpto = $_POST['departamentos'];
    // echo "variables";
    // var_dump($dni) ;
    // echo $fecha_fin;

    try {
        // echo " <br>update";
        $stmt = $conn->prepare("UPDATE emple_dpto SET emple_dpto.FECHA_FIN=:fecha_fin WHERE emple_dpto.DNI_EMPLE=:numero_dni AND emple_dpto.FECHA_FIN is null");
        $stmt->bindParam(':fecha_fin', $fecha_fin);
        $stmt->bindParam(':numero_dni', $dni);
        $stmt->execute();
        // echo $fecha_fin . " " . $dni;

        $stmt = $conn->prepare("SELECT dpto.ID FROM dpto WHERE dpto.NOMBRE=:nombre_dpto");
        $stmt->bindParam(':nombre_dpto', $nombre_dpto);
        $stmt->execute();
        $stmt->setFetchMode(PDO::FETCH_ASSOC); 
        $result = $stmt->fetchAll();
        var_dump($result);
        $id_dpto = "";
        foreach ($result as $key => $ids_dptos) {
            $id_dpto = $ids_dptos["ID"];
        }
       // echo $id_dpto;

        $stmt = $conn->prepare("INSERT INTO emple_dpto (DNI_EMPLE,ID_DPTO,FECHA_INICIO,FECHA_FIN) VALUES (:numero_dni,:id_dpto,:fecha_fin,null)");
        $stmt->bindParam(':fecha_fin', $fecha_fin);
        $stmt->bindParam(':id_dpto', $id_dpto);
        $stmt->bindParam(':numero_dni', $dni);
        $stmt->execute();
    } catch (PDOException $e) {
        echo  $e->getMessage();
    }
}
cnwbcb6i

cnwbcb6i1#

您好,您可以使用会话变量(**$_SESSION[variable_name]**来满足您的要求。请参考此link

相关问题