#php #html #forms
Вопрос:
Мне интересно, в чем моя ошибка. Я рассматривал различные решения о том, почему $_POST пуст, и ни одно из них не дало ответа на вопрос, почему это происходит.
я попробовал следующие изменения в HTML method=»GET» и method=»POST» — ни одно из действий не работает=»test.php» / действие=»localhost/test.php» / действие=»c:xampphtdocstest.php»
Вот код HTML-формы
<form name="Driftslog" action="localhost/test.php" method="POST">
Init: <input type="text" id="Init" size="5" maxlength="5" autocomplete="on" required> <br></br>
LID: <input type="text" id="LID" size="8" maxlength="8" required><br></br>
Ticket-ID: <input type="text" id="TicketID" size="20" maxlength="15" required><br></br>
Kunde: <input type="text" id="Kunde" size="25" maxlength="50" required><br></br>
Start tid: <input type="datetime" id="StartTid" size="15" value="" required> <br></br>
Slut tid: <input type="datetime" id="SlutTid" size="15" value="" required><br></br
Tilkald <input type="checkbox" id="Tilakd"><br></br>
Planlagt <input type="checkbox" id="Planlagt"><br></br>
Andet <input type="checkbox" id="Andet"><br></br>
<input type="submit" value="Opret">
</form>
а вот мой PHP-файл test.php
в этом PHP-файле я попробовал различные изменения.
я прокомментировал весь раздел IF и просто попытался распечатать переменную, чтобы посмотреть, что в ней, используя var_dump($_POST) /print_r и a для каждого цикла.
все вернулось пустым
это похоже на то, что HTML не передает данные в файл php
Единственное, что работает в php-файле, — это последнее эхо и перенаправление страницы
<?php
if(isset($_POST['submit']))
{
$Init = trim($_POST["Init"]);
$LID = trim($_POST["LID"]);
$TicketID = trim($_POST["TicketID"]);
$Kunde = trim($_POST["Kunde"]);
$StarttTid = trim($_POST["StartTid"]);
$SlutTid = trim($_POST["SlutTid"]);
$data = [ $Init, $LID, $TicketID, $Kunde, $StartTid, $SlutTid, "n"];
$f = fopen("db.csv","a");
fputcsv($f, $data);
fclose($f);
print $TicketID;
}
echo "oprettet med success";
header("Refresh:3; url=http://localhost");
exit();
?>
Ответ №1:
Проблема —
Значения вашей формы не попадают в ваш PHP.
Решение —
- Обновлена инструкция if для проверки «REQUEST_METHOD»
- Используйте «имя» в полях формы. Вы не можете полагаться на удостоверение личности.
Пример —
index.html —
<form name="Driftslog" action="localhost/test.php" method="POST">
Init: <input type="text" id="Init" name="Init" size="5" maxlength="5" autocomplete="on" required> <br></br>
LID: <input type="text" id="LID" name="LID" size="8" maxlength="8" required><br></br>
Ticket-ID: <input type="text" id="TicketID" name="TicketID" size="20" maxlength="15" required><br></br>
Kunde: <input type="text" id="Kunde" name="Kunde" size="25" maxlength="50" required><br></br>
Start tid: <input type="datetime" id="StartTid" name="StartTid" size="15" value="" required> <br></br>
Slut tid: <input type="datetime" id="SlutTid" name="SlutTid" size="15" value="" required><br></br
Tilkald <input type="checkbox" id="Tilakd" name="Tilakd"><br></br>
Planlagt <input type="checkbox" id="Planlagt" name="Planlagt"><br></br>
Andet <input type="checkbox" id="Andet" name="Andet"><br></br>
<input type="submit" value="Opret">
</form>
test.php —
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$Init = trim($_POST["Init"]);
$LID = trim($_POST["LID"]);
$TicketID = trim($_POST["TicketID"]);
$Kunde = trim($_POST["Kunde"]);
$StarttTid = trim($_POST["StartTid"]);
$SlutTid = trim($_POST["SlutTid"]);
$data = [ $Init, $LID, $TicketID, $Kunde, $StartTid, $SlutTid, "n"];
$f = fopen("db.csv","a");
fputcsv($f, $data);
fclose($f);
print $TicketID;
}
echo "oprettet med success";
header("Refresh:3; url=http://localhost");
exit();
?>
Комментарии:
1. Я обновил и протестировал это. Это работает.
2. Это действительно сработало — изменил тег идентификатора на имя, заполнил массив в test.php Спасибо за вклад 🙂 Но остальные 2 также были верны. у меня также отсутствовала табличка с именем на отправке
3. Обратите внимание, что я изменил метод if для проверки запроса.
4. да, я заметил, но это работает и с «ЕСЛИ».. но скопировал ваше решение для хорошей меры 🙂 я учусь кодировать как HTML, так и php для журнала обслуживания для работы. и это было единственное, что до сих пор я не мог приступить к работе
Ответ №2:
В ваших input
полях отсутствуют name=''
атрибуты
Комментарии:
1. Спасибо за помощь здесь.. это было частью решения — мне пришлось изменить теги идентификаторов на имя и добавить тег имени к кнопке отправки
2. Вам не нужно было переходить
id
наname
.. вы могли бы использоватьid
в JS или CSS, если бы они вам были нужны. Однако для записи в форме явно требуетсяname
атрибут
Ответ №3:
Для чтения полей из запроса post поля ввода должны иметь name
атрибут.
Измените свой HTML на что-то вроде этого:
<form name="Driftslog" action="localhost/test.php" method="POST">
Init: <input type="text" id="Init" name="Init" size="5" maxlength="5" autocomplete="on" required> <br></br>
LID: <input type="text" id="LID" name="LID" size="8" maxlength="8" required><br></br>
Ticket-ID: <input type="text" id="TicketID" name="TicketID" size="20" maxlength="15" required><br></br>
Kunde: <input type="text" id="Kunde" name="Kunde" size="25" maxlength="50" required><br></br>
Start tid: <input type="datetime" id="StartTid" name="StartTid" size="15" value="" required> <br></br>
Slut tid: <input type="datetime" id="SlutTid" name="SlutTid" size="15" value="" required><br></br
Tilkald <input type="checkbox" id="Tilakd" name="Tilakd"><br></br>
Planlagt <input type="checkbox" id="Planlagt" name="Planlagt"><br></br>
Andet <input type="checkbox" id="Andet" name="Andet"><br></br>
<input type="submit" name="submit" value="Opret">
</form>
Комментарии:
1. Спасибо за помощь здесь.. это было частью решения — мне пришлось изменить теги идентификаторов на имя и добавить тег имени к кнопке отправки