Я пытаюсь создать страницу на php, которая берет строки из базы данных, отображает их, а затем дает зрителю возможность проголосовать за или против определенной записи. Вот отрывок:
echo("<form action=\"vote.php\" method=\"post\"> \n");
echo("<INPUT type=\"hidden\" name=\"idnum\" value=\"".$row[0]."\">");
echo("<INPUT type=\"submit\" name=\"up\" value=\"Upvote.\"> \n");
echo("<INPUT type=\"submit\" name=\"down\" value=\"Downvote\"> ");
echo("<form/>\n");
Проблема в том, что когда я нажимаю кнопку отправки, отправляемое значение idnum основывается на том, что кажется наиболее удаленным. Итак, мои вопросы: когда нажата кнопка отправки, отправляются ли значения для всех входов на странице?






Ваша форма закрыта неправильно. Используйте </form> вместо <form/>.
Проблема с вашим html в том, что у вас должен быть </form>, а не <form/>.
Тег формы не закрыт должным образом. У вас есть <form/>, но это должен быть </form>.
Это делает всю страницу формой, поэтому она отправляет все входные данные. Однако, если форма закрыта правильно, она будет отправлять только входные данные в тегах формы, в которых была нажата кнопка.
Хотя это не помогло бы с этой конкретной проблемой, я бы рекомендовал не смешивать вашу разметку с вашей логикой, где это возможно. Это гораздо более читабельно и гораздо более доступно для редактирования:
<form action = "vote.php" method = "post">
<input type = "hidden" name = "idnum" value = "<?php echo $row[0]; ?>">
<input type = "submit" name = "up" value = "Upvote.">
<input type = "submit" name = "down" value = "Downvote">
</form>
Я хотел бы прокомментировать, что echo не является функцией (т.е. оно не должно быть echo (...)), это оператор, поэтому echo следует использовать как: echo "text" Second. Было бы легче читать, если бы вы просто сделал это:?> <form action = "vote.php" method = "post"> <INPUT type = "hidden" name = "idnum" value = "<? php echo $ row [0];?>">