【问题标题】:foreach in form not working properly [closed]foreach 形式无法正常工作[关闭]
【发布时间】:2013-04-24 02:51:52
【问题描述】:

我是 PHP 初学者,如果答案很明显,我很抱歉。

基本上,我希望用户单击提交按钮并将 id 发布到 aaa.php。

<form action='aaa.php' method='get'>`
<?php foreach ($a as $b) {
 ?>
  <tr>
    <td><input type="submit" name="Action" value='View' /></td>
    <td><?php echo $b['info'] ?></td>
    <input type="hidden" name="id" value="<?php echo $b['id']"?>
<?php echo }
echo "</tr></form></table>";
?>

使用上面的脚本,似乎 foreach 函数使每个 id 都被传输。即当使用method="get" 时,我得到一个"aaa.php?mailAction=View&amp;id=2&amp;id=1..." 的网址。

我应该如何解决这个问题?

【问题讨论】:

  • 如果您发布更多代码可能会有所帮助,或者甚至让我们知道$mail$a 的值
  • 当您从表单提交时,该表单中的所有输入都将被发布。
  • 您的$a 变量包含什么?你为什么要使用 foreach?
  • 很难理解你的问题/问题到底是什么。你为什么要通过隐藏字段传输多个 ID 值?似乎用户无法选择任何东西,那么为什么不首先将这些值保留在会话中的服务器端呢?
  • OP应该var_dump$a的内容,所以我们知道数组的内容

标签: php forms post foreach get


【解决方案1】:

如果您使用method=get 在浏览器查询中获得id=2&amp;id=1,您的foreach 循环似乎可以正常工作。我认为您必须先了解 HTML 表单才能在这里解决您的问题。

使用上面的代码,您将生成一个带有 id 数组的表单:

<form action='aaa.php' method='get'>
  <input type="hidden" name="id" value="2">
  <input type="hidden" name="id" value="1">

  <input type="submit" name="Action" value='View'/>
</form>

但实际上你想一次发送一个 id。所以你必须生成多个表单来实现这一点:

<form action='aaa.php' method='get'>
  <input type="hidden" name="id" value="2">

  <input type="submit" name="Action" value='View'/>
</form>

<form action='aaa.php' method='get'>
  <input type="hidden" name="id" value="1">

  <input type="submit" name="Action" value='View'/>
</form>

我希望,现在你明白了。

要解决你的问题,你的 PHP 代码应该是这样的:

foreach ($a as $b)
{
  echo "<form action='aaa.php' method='get'>
          <input type='hidden' name='id' value=" . $b['id'] . ">
          <input type='submit' name='Action' value='View'/>
        </form>";
}

【讨论】:

  • 有效!非常感谢!!
【解决方案2】:

试试这个

<table>
    <form action="aaa.php" method="get">
    <?php foreach ($a as $b) : ?>
        <tr>
            <td><input type="submit" name="Action" value="<?php echo $b['id'];?>" /></td>
            <td><?php echo $mail['info'] ?></td>            
        </tr>
    <?php endforeach;?>
    </form>
</table>

通过将 ID 放在提交按钮上,您应该可以在 URL 中获取单击按钮的值

【讨论】:

  • 谢谢!但实际上我在表单上有多个按钮,所以 value='View' 是必要的。这是我第一次在stackoverflow上发帖,也许我发帖时应该更清楚。但我真的没想到反应这么快!欣赏!
【解决方案3】:

如何将每个 id 放在自己的形式中?

<?php foreach ($a as $b) {
 ?>
<form action='aaa.php' method='get'>
    <table>
      <tr>
        <td><input type="submit" name="Action" value='View' /></td>
        <td><?php echo $mail['info'] ?></td>
        ...
        <input type="hidden" name="id" value="<?php echo $b['id']?>" />
      <tr>
    </table>
</form>
<?php
}
?>

【讨论】:

    【解决方案4】:

    你必须为这个类型使用数组

    <form action='aaa.php' method='get'>`
    <?php foreach ($a as $b) {
     ?>
      <tr>
        <td><input type="submit" name="Action[]" value='View' /></td>
        <td><?php echo $b['info'] ?></td>
        <input type="hidden" name="id[]" value="<?php echo $b['id']"?>
    <?php echo }
    echo "</tr></form></table>";
    ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-29
      • 2016-06-05
      • 2014-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-15
      相关资源
      最近更新 更多