MySQL和PHP-使href记住上一个变量
我对PHP很陌生,但对JavaScript有一些了解 我正在尝试构建一个MySQL表,该表具有按标题排序的列,我通过查看web等来管理这些列;但是,我们希望SQL查询使用WHERE子句,该子句只显示满足该子句的行(并且它可以工作),但问题是,当我对列进行排序时,它会返回到$catergory变量的原始值 我希望这是有道理的 有人能告诉我我做错了什么吗?如果我需要更改SQL查询,或者想办法让PHP记住重新分配的$catergory值,然后我想对列进行排序 这是我的密码:MySQL和PHP-使href记住上一个变量,php,html,mysql,sql,Php,Html,Mysql,Sql,我对PHP很陌生,但对JavaScript有一些了解 我正在尝试构建一个MySQL表,该表具有按标题排序的列,我通过查看web等来管理这些列;但是,我们希望SQL查询使用WHERE子句,该子句只显示满足该子句的行(并且它可以工作),但问题是,当我对列进行排序时,它会返回到$catergory变量的原始值 我希望这是有道理的 有人能告诉我我做错了什么吗?如果我需要更改SQL查询,或者想办法让PHP记住重新分配的$catergory值,然后我想对列进行排序 这是我的密码: <?php // C
<?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>";
?>
在你的链接中,如果变量存在,你必须把它们放进去
例如:
<a href="?categoryFilter=staffroom<?php if isset($_GET['orderBy'] echo '&orderBy=", $_GET['orderBy'];?>" />
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所指出的,您可能希望用category替换category,如果不必在字符串中添加变量,用简单引号替换双引号是一个很好的方法。PHP解释“字符串”比解释“字符串”要慢。最好使用echo的多个参数来代替字符串连接。(echo'hello'、'world';比echo'hello'更好。'world';注意@EmrysMyrooin谢谢你指出这一点,我不知道php短标记不受欢迎。但我不知道为什么:-)看到它比看到可怕的echo更好!我只是说“那个家伙”把你的“分类”拼写错了。可能会导致问题。@K.K.Smith实际上我拼写“catergory”错了,因为这是php变量的实际名称-但是感谢您指出它,让我仔细检查;)