验证一个变量不能等于其他变量不起作用

时间:2017-03-24 11:53:14

标签: php

我尝试进行的验证不允许用户在值相同时插入,但每当我尝试正常插入时(每个数据都不同),它就会#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.'">';
        }
}

?>

3 个答案:

答案 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>';
}

试一试。