我的代码中有一个问题,当我在第一个下拉列表中选择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();
}
}
1条答案
按热度按时间cnwbcb6i1#
您好,您可以使用会话变量(**$_SESSION[variable_name]**来满足您的要求。请参考此link