【问题标题】:Store PHP/SQL foreach form items in variables将 PHP/SQL foreach 表单项存储在变量中
【发布时间】:2014-09-25 12:05:10
【问题描述】:

抱歉,我在 PHP 方面有点菜鸟,但我只是想知道是否有人知道我如何解决这个 PHP/SQL 问题。

我有一个从数据库中获取所有用户的 PDO 语句。 使用数据库中的用户数组,我创建了一个 foreach 循环,以在我想用来选择特定用户的表中显示所有用户,在我选择的用户的行中输入一个数字,然后单击提交并存储用户名和号码。稍后我将使用此信息填充另一个数据库。

我的问题是,我似乎无法引用用户或表格中的号码来提取我输入的用户和号码。当我尝试请求在 index.php 中输入的编号时,如果我在表格中为最终用户输入一个数字,它只会显示一个数字。当我尝试查看 FullName 时,它​​永远无法正常工作,并且出现“未定义索引:FullName”错误。 我还指定在表单中“发布”,但它似乎没有这样做。 有人有什么想法吗?

谢谢

//function.php

function getName($tableName, $conn)
{
    try {
        $result = $conn->query("SELECT * FROM $tableName");
                return ( $result->rowCount() > 0)
            ? $result
            : false;
    } catch(Exception $e) {
        return false;
    }
}

//form.php

<form action "index.php" method "POST" name='form1'>
  <table border="1" style="width:600px">
    <tr>
      <th>Name</th>
      <th>Number Entered</th>
    <tr/>
    <tr>
      <?php foreach($users as $user) : ?>
        <td width="30%" name="FullName">
          <?php echo $user['FullName']; ?>
        </td>
        <td width="30%">
          <input type="int" name="NumberedEntered">
        </td>
    </tr>
    <?php endforeach; ?>
  </table>
  <input type="submit" value="submit"></td>
</form>

//index.php

$users = getName('users', $conn);
if ( $_REQUEST['NumberedEntered']) {
    echo $_REQUEST['NumberedEntered'];
    echo $_REQUEST['FullName'];
}

【问题讨论】:

  • 您应该将&lt;tr&gt; 标签放在foreach 循环中,因为您也在循环中关闭它。目前您只打开一行,但为每个用户关闭一个。

标签: php sql forms pdo


【解决方案1】:

变量FullName 不会通过您的表单传输到index.php。仅发送表单元素的值。您可以添加一个隐藏的表单字段,其中包含 FullName,如下所示:

<input type="hidden" name="FullName" value="<?php echo $user['FullName']">

但是您的第二个问题是,您的 foreach 循环将创建几个具有完全相同名称的输入字段。除了最后一个,您将无法收到任何输入的号码。查看this question 了解可能的解决方案。


更新

将每一行放在单独的表单标签中应该可以解决您的问题:

<?php foreach($users as $user) : ?>
  <form action="index.php" method="POST">
    <tr>
      <td align="center" width="40%" >
        <?php echo $user['FullName']; ?>
        <input type="hidden" name="FullName" value="<?php echo $user['FullName']; ?>" />
      </td>
      <td width="30%">
        <input name="NumberedEntered"/>
      </td>
      <td>
        <input type="submit" value="submit"/>
      </td>
    </tr>
  </form>
<?php endforeach; ?>

【讨论】:

  • 我更新了我的答案。之前我提出的解决方案中缺少 en echo
  • 您是否尝试过使用更新中的解决方案?你需要那些额外的表单标签。
  • 嗨丹尼尔,这太完美了!我可以输出姓名和号码!!感谢您的帮助!
  • 你应该总是(如果可能的话)使用 POST 而不是 GET,那么为什么不简单地写:echo $_POST['NumberedEntered'];
  • 你为什么需要那个 if 语句?你的表格对我来说似乎很好。请针对这个问题打开一个新问题,因为它与原来的问题没有太多共同之处......我会在那里帮助你
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-29
  • 2021-06-22
  • 1970-01-01
  • 2014-03-24
  • 2017-07-11
  • 1970-01-01
相关资源
最近更新 更多