У меня есть text inputs
. inputs
создаются из цикла while. Теперь я хочу поместить values
в массив. Как это:
array values mark['0'] input1 mark['1'] input2 mark['2'] input3
Я пробовал это, но не работал.
while($row=mysql_fetch_array($result)){ <form class="form1" name="form1" method="post"> <input type="text" name="mark[]"/> </form> } <form class="form1" name="form1" method="post"> <button type="submit" name="correction"></submit> </form>
вwhile($row=mysql_fetch_array($result)){ <form class="form1" name="form1" method="post"> <input type="text" name="mark[]"/> </form> } <form class="form1" name="form1" method="post"> <button type="submit" name="correction"></submit> </form>
А потом
if(isset($_POST['correction'])){ $grade=0; $mark=$_POST['mark']; foreach($mark as $key =>$value ){ $grade+=$value; } print $grade; }
Я получаю эти ошибки:
Notice: Undefined index: mark in C:\xampp\htdocs\virtual_exam\handy_correction.php on line 37 Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\virtual_exam\handy_correction.php on line 38
Проблема может быть вызвана двумя формами, которые arent связаны друг с другом и если ДА, как с ними соединяться? Если НЕТ, как делать то, что я хочу?
Измените форму:
<form class="form1" name="form1" method="post"> <?php while ($row = mysql_fetch_array($result)) { echo '<input type="text" name="mark[]" />'; } ?> <input type="submit" name="correction" value="Submit" /> </form>
А потом:
if (isset($_POST['correction'])) { $grade = 0; $mark = $_POST['mark']; foreach ($mark as $key => $value) { $grade += $value; } echo $grade; }
Вероятно, у вас должен быть только один элемент формы, а не один для каждой строки, которую вы пытаетесь вывести, и, конечно, не отдельный для кнопки отправки формы.
Ваша проблема в том, что фактическая форма, которую вы отправляете, содержит только один элемент – кнопку отправки. Таким образом, нет никаких полей ввода для публикации.
Вы должны сгенерировать свою форму следующим образом:
<form class="form1" name="form1" method="post"> <?php while($row=mysql_fetch_array($result)){ ?> <input type="text" name="mark[]"/> <?php } ?> <button type="submit" name="correction"></submit> </form>
в<form class="form1" name="form1" method="post"> <?php while($row=mysql_fetch_array($result)){ ?> <input type="text" name="mark[]"/> <?php } ?> <button type="submit" name="correction"></submit> </form>
То, что вы говорите в последнем абзаце, правильно, вы отправляете форму1, которая содержит только кнопку отправки, поэтому в скрипте PHP, который обрабатывает POST, не существует mark
.
поэтому измените HTML на:
<form class="form1" name="form1" method="post"> <?php while($row=mysql_fetch_array($result)){ ?> <input type="text" name="mark[]"/> <?php } ?> <button type="submit" name="correction"></submit> </form>
в<form class="form1" name="form1" method="post"> <?php while($row=mysql_fetch_array($result)){ ?> <input type="text" name="mark[]"/> <?php } ?> <button type="submit" name="correction"></submit> </form>