所以我在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为最终用户做这件事的,这样他可能只需要看到一个页面,告诉他所有检查日期,然后点击该页面,它就会提取所有数据并显示出来。
从检查中选择*<column>
<operator>
<value>
<value>
可以来自各种地方:下拉列表,最终用户从选项中选择一个值,或者输入字段,最终用户在其中输入他们想要的内容。类似地,您可以通过在where语句中添加更多子句来筛选许多其他选项。
作为对给定示例的补充,如果您只想选择Name为Bob的检查,您可以执行以下操作:
从检查中选择*Name="Bob"
如果希望名称是由最终用户定义的"通用"名称,请为其提供一个输入字段。
search.php
<form action="result.php" method="post">
<input type="text" name="Name" />
</form>
result.php
SELECT * FROM inspections WHERE Name = $_GET['Name']
以上是一个VERY的粗略想法,但它应该是一个很好的起点。就像@Matt补充的那样,你可以在服务器端或客户端进行。
有两种方法可以做到这一点:通过服务器端处理页面进行分页,或者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