0

我需要一些 PHP 和 MySQL 代码的帮助。目前我有一个 php 文件,它显示我数据库中表的内容。我希望它忽略匹配“未预订”的结果。因此,该文件仅向我显示已预订的插槽。这是我的代码:

<link href="../css/pagestyle.css" rel="stylesheet" type="text/css" />
<?php 
include("../config.php");
include("functions.php");
if($logged["level"] == "HDJ" OR $logged["level"] == "SA") {

echo "<div class=\"head\">View Booked Slots</div>
<img src=\"../images/spacer.png\" width=\"5\" height=\"5\">
<div class=\"board\">Here you can view booked slots.</div>
<img src=\"../images/spacer.png\" width=\"5\" height=\"5\">
<table width=\"580px\" class=\"board\" border=\>";
      $order = "SELECT * FROM timetable";
      $result = mysql_query($order);
      while ($row=mysql_fetch_array($result)){
        echo ("<tr><td>$row[username]</td>");

        </tr>");
      }
      echo "
      </table>
"; 


    } else {
echo ("<div class=\"caution\">Access is denied.</div>");
}
?> 
4

3 回答 3

2

修改查询以不首先拉取它们。

$order = "SELECT * FROM timetable WHERE <the column> <> 'Not Booked';

替换为表中出现<the column>的正确列名。Not Booked

通常不建议像您在此处所做的那样混合数据库逻辑和显示逻辑。相反,您应该在输出表之前进行查询,并将其结果存储在数组中。然后遍历数组以显示您的表格。

$order = "SELECT * FROM timetable WHERE somecolumn <> 'Not Booked'";
$result = mysql_query($order);

// Error checking
if (!$result) {
  // output error, take other action
}
else {
  while ($row=mysql_fetch_array($result)){
     // Append all results onto an array
     $rowset[] = $row;
  }
}

稍后,循环遍历数组以输出您的值。不要忘记使用htmlspecialchars().

foreach ($rowset as $row) {
  echo "<tr><td>" . htmlspecialchars($row['username']) . "</td></tr>";
}
于 2012-04-11T15:16:25.283 回答
1

在您的 mySQL 代码中:

SELECT * FROM timetable WHERE myvariable <> 'Not Booked'
于 2012-04-11T15:17:06.050 回答
0

Michael 的回答只会提取 MATCH 'Not Booked' 的结果,而不是忽略它们。将代码调整为:

$order = "SELECT * FROM timetable WHERE <the column> <> 'Not Booked';

你会得到所有预订的(假设只有两个州)

于 2012-04-11T15:21:29.263 回答