我在html中创建了一个表单并使用If条件在php中验证表单数据,当数据无效时,错误/消息显示在Javascript Alert框中。假设这是以下形式:
<form method=post>
<table>
<tr>
<td> Username: </td>
<td> <input type="text" name="username"/> </td>
</tr>
<tr>
<td> User Password: </td>
<td> <input type="password" name="userpass"/> </td>
</tr>
<tr>
<td> Registration ID: </td>
<td> <input type="text" name="std_id"/> </td>
</tr>
<tr>
<td> Student's Full Name: </td>
<td> <input type='text' name='std_name'/> </td>
</tr>
<tr>
<td> Father's Name: </td>
<td> <input type="text" name="fname"/> </td>
</tr>
<tr>
<td> Date of Birth: </td>
<td> <input type="date" name="dob"/> </td>
</tr>
<tr>
<td> Admission Date: </td>
<td> <input type="date" name="adm_date"/> </td>
</tr>
<tr>
<td> Mobile No: </td>
<td> <input type="text" name="contact" id="text" style="width:160px;" /> </td>
</tr>
</table>
<input type="submit" name="insert" value="Submit"/>
</form>
&安培;这是PHP代码,我检查表单数据进行验证:
<?php
require_once('connection.php');
if (isset ($_POST['insert']))
{
$valid = true;
if( (empty($_POST['std_name'])) )
{
echo "<script> alert('Please Enter Student Name!') </script>";
$valid = false;
}
$cellNo = $_POST['contact'];
if (!is_numeric ($_POST['contact']) || (strlen($cellNo) != 11) )
{
echo "<script> alert ('Mobile Number is not valid') </script>";
$valid = false;
}
$current_date = date('Y/m/d');
$dob = $_POST['dob'];
if( strtotime ($_POST['dob']) >= strtotime($current_date) || ($dob > date("Y/m/d", mktime(0, 0, 0, date('m'), date('d'), date('Y') - 4) )) )
{
echo "<script> alert('Invalid date of birth') </script>";
$valid = false;
}
$adm_date = $_POST['adm_date'];
if( $adm_date < date("Y/m/d", mktime(0, 0, 0, date('m'), date('d'), date('Y') - 1)) )
{
echo "<script> alert('Admission/Registration Date is too old!') </script>";
$valid = false;
}
if ($valid)
{
mysql_query("INSERT into ........values .......");
echo "<script> alert('1 Record inserted!') </script>";
}
}
?>
现在我的问题是,如果用户没有输入名称&amp;输入无效的DOB或注册日期,它将显示警告框,显示其中三个的消息,例如:
在第一个警告框中(“请输入学生姓名”)
在第二个警告框中(“出生日期无效”)
在第3个警告框中(“入场/登记日期太旧”)
我想要的是,当它弹出第一个警告框时,它必须停止显示其他警告框,以便在php中如何实现。我不熟悉jquery和Ajax。所以请帮忙
我希望你有我想做的事。
答案 0 :(得分:0)
将消息保存在变量
中$message = null;
$current_date = date('Y/m/d');
$dob = $_POST['dob'];
if( strtotime ($_POST['dob']) >= strtotime($current_date) || ($dob > date("Y/m/d", mktime(0, 0, 0, date('m'), date('d'), date('Y') - 4) )) )
{
$message = "<script> alert('Invalid date of birth') </script>";
$valid = false;
}
$adm_date = $_POST['adm_date'];
if( $adm_date < date("Y/m/d", mktime(0, 0, 0, date('m'), date('d'), date('Y') - 1)) )
{
$message = "<script> alert('Admission/Registration Date is too old!') </script>";
$valid = false;
}
if ($valid)
{
mysql_query("INSERT into ........values .......");
$message = "<script> alert('1 Record inserted!') </script>";
}
if ( $message ) {
echo $message; // and alert will work here for the last message only..
}
答案 1 :(得分:0)
尝试使用if else
if (isset ($_POST['insert']))
{
$valid = true;
$cellNo = $_POST['contact'];
$current_date = date('Y/m/d');
$dob = $_POST['dob'];
$adm_date = $_POST['adm_date'];
if( (empty($_POST['std_name'])) ){
echo "<script> alert('Please Enter Student Name!') </script>";
$valid = false;
} elseif (!is_numeric ($_POST['contact']) || (strlen($cellNo) != 11) ){
echo "<script> alert ('Mobile Number is not valid') </script>";
$valid = false;
} elseif( strtotime ($_POST['dob']) >= strtotime($current_date) || ($dob > date("Y/m/d", mktime(0, 0, 0, date('m'), date('d'), date('Y') - 4) )) ){
echo "<script> alert('Invalid date of birth') </script>";
$valid = false;
}else{
if( $adm_date < date("Y/m/d", mktime(0, 0, 0, date('m'), date('d'), date('Y') - 1)) ){
echo "<script> alert('Admission/Registration Date is too old!') </script>";
$valid = false;
}
}
if ($valid){
mysql_query("INSERT into ........values .......");
echo "<script> alert('1 Record inserted!') </script>";
}
}
答案 2 :(得分:0)
尝试为$valid
提供不同的值,并根据
if (isset ($_POST['insert']))
{
$valid = 0;
$cellNo = $_POST['contact'];
$current_date = date('Y/m/d');
$dob = $_POST['dob'];
$adm_date = $_POST['adm_date'];
if( (empty($_POST['std_name'])) )
{
$valid = 1;
}
else if (!is_numeric ($_POST['contact']) || (strlen($cellNo) != 11) )
{
$valid = 2;
}
else if( strtotime ($_POST['dob']) >= strtotime($current_date) || ($dob > date("Y/m/d", mktime(0, 0, 0, date('m'), date('d'), date('Y') - 4) )) )
{
$valid = 3;
}
else if( $adm_date < date("Y/m/d", mktime(0, 0, 0, date('m'), date('d'), date('Y') - 1)) )
{
$valid = 4;
}
if($valid == 1 )
{
echo "<script> alert('Please Enter Student Name!') </script>";
}
else if($valid == 2 )
{
echo "<script> alert ('Mobile Number is not valid') </script>";
}
else if($valid ==3 )
{
echo "<script> alert('Invalid date of birth') </script>";
}
else if($valid == 4 )
{
echo "<script> alert('Admission/Registration Date is too old!') </script>";
}
else if ($valid == 0 )
{
mysql_query("INSERT into ........values .......");
echo "<script> alert('1 Record inserted!') </script>";
}
}
但我建议你不要这样做验证。而不是使用javascript或Jquery进行验证
修改强>
在jquery验证表单后自动转移到php代码部分。所以新的php编码看起来像
<?php
require_once('connection.php');
if (isset ($_POST['insert']))
{
mysql_query("INSERT into ........values .......");
echo "<script> alert('1 Record inserted!') </script>";
}
?>
答案 3 :(得分:0)
试试这个例子:
<?php
function do_alert($msg)
{
echo '<script type="text/javascript">alert("' . $msg . '"); </script>';
}
?>
<html><head><title></title></head>
<body>
<?php
do_alert("Hello");
?>
</body>
</html>