Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL和PHP-使href记住上一个变量_Php_Html_Mysql_Sql - Fatal编程技术网

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

MySQL和PHP-使href记住上一个变量,php,html,mysql,sql,Php,Html,Mysql,Sql,我对PHP很陌生,但对JavaScript有一些了解 我正在尝试构建一个MySQL表,该表具有按标题排序的列,我通过查看web等来管理这些列;但是,我们希望SQL查询使用WHERE子句,该子句只显示满足该子句的行(并且它可以工作),但问题是,当我对列进行排序时,它会返回到$catergory变量的原始值 我希望这是有道理的 有人能告诉我我做错了什么吗?如果我需要更改SQL查询,或者想办法让PHP记住重新分配的$catergory值,然后我想对列进行排序 这是我的密码: <?php // C

我对PHP很陌生,但对JavaScript有一些了解

我正在尝试构建一个MySQL表,该表具有按标题排序的列,我通过查看web等来管理这些列;但是,我们希望SQL查询使用WHERE子句,该子句只显示满足该子句的行(并且它可以工作),但问题是,当我对列进行排序时,它会返回到$catergory变量的原始值

我希望这是有道理的

有人能告诉我我做错了什么吗?如果我需要更改SQL查询,或者想办法让PHP记住重新分配的$catergory值,然后我想对列进行排序

这是我的密码:

<?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变量的实际名称-但是感谢您指出它,让我仔细检查;)