MySQL和PHP - 使href记住上一个变量

时间:2014-08-02 10:16:49

标签: php html mysql sql

我是PHP的新手,但有一些JavaScript的知识。

我正在尝试构建一个MySQL表,该表具有按标题排序的列,我通过环顾网络等来管理;但后来希望SQL查询使用WHERE子句,该子句只显示符合该子句的行(并且它可以工作),但问题是,当我对列进行排序时,它会返回到$ catergory变量的原始值。 / p>

我希望这是有道理的。

有人可以告诉我我做错了什么,如果我需要更改SQL查询或找到一种方法让PHP记住$ catergory的重新分配值,那么我想在之后对列进行排序? / p>

这是我的代码:

<?php
// Create connection
$con = mysqli_connect("host","user","password","database") or die("Some error occurred during connection " . mysqli_error($con));

$categoryFilter = array('boardroom', 'staffroom', 'kitchen');

$category = 'boardroom';
if (isset($_GET['categoryFilter']) && in_array($_GET['categoryFilter'], $categoryFilter)) {
    $category = $_GET['categoryFilter'];
}

$orderBy = array('Image', 'Description', 'Light', 'Room');

$order = 'Image';
if (isset($_GET['orderBy']) && in_array($_GET['orderBy'], $orderBy)) {
    $order = $_GET['orderBy'];
}   

?>

<div class="catbuttons">
    <ul>
        <li><a href="?categoryFilter=boardroom">Boardroom</a></li>
        <li style="height: 17px"><a href="?categoryFilter=staffroom">Staffroom</a></li>
        <li><a href="?categoryFilter=kitchen">Kitchen</a></li>
    </ul>
</div>


<div class="index">

<table border='1'>
<tr>
<th><a href="?orderBy=Image&categoryFilter=<?php echo($category);?>">Image</a></th>
<th><a href="?orderBy=Description&categoryFilter=<?php echo($category);?>">Description</a></th>
<th><a href="?orderBy=Light&categoryFilter=<?php echo($category);?>">Light</a></th>
<th><a href="?orderBy=Room&categoryFilter=<?php echo($category);?>">Room</a></th>
</tr>


<?php


$result = mysqli_query($con,"SELECT * FROM officeindex WHERE Room='".$category."' ORDER BY ".$order)
  or die("Error: ".mysqli_error($con));

while($row = mysqli_fetch_array($result)) {
  echo "<tr>";
  echo "<td>" , $row['Image'] , "</td>";
  echo "<td>" , $row['Description'] , "</td>";
  echo "<td><img src='" , $row['Light'] , "'></td>";
  echo "<td>" , $row['Room'] , "</td>";
  echo "</tr>";
}

echo "</table>";
?>

编辑:

谢谢大家,我已经针对原始问题实施了建议的解决方案并更改了上面的代码,但我现在面临更多困难。我的代码的目的是构建各种交互式产品列表。现在,我有类别(感谢指出拼写错误)工作,我希望该表首先显示所有类别,即列表中的所有产品,然后用户点击特定类别。

另一个问题是我无法弄清楚如何处理包含多个类别的细胞(有些产品属于多个类别)。

我已经考虑过使用数组或循环或者布尔或者某种方式来完成上述两种工作,但是我的知识仅限于JavaScript,我在PHP中有点迷失,尽管有相似之处。请原谅我的无知。

我希望我已经清楚地解释了这个

有人可以帮我吗?

2 个答案:

答案 0 :(得分:0)

在你的链接中,如果存在变量,你必须把它们放在一起。例子:

<a href="?categoryFilter=staffroom<?php if isset($_GET['orderBy'] echo '&orderBy=", $_GET['orderBy'];?>" />

答案 1 :(得分:0)

tableheader中的链接仅包含orderBy参数。如果要保留categoryFilter,则需要将其包含在标题的href中。

例如:

<tr>
    <th><a href="?orderBy=Image&catergoryFilter=<?php echo($catergory);?>">Image</a></th>
    <th><a href="?orderBy=Description&catergoryFilter=<?php echo($catergory);?>">Description</a></th>
    <th><a href="?orderBy=Light&catergoryFilter=<?php echo($catergory);?>">Light</a></th>
    <th><a href="?orderBy=Room&catergoryFilter=<?php echo($catergory);?>">Room</a></th>
</tr>

对于类别过滤器,当然是另一种方式:

<li><a href="?catergoryFilter=boardroom&orderBy=<?php echo($order);?>">Boardroom</a></li>
<li><a href="?catergoryFilter=staffroom&orderBy=<?php echo($order);?>">Staffroom</a></li>
<li><a href="?catergoryFilter=kitchen&orderBy=<?php echo($order);?>">Kitchen</a></li>

另外,正如@ K.K.Smith指出的那样,您可能希望将 catergory 替换为类别