我有一个页面,该页面是PHP查询单击(单个作业列表)的结果。我想使用ORDER BY
,以便个人可以根据截止日期,作业名称等订购结果。
当用户单击变量表标头时,问题似乎正在发挥作用。这会导致页面刷新,而_GET
的变量显然消失了。我尝试将其设置为cookie,但我相信也许我没有正确设置它。
这在文档的顶部:
<?php
if( $_SERVER['REQUEST_METHOD']=='GET' && isset( $_GET['assignee'] ) ){
$assignee = filter_input( INPUT_GET, 'assignee', FILTER_SANITIZE_STRING );
}
$assignee_name = $assignee;
setcookie($assignee_name, time() + (86400 * 30), "/"); // 86400 = 1 day
?>
这是foreach
循环之前的PHP
:
<?php
$servername = "localhost";
$username = "jobs_usr1";
$password = "xxxxxxxxx";
$dbname = "jobs_users";
// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
$sql = "SELECT * FROM `jobs_canjobs` WHERE assignee = "$assignee"";
$orderBy = array('job_numb', 'job_name', 'due_date', 'show_date', 'status');
$order = 'type';
if (isset($_GET['orderBy']) && in_array($_GET['orderBy'], $orderBy)) {
$order = $_GET['orderBy'];
}
if(isset($_COOKIE[$assignee_name])){
$sql = "SELECT * FROM `jobs_canjobs` WHERE assignee = "$assignee_name" ORDER BY $order";
}
$results = mysqli_query($conn, $sql);
?>
然后在结果表中,在表头下方,我有:
<table>
<tr style="background-color: cadetblue">
<th><a href="?orderBy=job_numb"><b>Job ID#</b></a></th>
<th><a href="?orderBy=job_name"><b>Title</b></a></th>
<th><a href="?orderBy=due_date"><b>Due Date</b></a> | <a href="?orderBy=show_date"><b>Show Date</b></a></th>
<th><a href="?orderBy=status"><b>Status</b></a></th>
</tr>
<?php
foreach ($results as $result){
$job_numb = $result['job_numb'];
$assignee = $result['assignee'];
$job_name = $result['job_name'];
$due_date = $result['due_date'];
$show_date = $result['show_date'];
$status = $result['status'];
?>
<tr>
<td>
<p><?php echo $job_numb;?></p>
</td>
<td>
<p><?php echo $job_name;?></p>
</td>
<td>
<p><?php echo $due_date;?> | <?php echo $show_date;?></p>
</td>
<td>
<p><?php echo $status;?></p>
</td>
</tr>
<? php } ?>
</table>
没有重新排序的$order
,它可以正常工作 - 但是一旦有人单击th
,请订单,变量消失了,即使在重新加载页面后,我也不确定如何保留它。
有没有办法将此变量$assignee
保留在页面上,以便我可以再次引用它以显示结果?我知道这是页面刷新,因为单击后的URL不包含变量。
任何帮助将不胜感激。谢谢。
关于PHP的很酷的事情是,您只需将其插入HTML文档中的任何地方
<th><a href="?orderBy=job_numb<?php if ( (isset($_GET['assignee'])) && (!empty($_GET['assignee'])) ){
echo '&assignee='.URL_ENCODE($_GET['assignee']);}?>"><b>Job ID#</b></a></th>
这首先检查是否定义了该var,并未定义为''然后附加到您的硬编码URL ..
将所有这些都放在一条线上,以确保不会将线路断裂引入URL。
因此,生成的链接将以&amp; adeee = $ var结束
ps在使用脚本时,我总是将其添加到Teh顶部,以便我可以看到错误而无需查看日志文件
ini_set('display_startup_errors', 1);
ini_set('display_errors', 1);
error_reporting(-1);