选择带有空白文本框的标签

时间:2015-07-19 10:55:02

标签: php html mysql forms textbox

我做了一个从数据库中检索数据的表单。此表单允许您显示数据库中的学生列表,但问题是我无法单独正确输入他们的分数。它确实允许插入分数,但不幸的是,它只接受上一个学生的最后一个分数,并向所有学生输入相同的分数。

这些是我的代码:

FORM代码

if ($result->num_rows > 0) { // output data of each row
   while($row = $result->fetch_assoc()) {
    if($row['status']=='p'){


    <form name="result" method="post"> 
    <?php {          //this form will display the set of students

            echo $row['lastname'] . ', ' . $row['firstname'];
            echo '<input type="hidden" name="selected[]" value="'.$row['reviewee_idnumber'].'"/>'; ?>
            <input type="text" name="score" required="required" size="20" placeholder="Score"/><br><br>
    <?php   echo '</br>';
        }


    } //if statement
    } //while statement
    ?>

<input type="submit" name="submit" value="Submit"/>
<input type="hidden" name="code" value="<?php echo $code;?>"/>
<input type="hidden" name="subject" value="<?php echo $subject;?>"/>
<input type="hidden" name="items" value="<?php echo $items;?>"/>
<input type="hidden" name="date" value="<?php echo $date;?>"/>
</form>

这是我将代码插入数据库的地方

if(isset($_POST['submit'])){


$code = $_POST['code'];
$subject = $_POST['subject'];
$items = $_POST['items'];
$date = $_POST['date'];
$score = $_POST['score']; //get score

$update = mysql_query("INSERT INTO exam (exam_code, subject, date, total_item)
                                    VALUE ('$code','$subject', '$date', '$items')"); 


if(!empty($_POST['selected'])) {       
    $checked_count = count($_POST['selected']);// Counting number of checked checkboxes.
    //echo "You have selected following ".$checked_count." option(s): <br/>"; 

    foreach($_POST['selected'] as $selected){  // Loop to store and display values of individual inputs.
         $updatedata="INSERT INTO result (score, exam_code, reviewee_idnumber) 
                                    VALUE ('$score', '$code', '$selected')";


            if(@mysql_query($updatedata,$dbc)){
                print '<p> successful!</p>';  
            }else{
                print '<p> failed. '.mysql_error().'</p>';
            } 

它应该显示列表学生(这很好),并且在他们的名字旁边是一个空白区域,它将接受他们的分数(这不起作用)。

2 个答案:

答案 0 :(得分:0)

由于<form name="result" method="post">位于while循环中,因此您的页面中实际上有多个表单。提交按钮仅作用于最后一个表单,这就是为什么只有最后一个学生的分数才会更新。

此外,由于有多个input元素具有相同的name,因此在POST请求中只发送一个值。对此的解决方案是将学生的ID包含在名称中:

name="score'.$row['reviewee_idnumber'].'"

您需要相应地更新表单处理逻辑。

答案 1 :(得分:0)

name =<?php echo "'score.$row['reviewee_idnumber']'" ?>