将PHP / SQL foreach表单项存储在变量中

时间:2014-08-02 11:35:46

标签: php sql forms pdo

抱歉,对于PHP来说,我有点像菜鸟但是我想知道是否有人知道如何解决这个PHP / SQL问题。

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

我的问题是,我似乎无法引用用户或表格中的数字来提取我输入的用户和号码。当我尝试请求在index.php中输入的编号时,如果我为表中的最终用户输入一个数字,它将只显示一个数字。当我尝试查看FullName它永远不会工作,我得到'未定义的索引:FullName'错误。 我还指定'在表单中POST,但它似乎没有这样做。 有没有人有任何想法?

由于

// 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'];
}

1 个答案:

答案 0 :(得分:-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; ?>