Foreach正在输入输入文本字段的最后一项

时间:2015-06-03 12:23:32

标签: php html sql forms pdo

下午好StackOverflowers,

我有一个非常简单的问题。 (我猜:))

每次我提交一个包含许多其他输入字段的表单时,它都会获取输入字段的最后一个值。

我一个月前遇到过类似的问题,但我以某种方式解决了这个问题......我只是无法解决这个问题。

您可以在下面看到我的HTML表单。 (没有标记,我知道)

<?php

include_once("database.php");

$sql = "SELECT * FROM statements";
$stmt = $db->prepare($sql);
$stmt->execute();

$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach($rows as $row){
echo "<b>";
echo $row['question'];
echo "<br/></b>";



    $sqlA = "SELECT * FROM question_answer WHERE question_id =" . $row['id'];
    $stmtA = $db->prepare($sqlA);
    $stmtA->execute();
    $rowsA = $stmtA->fetchAll(PDO::FETCH_ASSOC);
        echo "<form id='modify' name='modify' action='modify.php' method='POST'>
        <div id='answers'>";
    foreach($rowsA as $rowa){
        if($rowa['correct_answer'] == 1){

        $rowAnswer = $rowa['answer'];
        $rowId = $rowa['question_id'];
        echo "<input type='text' checked value='" . $rowAnswer . "' name='" . $rowId."' style='background:lightgreen;'><br/>";
        echo "</div>";
    }
    else{
        $rowFalseId = $rowa['question_id'];
        echo "<input type='text' value='" . $rowAnswer . "' name='" . $rowFalseId."'><br/>";
    }




}

}
?>

<input type='submit' name='modify_answers' value="Modify Answers">
</form>

您可以在下面看到我的更新查询;

<?php
include_once("database.php");

// foreach($_POST as $val){
//      print_r($val);

//  }


$sql = "SELECT * FROM statements";
$stmt = $db->prepare($sql);
$stmt->execute();

$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach($rows as $row){

    $sqlA = "SELECT * FROM question_answer where question_id =" . $row['id'];
    $stmtA = $db->prepare($sqlA);
    $stmtA->execute();
    $rowsA = $stmtA->fetchAll(PDO::FETCH_ASSOC);

    foreach($rowsA as $rowa){
        foreach($_POST as $id => $value){
        $update = "UPDATE question_answer SET answer = '".$value."' WHERE question_id ='". $id."'";
        $stmt = $db->prepare($update);
        $stmt->execute();
    }
}
}
?>

Everytime它提交到modify.php文件,它会更新输入字段的最后一个值。

例如,如果我有16个输入字段,则它取输入字段的第4,第8,第12和第16个值。

所以问题是输入字段的名称,但也可能是modify.php ..

任何帮助都是有效的!我遇到这个简单的问题时遇到了困难:(

感谢Advance Guys !!

2 个答案:

答案 0 :(得分:2)

我想我可以看到这里发生了什么。你需要移动这一行......

$rowAnswer = $rowa['answer']; 

...所以它不属于你的if声明(将它们移到它上面)。目前,只有$rowa['correct_answer'] == 1评估为true才会分配。

答案 1 :(得分:1)

这是固定的家伙!谢谢你的帮助.. @ d0ug7a5感谢您的回答,这对我有所帮助。但我的主要问题是我得到了Question_id而不是id。谢谢!