【问题标题】:Get different name for post method为 post 方法获取不同的名称
【发布时间】:2017-03-28 03:41:32
【问题描述】:

我的 PHP 代码有问题。我有一个包含数据库数据的表。在表中,我有一个包含名称属性的输入。当我已经从数据库加载数据时,属性名称具有相同的值。所以,如果我想发布它们,它只需要最后输入的名称。这是我的代码:

<html>
  <head>
    <title>Table PHP</title>
  </head>
  <body>
    <form action="execute.php" method="POST">
     <table>
        <tr>
           <th>No.</th>
           <th>Registration Number</th>
           <th>Customer Name</th>
           <th>Action</th>
        </tr>
        <?php
    include "connect.php";
    $sql = mysql_query("SELECT numreg,name FROM registration WHERE (numreg NOT IN(SELECT validation FROM tablevalidation)) ");
    $no = 1;
    while($result = mysql_fetch_array($sql)){
        echo "
        <tr>
            <td>$no.</td>
            <td><input type='hidden' name='numreg' value='$result[numreg]' />$result[numreg]</td>
            <td>$result[name]</td>
            <td><input type='submit' name='validation' value='Validation' /></td>
        </tr>";
        $no++;
    }
?>
     </table>
    </form>
  </body>
</html>

使用上面的代码, input name='numreg' 将为每个输入标签生成相同的值。因此,如果我在表单中使用 POST 方法,即使我选择第一条记录,也只会执行最后一条记录。我怀疑这是因为输入标签属性名称具有相同的值。那么,如何在输入标签中获取不同的属性名称来解决我的问题?请帮忙。

【问题讨论】:

  • 将输入类型名称 numreg 更改为不同于 try 的名称
  • 感谢@Darji Jigar 的建议,但我认为它不能解决我的问题,因为即使我将输入名称 numreg 更改为另一个名称,它也会保持不变。我使用while循环从数据库中加载数据,所以结果会是这样的:1. ,2. ,3. .
  • 你试过下面的答案吗? @Mike.Drinkwater

标签: php mysql html-table


【解决方案1】:

使用下面的代码。您需要将 numreg 定义为数组,以便在帖子中显示所有记录。将name='numreg' 更改为name='numreg_".$no."',这样它将为所有人定义您的唯一编号。

 <html>
  <head>
    <title>Table PHP</title>
  </head>
  <body>
    <form action="execute.php" method="POST">
     <table>
        <tr>
           <th>No.</th>
           <th>Registration Number</th>
           <th>Customer Name</th>
           <th>Action</th>
        </tr>
        <?php
    include "connect.php";
    $sql = mysql_query("SELECT numreg,name FROM registration WHERE (numreg NOT IN(SELECT validation FROM tablevalidation)) ");
    $no = 1;
    while($result = mysql_fetch_array($sql)){
        echo "
        <tr>
            <td>$no.</td>
            **<td><input type='hidden' name='numreg_".$no."' value='$result[numreg]' />$result[numreg]</td>**
            <td>$result[name]</td>
            <td><input type='submit' name='validation' value='Validation' /></td>
        </tr>";
        $no++;
    }
?>
     </table>
     **<input type='hidden' id='totalRecords' name='totalRecords' value='<?php echo $no; ?>' />**
    </form>
  </body>
</html>

<?php

if($_POST['validation'])
{
    for($i=1;$i<=$_POST['totalRecords'];$i++)
    {
        **echo $_POST['numreg_$i']."<br>";**
    }
}
?>

【讨论】:

  • 在您的代码中尝试上述更改并给您积极的反馈@Mike。饮用水
  • 能否请您指定您的输出和期望输出。 @Mike.Drinkwater
  • 如何在post中显示所有记录?
  • 这是我使用上面代码的代码: $result[numreg] if(isset($_POST['validation'])){ $count = count($_POST['numreg']); $insert = mysql_query("INSERT INTO 验证 where numreg = '$count'");我想要的期望输出是如果我验证第一个数据行它执行第一个数据。不是最后的数据。使用我上面的输入 name="numreg" 的代码,它总是执行最后一个数据,因为我怀疑它具有相同的 name 属性值。
  • 我已经编辑了代码,请检查一下。 @Mike.Drinkwater
猜你喜欢
相关资源
最近更新 更多
热门标签