【问题标题】:Date Time picker does not save selected date to the database日期时间选择器不会将所选日期保存到数据库
【发布时间】:2020-06-13 17:58:00
【问题描述】:

在我的 laravel 项目中,我想将 Datepicker 选择的日期保存到数据库中。但我的代码将日期保存为“01-01-1970”,而不是日期选择器中的选定日期。 我试图通过查看许多代码来修复它。但没有运气。

这里是控制器存储功能。

 public function store(Request $request)
        {
            $qualification = new qualification();

            $qualification->from = date("d-m-Y", strtotime($request->from));
            $qualification->to = date("d-m-Y", strtotime($request->to));

            $qualification->save();

            return redirect()->route('qualification.index')->with('success','Data Added');
        }

这是blade.php

 <label for="date">From:</label><input type="text" name="date" value="" />
 <label for="date">To:</label><input type="text" name="date" value="" />

<script>
$(function() {
  $('input[name="date"]').daterangepicker({
    singleDatePicker: true,
    showDropdowns: true,
    minYear: 1995,
    maxYear: parseInt(moment().format('YYYY'),10)
  }, function(start, end, label) {
    var years = moment().diff(start, 'years');
  });
});
</script>

请帮我将选定的日期保存到数据库中。感谢您的帮助。

【问题讨论】:

    标签: php laravel datepicker


    【解决方案1】:

    您试图在控制器中获取 $request->from 和 $request->to 的值,但在 HTML 中,两个文本字段都被命名为日期。

    应该是这样的

    HTML:

     <label for="date">From:</label><input type="text" class="date" name="from" value="" />
     <label for="date">To:</label><input type="text" class="date" name="to" value="" />
    

    在js中

    <script>
    $(function() {
      $('.date').daterangepicker({
        singleDatePicker: true,
        showDropdowns: true,
        minYear: 1995,
        maxYear: parseInt(moment().format('YYYY'),10)
      }, function(start, end, label) {
        var years = moment().diff(start, 'years');
      });
    });
    </script>
    

    【讨论】:

    • 请仔细阅读答案,我在两个输入上都添加了一个类属性,并在js代码中更改了选择器。
    • 在输入和 js 中添加 class="date" 使其成为 $('.date').daterangepicker({...}) from $('input[name="date"]').daterangepicker({..})
    • 如果用户没有从日期选择器中选择日期,我想将值作为 NULL 传递给数据库。所以我在上面的脚本中添加了autoUpdateInput: false,function(chosen_date) { $('.date').val(chosen_date.format('YYYY-MM-DD')); }。如果用户没有选择日期,它会再次将日期保存为 01-01-1970,而不是将该字段保持为 NULL。有什么想法可以解决吗?谢谢
    • if($request-&gt;has('from')){ $qualification-&gt;from = date("d-m-Y", strtotime($request-&gt;from)); } else { $qualification-&gt;from = NULL; } if($request-&gt;has('to')){ $qualification-&gt;from = date("d-m-Y", strtotime($request-&gt;to)); } else { $qualification-&gt;from = NULL; }
    • 试试上面的代码,如果它适合你,请给答案投票
    【解决方案2】:

    你可以这样做

    <script>
        $(function() {
            $('input[name="date"]').daterangepicker({
                singleDatePicker:   true,
                showDropdowns:      true,
                minYear:            1901,
                maxYear:            parseInt(moment().format('YYYY'),10),
                locale: {
                    format:         'DD-MM-YYYY'
                }        
            }, function(start, end, label) {
                var years = moment().diff(start, 'years');
                //alert("You are " + years + " years old!");
            });
        });
    </script>
    

    【讨论】:

      猜你喜欢
      • 2014-07-09
      • 2019-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-09
      相关资源
      最近更新 更多