【问题标题】:How to Insert multiple date entries (Date array data) at once for one client如何为一个客户端一次插入多个日期条目(日期数组数据)
【发布时间】:2021-11-11 07:11:27
【问题描述】:

我需要捕获客户从 HTML 表单一次进行的多个日期访问。 所有其他数据类型均已成功存储,但日期更改为默认的“1970-01-01”。

有没有办法将日期数组转换为从 HTML 表单中挑选的单个日期,以避免默认日期和错误: “未定义索引:01-01-1970”。

我尝试过使用日期数组,但没有成功。

        <?php 
        //Post Variables
        //name="ClientID[]" 1
        //name="ClientID[]" 2
        //$ClientID = array(1,2);
        
        //name="VisitDate[]"  01-01-2021
        //name="VisitDate[]"  01-01-2020
        //$VisitDate=array('01-01-2021','01-01-2022');
        
        $ClientID=$_POST['ClientID'];
        
        $VisitDate=$_POST['VisitDate'];
            foreach ($VisitDate as $k=>$v) {
                    $VisitDate[$k] = date('Y-m-d', strtotime($v));
                }
        
        
        for ($i = 0; $i < count($ClientID); $i++) { 
        
                $ClientID=$ClientID[$i];
                
                $VisitDate=$VisitDate[$i];
                
            }
        
        $query=$con->prepare("insert into records (ClientID,VisitDate) values ('$ClientID','$VisitDate')");
        $result=$query->execute();  
        
        
        ?>

【问题讨论】:

  • 请首先启用正确的 PHP 错误报告,这肯定会在这里告诉你一些事情。

标签: php html mysql post


【解决方案1】:

日期很难管理,因为 MySQL 会检查它们。现在只需将您的数据类型从数据库更改为 varchar 并删除日期转换过程。由于您使用的是日期选择器,因此用户不会以错误的格式输入日期,因为它将在数据库中被识别为 varchar。

<?php 
    //Post Variables
    //name="ClientID[]" 1
    //name="ClientID[]" 2
    //$ClientID = array(1,2);
    
    //name="VisitDate[]"  01-01-2021
    //name="VisitDate[]"  01-01-2020
    //$VisitDate=array('01-01-2021','01-01-2022');
    
    $ClientID=$_POST['ClientID'];
    
    $VisitDate=$_POST['VisitDate'];

   //Deleted the date array conversion
    
    
    for ($i = 0; $i < count($ClientID); $i++) { 
    
            $ClientID=$ClientID[$i];
            
            $VisitDate=$VisitDate[$i];
            
        }
    
    $query=$con->prepare("insert into records (ClientID,VisitDate) values ('$ClientID','$VisitDate')");
    $result=$query->execute();  
    
    
    ?>

这应该可行。

【讨论】:

    【解决方案2】:

    在输入标签内的 html 表单中使用 type="date"。例如,

    <form action="post.php" method="post">
    <label for="date"> Date </label>
    <input name="picDate" type="date">
    <input type="submit" name="submit">
    </form>
    

    【讨论】:

    • HTML 部分没有问题。数据以我想要的方式使用日期选择器。
    猜你喜欢
    • 1970-01-01
    • 2017-08-13
    • 2014-02-12
    • 2020-09-18
    • 2019-11-02
    • 2018-09-20
    • 2010-11-30
    • 2021-12-29
    • 1970-01-01
    相关资源
    最近更新 更多