【问题标题】:html/PHP - Form POST emptyhtml/PHP - 表单 POST 为空
【发布时间】:2021-12-29 06:25:45
【问题描述】:

我想知道我的错误在哪里。 我一直在寻找关于为什么 $_POST 为空的不同解决方案,但没有人想出它为什么会发生的答案。

我在 HTML 中尝试了以下更改 method="GET" 和 method="POST" - 都不起作用 action="test.php" / action="localhost/test.php" / action="c:\xampp\htdocs\test.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 for each loop。 都空了回来

这就像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();
?>

【问题讨论】:

    标签: php html forms


    【解决方案1】:

    在您的 input 字段中,您缺少 name='' 属性

    【讨论】:

    • 感谢您的帮助......这是解决方案的一部分 - 我必须将 ID 标签更改为 name 并将 name 标签添加到提交按钮
    • 您不需要将id 更改为name.. 如果您需要,您可以在JS 或CSS 中使用id。但是表单中的 POST 需要明确的 name 属性
    【解决方案2】:

    问题 -

    您的表单值不会出现在您的 PHP 中。

    解决方案 -

    • 更新了 if 语句以检查“REQUEST_METHOD”
    • 在表单字段中使用“名称”。你不能依赖 ID。

    示例 -

    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();
    ?>
    

    【讨论】:

    • 我对此进行了更新和测试。它有效。
    • 这确实有效 - 将 ID 标签更改为名称,在 test.php 中填充数组 感谢您的输入 :) 但其他 2 个也是正确的。我也错过了提交时的名称标签
    • 请注意,我更改了 if 以检查请求方法。
    • 是的,我注意到了,但它也适用于 IF.. 但复制了您的解决方案以获得良好的衡量标准 :) 我正在学习如何为工作维护日志编写 HTML 和 php 代码。到目前为止,这是唯一的事情,我无法上班
    【解决方案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>
    

    【讨论】:

    • 感谢您的帮助......这是解决方案的一部分 - 我必须将 ID 标签更改为 name 并将 name 标签添加到提交按钮
    猜你喜欢
    • 2014-02-22
    • 2020-01-03
    • 2017-10-13
    • 1970-01-01
    • 2018-07-02
    • 2017-05-02
    • 2012-04-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多