-2

所以我在sql中有一个表。基本上是检查报告。我已经创建了效果很好的表单。提交。现在我想创建一种方法来调用表格中的单个报告,并将其显示在 php 的表格中。下面的代码非常适合显示我的信息(有很多超过 3 列,仅以 3 为例)。问题是我想基本上一次只显示一份检查报告,甚至可能根据提交的日期创建搜索。下面的代码是我知道如何选择所有表的唯一方法。

<?php 

$result = mysql_query("SELECT * FROM inspection ORDER BY name");

echo "<table border='1'>
<tr>
<th>ID #</th>
<th>Name</th>
<th>inspection #</th>
</tr>";

while($row = mysql_fetch_array($result))
{
  echo "<tr>";
  echo "<td>" . $row['id'] . "</td>";
  echo "<td>" . $row['Name'] . "</td>";
  echo "<td>" . $row['Inspection #'] . "</td>";
  echo "</tr>";
}
echo "</table>";

?>

这很好用,只需要知道如何更好地将它用于我的搜索。请记住,我正在通过 php 为最终用户执行此操作,以便他可能只看到一个页面,该页面为他提供了所有检查日期,然后单击该页面,它会提取所有数据并显示出来。

4

2 回答 2

1

SELECT * FROM 检查 WHERE<column> <operator> <value>

可以来自<value>多个地方:下拉列表,最终用户从选项中选择一个值,或者最终用户输入他们想要的内容的输入字段。同样,您可以通过向 where 语句添加更多子句来过滤许多其他选项。

作为给定示例的补充,如果您只想选择名称为 Bob 的检查,您可以执行以下操作:

SELECT * FROM 检查 WHERE Name = 'Bob'

如果您希望名称是由最终用户定义的“通用”,请给他们一个输入字段。

搜索.php

<form action="result.php" method="post">
     <input type="text" name="Name" />
</form>

结果.php

SELECT * FROM inspections WHERE Name = $_GET['Name']

以上是一个非常粗略的想法,但它应该是一个很好的起点。就像@Matt 添加的那样,您可以在服务器端或客户端进行。

于 2012-07-30T14:41:36.017 回答
0

有两种方法可以做到这一点:使用服务器端处理页面进行分页,或 javascript (jquery) 分页。

我过去都做过,发现 jQuery 数据表是一个很好的工具——你将所有记录打印到页面上,然后 jQuery 接管并以分页格式显示它们。http://datatables.net/

要使用服务器端分页执行此操作,您需要跟踪记录数和您所在的当前记录。然后您必须将您的 SQL 语句修改为如下内容:

SELECT * FROM inspection ORDER BY name LIMIT $page, 1

并在每次您在表格中向前/向后导航时传递 $page。这是相当密集的代码,但如果你正在寻找一个很好的练习。

最后,如果您想在某个日期范围内进行搜索,您可以进一步修改您的查询:

SELECT * FROM inspection 
WHERE date BETWEEN [some start date] AND [some end date] 
ORDER BY name LIMIT $page, 1
于 2012-07-30T14:41:08.903 回答