我尝试进行的验证不允许用户在值相同时插入,但每当我尝试正常插入时(每个数据都不同),它就会#39 ;不插入。
这是我的代码,问题在于if和else if。插入是在没有ifs的情况下工作但是我需要进行验证,当值相同时不会让我插入。
<?php
$url='Settings.php';
if(isset($_POST['submitanswertype'])) {
$radio1 = $_POST['radio1'];
$radio2 = $_POST['radio2'];
$radio3 = $_POST['radio3'];
$radio4 = $_POST['radio4'];
$radio5 = $_POST['radio5'];
$radio6 = $_POST['radio6'];
$radio7 = $_POST['radio7'];
$radio8 = $_POST['radio8'];
$radio9 = $_POST['radio9'];
$radio10 = $_POST['radio10'];
$answerype = $_POST['answertype'];
$answer = new CategoryDAO();
if($radio1 == $radio2 || $radio1 == $radio3 || $radio1 == $radio4 || $radio1 == $radio5 || $radio1 == $radio6 || $radio1 == $radio7 || $radio1 == $radio8 || $radio1 == $radio9 || $radio1 == $radio10)
{
echo '<script language="javascript">';
echo 'alert("Cannot insert duplicate option name")';
echo '</script>';
}
else if($radio2 == $radio1 || $radio2 == $radio3 || $radio2 == $radio4 || $radio2 == $radio5 || $radio2 == $radio6 || $radio2 == $radio7 || $radio2 == $radio8 || $radio2 == $radio9 || $radio2 == $radio10)
{
echo '<script language="javascript">';
echo 'alert("Cannot insert duplicate option name")';
echo '</script>';
}
else if($radio3 == $radio1 || $radio3 == $radio2 || $radio3 == $radio4 || $radio3 == $radio5 || $radio3 == $radio6 || $radio3 == $radio7 || $radio3 == $radio8 || $radio3 == $radio9 || $radio3 == $radio10)
{
echo '<script language="javascript">';
echo 'alert("Cannot insert duplicate option name")';
echo '</script>';
}
else if($radio4 == $radio1 || $radio4 == $radio2 || $radio4 == $radio3 || $radio4 == $radio5 || $radio4 == $radio6 || $radio4 == $radio7 || $radio4 == $radio8 || $radio4 == $radio9 || $radio4 == $radio10)
{
echo '<script language="javascript">';
echo 'alert("Cannot insert duplicate option name")';
echo '</script>';
}
else if($radio5 == $radio1 || $radio5 == $radio2 || $radio5 == $radio3 || $radio5 == $radio4 || $radio5 == $radio6 || $radio5== $radio7 || $radio5 == $radio8 || $radio5 == $radio9 || $radio5 == $radio10)
{
echo '<script language="javascript">';
echo 'alert("Cannot insert duplicate option name")';
echo '</script>';
}
else if($radio6 == $radio1 || $radio6 == $radio2 || $radio6 == $radio3 || $radio6 == $radio4 || $radio6 == $radio5 || $radio6 == $radio7 || $radio6 == $radio8 || $radio6 == $radio9 || $radio6 == $radio10)
{
echo '<script language="javascript">';
echo 'alert("Cannot insert duplicate option name")';
echo '</script>';
}
else if($radio7 == $radio1 || $radio7 == $radio2 || $radio7 == $radio3 || $radio7 == $radio4 || $radio7 == $radio5 || $radio7 == $radio6 || $radio7 == $radio8 || $radio7 == $radio9 || $radio7 == $radio10)
{
echo '<script language="javascript">';
echo 'alert("Cannot insert duplicate option name")';
echo '</script>';
}
else if($radio8 == $radio1 || $radio8 == $radio2 || $radio8 == $radio3 || $radio8 == $radio4 || $radio8 == $radio5 || $radio8 == $radio6 || $radio8 == $radio7 || $radio8 == $radio9 || $radio8 == $radio10)
{
echo '<script language="javascript">';
echo 'alert("Cannot insert duplicate option name")';
echo '</script>';
}
else if($radio9 == $radio1 || $radio9 == $radio2 || $radio9 == $radio3 || $radio9 == $radio4 || $radio9 == $radio5 || $radio9 == $radio6 || $radio9 == $radio7 || $radio9 == $radio8 || $radio9 == $radio10)
{
echo '<script language="javascript">';
echo 'alert("Cannot insert duplicate option name")';
echo '</script>';
}
else if($radio10 == $radio1 || $radio10 == $radio2 || $radio10 == $radio3 || $radio10 == $radio4 || $radio10 == $radio5 || $radio10 == $radio6 || $radio10 == $radio7 || $radio10 == $radio8 || $radio10 == $radio9)
{
echo '<script language="javascript">';
echo 'alert("Cannot insert duplicate option name")';
echo '</script>';
}
else{
//echo "this line waas called ". $_SESSION['catid'] . "vALUE". $_POST['submitsubcategory'];
$answer->AddAnswerType( $_POST['answertype'], $radio1, $radio2, $radio3, $radio4, $radio5, $radio6, $radio7, $radio8, $radio9, $radio10); // adds the subcategory to the 'category' table
echo '<META HTTP-EQUIV=REFRESH CONTENT="0; '.$url.'">';
}
}
?>
答案 0 :(得分:7)
正如您所注意到的,您的检查方式会导致大量代码。很难维护,我们任何人都无法排除故障。
如果在表单中使用数组,则可以使它更容易(也可以调试...):
<input type="radio" name="radio[]" value="some_value">
^^ Now radio is an array.
现在,您将在$_POST['radio']
中拥有一个数组,并且检查重复值非常简单:
if (count($_POST['radio']) !== count(array_unique($_POST['radio']))) {
// duplicate values
}
答案 1 :(得分:1)
你可以像这样更短的方式做到这一点
<?php
$url='Settings.php';
if(isset($_POST['submitanswertype'])) {
$radio1 = $_POST['radio1'];
$radio2 = $_POST['radio2'];
$radio3 = $_POST['radio3'];
$radio4 = $_POST['radio4'];
$radio5 = $_POST['radio5'];
$radio6 = $_POST['radio6'];
$radio7 = $_POST['radio7'];
$radio8 = $_POST['radio8'];
$radio9 = $_POST['radio9'];
$radio10 = $_POST['radio10'];
$answerype = $_POST['answertype'];
$narray = array_unique($_POST);
$answer = new CategoryDAO();
if(count($_POST)!=count($narray))
{
echo '<script language="javascript">';
echo 'alert("Cannot insert duplicate option name")';
echo '</script>';
}else{
//echo "this line waas called ". $_SESSION['catid'] . "vALUE". $_POST['submitsubcategory'];
$answer->AddAnswerType( $_POST['answertype'], $radio1, $radio2, $radio3, $radio4, $radio5, $radio6, $radio7, $radio8, $radio9, $radio10); // adds the subcategory to the 'category' table
echo '<META HTTP-EQUIV=REFRESH CONTENT="0; '.$url.'">';
}
} ?>
答案 2 :(得分:-1)
这是您的解决方案。
语法错误。
php elseif 一起不单独。
elseif($radio2 == $radio1 || $radio2 == $radio3 || $radio2 == $radio4 || $radio2 == $radio5 || $radio2 == $radio6 || $radio2 == $radio7 || $radio2 == $radio8 || $radio2 == $radio9 || $radio2 == $radio10)
{
echo '<script language="javascript">';
echo 'alert("Cannot insert duplicate option name")';
echo '</script>';
}
试一试。