【发布时间】:2020-09-16 11:38:24
【问题描述】:
我是 PHP 新手,所以请多多包涵。
在我使用 mysqli 查询的 php 项目中,我从 mysql 数据库中获取结果并将它们显示为“带有分页的 html 表”(例如,每页 10 个结果)。
我实现这一目标的主要代码是下面的代码并且工作正常:
<table>
<tr>
<td> word-combinations </td>
</tr>
<?php
while ( $row=mysqli_fetch_assoc($result) ) { ?>
<td><?php echo $row['words'],$_POST['fname'];?></td>
</tr>
<?php } ?> <!-- end of while loop -->
<?php ?> <!-- the end of php tag -->
</table>
所以表格第一页的网址是: http://example.com/mytable.php?page=1
表格第二页的网址是: http://example.com/mytable.php?page=2 等等。
我还创建了一个 start.php 页面,其中包含一个“简单的 HTML 表单”和一个带有 POST 操作的“单个输入字段”:
<?php
session_start();
echo "<form method='POST' action='http://example.com/mytable.php?page=1'>";
echo "<label for='fname'>First name:</label>";
echo "<input type='text' name='fname'> <br>";
echo "<input type='submit' value='Submit'>";
echo "</form>";
?>
我的目标是能够获取(访问)用户在表格的所有页面上的 start.php 页面的输入字段中输入的字符串,并将该字符串附加到表格页面的所有结果的末尾向用户显示。
为了实现这一点,我使用了 php session 概念。
当用户填写输入字段并点击提交按钮时,用户被重定向到http://example.com/mytable.php?page=1 url,并且 $_POST['fname'] 值存在并成功添加到末尾表格第一页的结果。
当用户填写输入字段并点击提交按钮时,用户将被重定向到http://example.com/mytable.php?page=1 url,并且 $_POST['fname'] 值存在并且成功 strong> 添加在表格第一页结果的末尾。
但是当用户点击表格下的同一个page1分页链接(实际上是标签)时,$_POST['fname'] 不再存在!
当用户点击下一页链接(page2、page3 等)时,$_POST['fname'] 不再存在!
我在表格下创建“分页链接”的代码是:
<?php
for ($i=1;$i<=$total_pages;$i++){
echo "<a href='mytable.php?page=".$i."'> $i </a>";
}
?>
我不知道我错在哪里。 我是否需要在某处放置一些代码以使 session_start(); 在表格的所有页面上执行?
或者由于我不知道的原因,$_POST['fname'] 无法在表格的所有页面上检索到。
任何帮助将不胜感激。
【问题讨论】:
-
$_POST数组仅在您使用method="POST"提交表单时填充,如果您直接单击链接,则不会填充它。如果您在会话变量中构建表单内容,那么当您的用户在未提交表单的情况下单击页面链接时,您将从那里检索数据。 -
使用 get 来快速完成这类事情。您将不得不使用偏移量在每个页面中重复查询(因此第一页中的前 50 行然后从 51 到 100 等等)。另一种方法是使用 ajax 在单个页面中执行相同的操作
-
与其将这个值存储到会话中,不如将它添加到您的分页链接中可能更有意义。
mytable.php?page=123&fname=valueyougotviaPOSTonfirstpage。您将需要使用 $_GET 而不是 $_POST 来访问它。但是您可以使用 $_REQUEST 访问使用 任一 GET 或 POST 发送的参数。
标签: php