php - 如何将选中的复选框选项保存到数据库并生成将在单独页面上搜索的唯一订单号?
问题描述
我创建了一个数据库来存储用户信息和工资、工作类别等某些信息。我主要使用 html 和 php 设置了 2 个页面。我设置了它,以便您可以在“新请求”页面根据证书信息(工作目录、工资等)搜索潜在员工。我现在要做的是能够选择 3 名潜在员工并将其保存为订单(例如,如果您在网上购物或在一个订单中购买了多件商品)并让它显示订单号,可能带有我创建的警报。然后我希望能够在我的第二页上搜索该订单号,称为“我的人员配备请求”,它会显示保存在前一页上的订单。我该怎么做呢?我已经研究过使用 $session,但我 我不确定如何开始该过程,或者这是否是我需要的。关于从哪里开始的任何方向都会很棒。
这是新的人员配备请求页面
<?php
include 'core/init.php';
protect_page();
include 'includes/overall/overallheader.php';
?>
<h1>New Staff Request</h1>
<p>Search for potential staff by job categories using the form below</p>
<form method="POST">
<input type="TEXT" name="search" />
<input type="SUBMIT" name="searchquery" value="Search" />
<input type="SUBMIT" name="save" Value="Add Request">
</form>
<br/>
<p><b> Select only up to 3 results</b></p>
<form method="post" action="StaffingRequest.php">
<?php
if(isset($_POST['searchquery'])){
$mysqli = NEW mysqli('localhost','root','','lr');
$search = $mysqli->real_escape_string($_POST['search']);
$resultSet = $mysqli->query("SELECT * FROM users WHERE jobcat LIKE '%$search%'");
if($resultSet->num_rows > 0) {
while($rows = $resultSet->fetch_assoc()) {
$first_name = $rows['first_name'];
$last_name = $rows['last_name'];
$education = $rows['education'];
$salary = $rows['salary'];
$jobcat = $rows['jobcat'];
echo '<br /><input id="query" type="checkbox" name="query[]" value="'.$first_name.' '.$last_name.' </br>'.$jobcat.' </br>'. $education .' </br>' .$salary .'</br></br>"> First Name: ' .$first_name. '<br />Last Name: ' .$last_name. '<br />Job Category: ' . $jobcat. '<br /><br />';
}
} else {
echo "No Results";
}
}
$message = "Contact manager will valiate your staffing request within 24 hours.";
if(isset($_POST['save'])){
echo "<script type='text/javascript'>alert('$message');</script>";
}
?>
</form>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.3/moment.min.js"></script>
<script>
$(document).ready(function(){
var = lastSelection;
$('#query').change(function(event){
if ($(this).val().length > 3) {
$(this).val(lastSelection);
alert("You may only select three options.");
} else {
lastSelection = $(this).val();
}
});
});
</script>
<?php include 'includes/overall/overallfooter.php'; ?>
这是我的人员配备请求页面:
<?php
include 'core/init.php';
protect_page();
include 'includes/overall/overallheader.php';
?>
<h1>My Staff Requests:</h1>
<p>Search by request ID number.</p>
<form method="POST">
<input type="TEXT" name="search" />
<input type="SUBMIT" name="ordernumsearch" value="Search By Request ID" />
</form>
<?php
if (isset($_POST['submit']))
{
$chkbox = $_POST['query'];
$i = 0;
While($i < sizeof($chkbox))
{
echo "" . $chkbox[$i] . '</br>';
$i++;
}
}
if(isset($_POST['ordernumsearch'])){
$mysqli = NEW mysqli('localhost','root','','lr');
$search = $mysqli->real_escape_string($_POST['search']);
$resultSet = $mysqli->query("SELECT * FROM users WHERE user_id LIKE '%$search%'");
if($resultSet->num_rows > 0) {
while($rows = $resultSet->fetch_assoc()) {
$user_id = $rows['user_id'];
$first_name = $rows['first_name'];
$last_name = $rows['last_name'];
$education = $rows['education'];
$salary = $rows['salary'];
$jobcat = $rows['jobcat'];
$canrelocate = $rows['canrelocate'];
echo '<br />Request ID: '.$user_id.'<br/>First Name: ' .$first_name. '<br />Last Name: ' .$last_name. '<br />Job Category: ' . $jobcat. '<br/>Education: ' .$education. '<br/>Salary: ' .$salary. '<br/>Can Relocate: ' .$canrelocate. '<br />
<input type="radio" name="radio" value="radio1">Valid</br>
<input type="radio" name="radio" value="radio2">Invalid</br>
<input type="radio" name="radio" value="radio3">Unable to Fill</br>
<input type="radio" name="radio" value="radio4">Fill</br>
<br />';
}
} else {
echo "No Results";
}
}
?>
<input type="SUBMIT" name="save" Value="Save">
</form>
<?php include 'includes/overall/overallfooter.php'; ?>
解决方案
我认为 session 是一个很好的解决方案,但如果你有困难,你可以使用全局变量(或 cookie)。
您可以在其中阅读如何使用全局变量的链接: https ://www.w3schools.com/php/php_superglobals.asp
$GLOBALS 是一个 PHP 超级全局变量,用于从 PHP 脚本中的任何位置访问全局变量。
当您有更多时间阅读会话链接 https://www.w3schools.com/php/php_sessions.asp
什么是 PHP 会话?
当您使用应用程序时,您打开它,进行一些更改,然后关闭它。这很像一个会话。电脑知道你是谁。它知道您何时启动应用程序以及何时结束。但是在 Internet 上存在一个问题:Web 服务器不知道您是谁或您在做什么,因为 HTTP 地址不保持状态。
会话变量通过存储跨多个页面使用的用户信息(例如用户名、喜欢的颜色等)来解决这个问题。默认情况下,会话变量会持续到用户关闭浏览器。
启动 PHP 会话 使用 session_start() 函数启动会话。
会话变量使用 PHP 全局变量设置:$_SESSION。
一个例子:file1.php
<?php
// Start the session
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// Set session variables
$_SESSION["favcolor"] = "green";
$_SESSION["favanimal"] = "cat";
echo "Session variables are set.";
?>
......
</body>
</html>
获取 PHP 会话变量值file2.php
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// Echo session variables that were set on previous page
echo "Favorite color is " . $_SESSION["favcolor"] . ".<br>";
echo "Favorite animal is " . $_SESSION["favanimal"] . ".";
?>
</body>
</html>
当用户退出时会话结束......
我希望这对你有帮助。
推荐阅读
- r - 拆分 data.frame 行并打乱它们的顺序
- azure-devops - 除了访问令牌 (PAT) 之外,还有其他方法可以对 Azure Devops CLI 进行身份验证吗?
- .net - MonoDevelop 与 Unity 2018.3.1 和 .NET 4.X
- c# - 启用省电模式时 Xamarin.Android 应用程序崩溃
- oracle - 如果两个值中的任何一个不为空,是否有 Oracle 函数返回布尔值?
- reactjs - 提交时清除选择的选定值
- javascript - 如何使用表单和全局变量的值在 ajax 上传递数据?
- bash - 如何将参数发送到后台运行的进程?
- php - 在 Yii2 中初始化组件的更好方法是什么?
- docker - 入口 nginx 数字海洋上的 ssl 终止