我们如何在php

时间:2018-07-22 14:48:31

标签: php forms dynamic-forms

新手又回来了另一个问题。任何帮助将非常感激。 假设,我们得到了一个表格,其中我们写下了用户名,并且在其前面有一个输入框,可以在其中为所提及的用户分配等级。在这种情况下,一切都很清楚。我们有一个表单,名称为用户(以'id'作为值)和另一个变量,即成绩',已发布到php-action-page。因此,在php-action-page中,我通过POST获得了两个变量,一个是用户的ID,另一个是分配的等级。在这里,一切都很清楚,过程也很容易,因为我只有两个定义的变量。现在,假设,我们正在将“用户”表中的用户列表动态插入到表单中。我们用从数据库中获取的10位用户来填写表格。在它们前面有用于输入“等级”的输入框。到目前为止,一切都很好。但是,问题出在下一阶段。 问题是我不知道如何要求php-action-page进行插入,即只要有发布的用户变量,就可以为特定用户在数据库中插入成绩。在这里,我有数十个用户和数十个动态变量。 还有如果问题有点含糊,请原谅。但是,请尽力使我摆脱这种困境。非常感谢。

这里有一些代码可以使问题更加清楚。 我从以下代码开始:

<?php
require_once ('../inc/takein.php');
$pd = new dbase();
$students = $pd->run_a_query('SELECT * from `checking`');

在这里,我包括数据库和其他必要的文件。然后,我运行查询以从表中获取我的学生的列表。到目前为止,一切都很好。接下来的代码使我感到困惑。 在看代码之前,请先看一下下图中的html设计: Final Design
我完全不知道它是错误还是正确的。您可能也会对此有所帮助。

    <form action="grades.php" method="post">
        <table class="table table-bordered font-label" id="item_table">
<?php
foreach ($students as $student) {
    echo '<tr>';
    echo '<td>'.$student['name'].'</td>';
    echo '<td><input type="text" name="grade[]" class="form-control omit-radius-input"></td>';
    echo '<input type="hidden" name="id[]" value="'.$student['id'].'">';
    echo '<tr>';
}
?>
        </table>
<input type="submit" name="dispatched" class="btn btn-green">
        </form>

在这里,我将信息放在form元素中的表格中。如上图所示,我从数据库中获得了四个学生。现在,我想将这些学生及其新设置的成绩发送回数据库。我想在这里发布的是学生证及其成绩。
然后,下面是代码的最后一部分,由于我无法理解该代码的剩余部分,因此该部分不完整。

if (isset($_POST['dispatched'])) {
    $id[] = $_POST['id'];
    $grade[] = $_POST['grade'];
    // what to do now???!!!
    foreach(...HOW TO DO THE 'FOREACH') {
    ...
    }
}

请您帮助我输入学生成绩。预先非常感谢。

1 个答案:

答案 0 :(得分:3)

只需将变量命名为数组-如果您的表单看起来像这样

<form method="POST">
  <input type="text" name="grade[12]">
  <br>
  <input type="text" name="grade[15]">
  <br>
  <input type="text" name="grade[7]">
  <br>
  <input type="text" name="grade[21]">

  <!-- continue here -->
</form>

然后在您的PHP代码中,您将获得像这样的成绩

if(is_array($_POST['grade'])) foreach($_POST['grade'] as $id => $value)
{
  // REPLACE INTO user_grades(user_id, grade) VALUES($id, $value)
}

更新

您还应该将学生的ID放在“输入”字段的名称中-否则,您将不知道哪个学生是给定的成绩。

<?php
foreach ($students as $student) {
    echo '<tr>';
    echo '<td>'.$student['name'].'</td>';
    echo '<td><input type="text" name="grade['.$student['id'].']" class="form-control omit-radius-input" value="'.$student['current_grade'].'"></td>';
    echo '<tr>';
}
?>

foreach显示在我的原始答案中。