我有一个网站,你可以上传新闻报道。上传新闻后,您可以对其进行编辑。问题是,当您编辑 DATE 表单时,默认情况下它会自动将其显示为"0000-00-00"。
因此,当我在日期表单上输入"blacklivesmatter"时,它应该显示一个javascript错误,指出"日期应仅以年-月-日格式输入"
以下是我认为错误的代码应该是什么样子的:
echo "<script language='javascript'> alert('Date should be entered with YEAR-MONTH-DAY format only'); window.location='editnews.php'; </script>";
以下是 PHP 页面的代码:
<?php
if(isset($_GET['id']))
{
$id = $_GET['id'];
$query = mysqli_query($con,"select * from news where ID = '$id'");
$re = mysqli_fetch_array($query);
}
?>
<form method="post" action="editnews_action.php">
<h3><b><u>Title:</b><input type="text" name="title" value="<?php echo $re['Title']; ?>"/><input type="hidden" name="id" value="<?php echo $re['ID']; ?>"/></h3>
<h3><b><u>Detail:</b><input type="text" name="desc" value="<?php echo $re['story']; ?>"/></h3>
<h3><b><u>Date:</b><input type="text" name="date" value="<?php echo $re['DATE']; ?>"/></h3>
<center>
<br>
<input type="submit" value="Submit" name="submit">
</form>
以下是操作页面:
<?php require 'connect.php'; ?>
<?php
session_start();
if(isset($_POST['submit'])) {
$id = $_POST['id'];
$title=$_POST['title'];
$date= $_POST['date'];
$story=$_POST['desc'];
$q = mysqli_query($con,"update news set Title = '$title', story = '$story', DATE = '$date' where ID = '$id'");
if($q)
{
header("Location: adminside.php");
}
}
?>
我应该把javascript错误放在哪里?
你有几个选项可以在javascript中验证日期:
1.) 如果无效,new Date("date string")
将返回"无效日期"。您可以检查这一点并根据需要显示错误
function isDateValid(date) {
var theDate = new Date(date);
return theDate;
}
不是最好的选择。 例如,new Date(1)
将返回有效日期。"无效日期"仅在输入类似 new Date('test')
的内容时才会引发
2.) 使用由 bootstrap 或 jquery 或其他库提供的日期选择器。通常,这些日期选择器已经具有日期验证,因此您不必担心。这也为用户提供了更好的选择日期的界面。
在我看来,这是最好的选择。大多数日期选择器还将具有可配置的选项,因此您可以使验证更加灵活,有些甚至具有内置的错误消息,以便该部分也将为您处理
3.) 使用正则表达式针对输入的日期运行。您可以找到许多不同的正则表达式来验证各种不同的格式。要研究的一个网站是 regexlib.com
var dateReg = /^'d{2}([./-])'d{2}'1'd{4}$/
"22-03-1981".match(dateReg) // matches
"22.03-1981".match(dateReg) // does not match
"22.03.1981".match(dateReg) // matches
这是一个不错的选择。
Javascript - 正则表达式验证日期格式
Javascript date regex DD/MM/YYYY
JavaScript中用于日期验证的正则表达式
这样简单的事情就可以工作
了session_start();
if(isset($_POST['submit'])) {
$id = $_POST['id'];
$title=$_POST['title'];
$date= $_POST['date'];
$story=$_POST['desc'];
if (validateDate($date)) {
$q = mysqli_query($con,"update news set Title = '$title', story = '$story', DATE = '$date' where ID = '$id'");
if($q)
{
header("Location: adminside.php");
}
}else{
/*
* show error if date not valid
*/
echo "<script language='javascript'> alert('Date should be entered with YEAR-MONTH-DAY format only'); window.location='editnews.php'; </script>";
}
}
/** 验证日期的功能*/ function validateDate($date, $format = 'Y-m-d') { $d = DateTime::createFromFormat($format, $date); 返回 $d &&$d->格式($format) == $date; }