<form action="create_page.php?subject=<?php echo urlencode($current_subject["id"]); ?>" method="post">
После $current_subject["id"]
исчезает. Я знаю, что это происходит в методе GET, но почему он исчезнет в методе POST?
Странные вещи случаются, когда форма не передает мою функцию проверки, параметр остается там. Но когда он проходит, он уходит. Я знаю, что могу использовать скрытое поле, но мне любопытно, почему это происходит.
может показаться, что у вас есть пустое значение для $current_subject["id"]
поэтому попробуйте проверить
if(!empty($current_subject["id"])) {
// do yourstuff
}
или для лучшего альтернативного способа попытаться использовать как скрытую форму
<form action="create_page.php">
<input type ="hidden" name="subject" value="<?php echo urlencode($current_subject['id']);?>">
Да, это не сработает, и для этого вам нужно вернуться к определению GET и POST.
В запросе GET параметры формы кодируются в URL-адресе и называются строкой запроса. Поэтому использование
$_GET
будет ожидать параметры в строке запроса.
Запрос POST передает параметры формы в теле HTTP-запроса, а не в URL-адресе.
Поэтому использование $_POST
ожидает, что данные в HTTP-запросе не будут в строке запроса.
И именно по этой причине данные передаются в скрытом поле, как в вашем примере.
$current_subject["id"]
и есть ли у вас значение, установленное в create_page.php для того же самого?