如何通过php从表中选择所有数据,但一次只显示一行


How to select all data from table but only display one row at a time through php

所以我在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