保留在页面重新加载

时间:2017-02-21 22:18:36

标签: php sql

我有一个页面是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
?>

这是PHP循环之前的foreach

<?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,以便我可以再次引用它来显示结果?我知道这是页面刷新,因为点击后的网址不包含变量。

任何帮助将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:0)

关于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,并且没有定义为&#39;&#39;&#39;又空 然后附加到您的硬编码网址..

将所有内容放在一行以确保不会在URL中引入换行符。

因此,结果链接将以&amp; assignee = $ VAR结束,其中$ VAR是先前设置的$ _GET [&#39;受让人&#39;]

PS在处理脚本时我总是将它添加到顶部,这样我就可以在不查看日志文件的情况下看到错误

ini_set('display_startup_errors', 1); 
ini_set('display_errors', 1); 
error_reporting(-1);