我有两个页面,其中一个php指令与查询一起包含在其中,另一个页面在操作中会调用第一页的形式。
我有一个带有日期选择器的字段,该字段称为data_scadenza
,在第一页上,我对该字段进行了评估:
$data_scadenza = date('Y-m-d',strtotime($_POST['data_scadenza']));
查询:
$updateSQL = sprintf("UPDATE Cassetto_documentale SET nome_file_cassetto=%s, data_scadenza_cassetto=%s, data_revisione=%s, ok_doc_direttore=%s, id_caricato_pdf=%s, data_caricato_pdf=%s, ID_caricato_da_cassetto=%s WHERE ID_doc_casstto=%s",
GetSQLValueString($data_scadenza, "date"),
GetSQLValueString($data_revisione, "date"),
GetSQLValueString($ok_direttore, "text"),
GetSQLValueString($_COOKIE['cod_op'], "int"),
GetSQLValueString($d_oggi, "date"),
GetSQLValueString($ID_utente_convalida, "int"),
GetSQLValueString($id_doc, "int"));
然后执行爆炸,并实现表单输入:
$d_scad = $row_doc_cassetto['data_scadenza_cassetto'];
<?php
if ($d_scad == ""){
//$data_scadenza = date("d/m/Y");
}else{
$d_scad = explode('-', $d_scad);
$yy_scad = $d_scad[0];
$mm_scad = $d_scad[1];
$gg_scad = $d_scad[2];
$d_scad = $gg_scad."/".$mm_scad."/".$yy_scad;
}
?>
if ($d_scad == ""){
$data_scadenza = date("d/m/Y");
}else{
$d_scad = $d_scad;
}
?>
<input type="text" name="data_scadenza" class="form-control" id="datetimepicker1" pattern="(0[1-9]|1[0-9]|2[0-9]|3[01])[- /.](0[1-9]|1[012])[- /.][0-9]{4}" value="<?php echo $d_scad;?>" >
问题如下:如果我使用日期选择器选择日期,则会得到一个值01-01-1970,如果我手动将其插入,则所有记录都会被完美记录,我希望选择日期选择器的日期,以便可以在数据库中正确注册?
答案 0 :(得分:2)
如果我没看错你的问题,这就是你要做什么:
$_POST['data_scadenza'] = "15/04/2019";
echo $data_scadenza = date('Y-m-d',strtotime($_POST['data_scadenza']));
//1970-01-01
这是因为您不能在strtotime中使用dd / mm / yyyy格式。
将输入更改为类似
$_POST['data_scadenza'] = "15-04-2019";
echo $data_scadenza = date('Y-m-d',strtotime($_POST['data_scadenza']));
使用str_replace可以轻松完成。
$_POST['data_scadenza'] = "15/04/2019";
echo $data_scadenza = date('Y-m-d',strtotime(str_replace("/", "-", $_POST['data_scadenza'])));
或使用date_create_from_format()解析输入日期。