动态输入表单php

时间:2014-11-17 23:30:48

标签: php mysql

我正在制作一个动态的PHP表单,它与mySQL数据库交互,用于输入不同作业的学生分数。到目前为止,我已成功连接到数据库并访问了必要的数据。首先为每个学生显示以下代码,他们的名字,然后是一个空文本输入框,用户输入该分数表示学生在作业中获得的分数。

<?php if(isset($_POST["beginScoring"]) || isset($_POST['submitScores'])){
        $result = $connection->query("SELECT id, firstname, lastname FROM student ORDER BY lastname");
        if(!$result)
        {
            echo "Query Failure";               
        }
        else 
        {
            $foo = array();
            $c = 0;
            echo "<tr><td>Last Name</td><td>First Name</td><td>Points Earned</td></tr>";
            while ($row = $result->fetch_assoc())
            {
                echo "<tr><td>$row[lastname]</td><td>$row[firstname]</td>";     
                ?>
                <td><input type="text" size=8 name="" id="" value=""/></td></tr>  <!-- I can maybe use an array to store scores . . . -->
                <?php
            }
        }
    ?>

我遇到的问题是如何命名文本输入。由于文本框的数量不确定,我不能为输入项使用单个静态名称,对吧?命名文本框以便我可以使用POST数组轻松访问它们的好方法是什么?

1 个答案:

答案 0 :(得分:2)

评论的人回答了基本问题。使用&#34; varname []&#34;将为您提供您想要的解决方案。但我认为这个问题还有更多。

在某种程度上,您需要知道哪个分数与哪个学生相对应。如果您只是使用name =&#34;得分[]&#34;,那么访问后端的$ _​​POST [&#39;得分&#39;]变量将无法告诉您哪个学生得分属于。你需要一种方法来了解它。

所以有两种方法可以达到这个目的。

方法1是使用隐藏变量

<input type="hidden" name="student[]" value="<?php echo $row['id']?>" />
<td><input type="text" size=8 name="score[]" id="<?php echo $row['id']?>" value=""/>

然后在后端你会做类似的事情:

foreach ($_POST['student'] AS $key => $id)
{
    $score = $_POST['score'][$key];
    // $sql = "INSERT INTO scores (`student`,`score`) VALUES ('$id','$score')";
}

但我个人会在不使用隐藏的情况下处理它。相反,我会用我的HTML做这样的事情:

<td><input type="text" size=8 name="score[<?php echo $row['id']?>]" id="<?php echo $row['id']?>" value=""/>

请注意,我将学生ID回显到score [] HTML变量名称中。然后在后端我可以这样做:

foreach ($_POST['score'] AS $id => $score)
{
    // $sql = "INSERT INTO scores (`student`,`score`) VALUES ('$id','$score')";
}    
祝你好运!