2015-12-11 3 views
0

Почему это мое состояние не работает? Партилист не должен дублироваться. Я имею в виду, в картине, студент был зарегистрирован в том же partylist с той же позицией, и это неправильно Here is the example of my provblemПочему мое состояние не работает?

Я хочу, чтобы мое состояние будет сообщение об ошибке, что только один partylist можно зарегистрировать

Здесь мой код:

<?php 
if (isset($_POST['save'])) { 
    $candid = mysql_real_escape_string($_POST['candid']); 
    $idno = mysql_real_escape_string($_POST['idno']); 

    $fileName = $_FILES['image']['name']; 
    $partyid = mysql_real_escape_string($_POST['partyid']); 
    $posid =mysql_real_escape_string($_POST['posid']); 
    $syear= mysql_real_escape_string($_POST['syearid']); 
    $votes = 0; 

    $sql3 = mysql_query("SELECT * FROM candidates WHERE idno = '$idno' AND syearid = '$syear' ")or die(mysql_error()); 
    $count3 = mysql_num_rows($sql3); 




    $sql_count1 = "SELECT * FROM candidates WHERE syearid='$syear' AND partyid = '$partyid'"; 
    $result2 = mysql_query($sql_count1) or die(mysql_error()); 
    $numb = mysql_num_rows($result2); 


    $sql1 = mysql_query("SELECT * FROM candidates,school_year where candidates.syearid = school_year.syearid AND school_year.from_year like $YearNow")or die(mysql_error()); 
    $count1 = mysql_num_rows($sql1); 



    if (($count3 >= 1) AND ($count1 >= 1) AND ($numb > 1)) { 
    echo '<br><br><center><h2>Sorry that Candidates has already registered and cannot be duplicate</h2></center>'; 
    } 
    else { 
     $sql = "INSERT INTO candidates (candid,image,partyid,posid,syearid,idno) VALUES ('$candid','$fileName','$partyid','$posid','$syear','$idno')"; 
     $result = mysql_query($sql) or die(mysql_error()); 


    echo "<script type='text/javascript'>\n"; 
    echo "alert('Successfully Added.');\n"; 
    echo "window.location = 'addcandidates.php';"; 
    echo "</script>"; 

    } 
} 
?> 
+0

Sql имеет встроенную функцию COUNT. Использование может помочь производительности. Пример запроса: 'SELECT COUNT (*) FROM кандидатов – Terminus

ответ

1

у вас есть условие, которое проверяет, если все детали кандидаты одинаковы:
if (($count3 >= 1) AND ($count1 >= 1) AND ($numb > 1))
Во-первых, он проверяет, является ли $numb больше 1, но вам нужен только один экземпляр участника, поэтому вы должны проверить, $numb = 1
Однако, если только сторона совпадает, то вышеуказанный оператор не вернет true, и пользователь сможет регистр. Для этого Вы должны также иметь заявление, в котором он проверяет ТОЛЬКО($numb > 1)

EDIT: Я хотел бы включить это заявление:

if ($numb == 1) { 
    /* party already taken */ 
} 
+0

вот мой sql для этого $ sql_count1 =" SELECT * FROM кандидатов WHERE syearid = '$ syear' AND partyid = '$ partyid' "; $ result2 = mysql_query ($ sql_count1) или die (mysql_error()); $ numb = mysql_num_rows ($ result2); –

+0

Я видел, что количество строк для этого запроса хранится в '$ numb', если я не ошибаюсь. Мой первоначальный ответ по-прежнему сохраняется. –

+0

Я изменил свой ответ, это должно решить его. –

Смежные вопросы