html/PHP — Форма СООБЩЕНИЯ пуста

#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. Спасибо за помощь здесь.. это было частью решения — мне пришлось изменить теги идентификаторов на имя и добавить тег имени к кнопке отправки