Добрый день StackOverflowers,Foreach принимает последний пункт ввода текстового поля
У меня довольно простой вопрос. (Я думаю :))
Каждый раз, когда я отправляю форму со многими другими полями ввода, она принимает последнее значение поля ввода.
У меня была аналогичная проблема, месяц назад, но я установил ее как-то .. Я просто не могу решить эту проблему ..
Ниже вы можете увидеть мой 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();
}
}
}
?>
Каждый раз, когда он отправляется в файл modify.php, он обновляет последнее значение поля ввода.
В примере, если у меня есть 16 полей ввода, это занимает 4, 8, 12 и 16-е значения поля ввода.
Так что проблема probaly с именем поля ввода, но это может быть также modify.php ..
Любая помощь appericiated! Я изо всех сил дней с этой простой проблемой :(
Заранее спасибо Ребята !!
Просто напечатайте запрос вместо того, чтобы исполнять: вы сами можете разобраться в проблеме –
Пробовал много раз без удачи :(Я борюсь, но это кажется простой проблемой. Но это все еще не fixed :( – Taykklan
Исключить обновление цикла. Вместо обновления в цикле [проверить несколько обновлений в одном запросе] (http://stackoverflow.com/questions/20255138/sql-update-multiple-records-in-one- запрос) .Это, вероятно, решит вашу текущую проблему.Также вы очень уязвимы для SQL-инъекций. – Andrew