【问题标题】:getting form input data in multi-page table in php在php中获取多页表中的表单输入数据
【发布时间】: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&amp;fname=valueyougotviaPOSTonfirstpage。您将需要使用 $_GET 而不是 $_POST 来访问它。但是您可以使用 $_REQUEST 访问使用 任一 GET 或 POST 发送的参数。

标签: php


【解决方案1】:

问题是您在启动 session_start 后没有设置 $_SESSION 数据。 你可以试试这个............但处理器将在同一页面上:。 1)创建文件以获取数据.....“index.html”.....

<form action="index2" method="post">

2)当用户点击提交时处理表单....."index2".....

<?php
 session_start();
if(!empty($_POST['name1'])){
$_SESSION['name1']=$_POST['name1'];
}else{
echo "There is no Data in the Variable";

}

3)现在所有脚本中都将不存在 SESSION 变量,您只需在每个页面中启动会话,但我建议使用一个脚本处理器页面

【讨论】:

    【解决方案2】:

    感谢所有指导我的人。

    所以根据您的指导,我将表单操作从 POST 更改为默认 GET

    然后根据 CBroe 指导,我将 $_GET['fname'] 添加到分页链接代码中。

    这样看来根本不需要部署php session。

    <?php
      $userinput = $_GET['fname'] ;
      for ($i=1;$i<=$total_pages;$i++){
      echo "<a href='mytable.php?page=".$i."&fname=$userinput'> $i</a>";
      }         
    ?> 
    

    现在一切正常,但我不知道我的代码和设置是否完美!

    谢谢大家

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-02
      • 2015-07-26
      • 2012-05-25
      • 2015-08-01
      相关资源
      最近更新 更多