2012-04-12 7 views
-2

Это мой код:PHP Если заявления не работает

if ($username == "" || $pass == "" || $emailad==""|| $fname=="") 
{ 
    $msg = "Not all fields were entered"; 
}else 
{ 
    if(uniqueUser($username,$emailad)) 
    { 
     $msg="The username or email already exists"; 
    }else 
    { 
     insertIntoDB($fname,$emailad,$username,$pass); 
     $msg="The user has been inserted"; 

    } 

} 
    echo $msg; 

это будет использоваться для ввода нового пользователя в мой дб. Однако моя проблема заключается в том, что если я добавлю в нее не существующего пользователя, программа сообщит мне, что имя пользователя уже существует, но оно будет вставлять новую учетную запись, если ее нет в базе данных. Поэтому программа работает нормально с точки зрения вставки в зависимости от того, существует ли пользователь в базе данных или нет. Проблема заключается в отображении сообщений для меня, потому что я никогда не узнаю, находится ли пользователь в базе данных или нет, так как независимо от того, как я переписываю этот фрагмент кода, не существующая вставка пользователя приведет к отображению неправильного сообщения. Это связано с тем, что код запускает операторы if, вставляет нового пользователя ... и снова запускает отображение сообщения, которое оно уже существует. Может ли кто-нибудь объяснить, почему это происходит?

Уникальная функция пользователя:

function uniqueUser($usern,$eml) 
{ 
$query = "SELECT S.username,S.email FROM tbl_user S WHERE S.username='$usern' OR  S.email='$eml'"; 
return mysql_num_rows(queryMysql($query)); 
} 
+0

почему этот код вызывается дважды тогда? –

+0

Ваш скрипт вызывается дважды - иногда это происходит из-за перезаписи URL, выполняемой веб-сервером. Проверьте свои веб-журналы, чтобы узнать, есть ли у вас два запроса для каждого ожидаемого. –

+0

Не могли бы вы сделать что-то не так с функцией 'uniqueUser'? – hndr

ответ

1

Предположительно вы хотите повторить сообщение? Добавить echo до $msg в заявлении if.

if(uniqueUser($username,$emailad)) 
{ 
    echo $msg="The username or email already exists"; 
}else 
{ 
    insertIntoDB($fname,$emailad,$username,$pass); 
    $msg="The user has been inserted"; 
    echo $msg; 
} 

Если пользователь существует, выводится сообщение «Имя пользователя или почта уже существует». Если пользователь не существует, он будет вставлен и выведено сообщение «Пользователь вставлен».

+0

просто любопытно, почему бы вам назначить строку переменной, если вы могли бы просто отследить ее напрямую? – hndr

+0

Я сделал это, потому что я хотел повторить его в конце всего оператора if. – user1329178

+0

@ user1329178, на самом деле, я спрашивал майкла, но в вашем случае, если это то, что вы пытаетесь сделать, не должно ли выходить эхо-заявление снаружи? , а также, прочитайте мой комментарий к своему исходному вопросу, а также, – hndr

0

Heres алгоритм, который я могу предложить:

  1. Проверьте поля пусты
  2. Проверьте, если пользователь уже существует в базе данных (в данном случае вам необходимо выбрать базу для конкретной области .., например, поле электронной почты или поле имени пользователя
  3. Success, вставить данные в базу данных, если пользователь оленья кожа существует

Так вот код:

<?php 

/** 
* @author MESMERiZE 
* @copyright 2012 
*/ 

if (empty($username) || empty($pass) || empty($pass) || empty($fname)) 
{ 
     $msg = "Not all fields were entered"; 
}else 
{ 
    // FALSE if exists TRUE if doesnt exist 
    if(uniqueUser($username,$emailad) == FALSE) 
    { 
     $msg="The username or email already exists"; 

    }else 
    { 
     insertIntoDB($fname,$emailad,$username,$pass); 
     $msg="The user has been inserted"; 
     echo $msg; 
    } 

} 

?> 

Измените функцию uniqueUser на:

function userExists($usern, $eml) 
{ 
    $query = 'SELECT * FROM tbl_user S WHERE S.username="' . $usern . 
     '" OR S.email="' . $eml . '"'; 
    $q = mysql_query($query); 
    if (mysql_num_rows($q) > 0) { 
     return false; 
    } else { 
     return true; 
    } 
} 
+0

Я дам, что бег теперь, вернется к вам через минуту. Благодарим за помощь. – user1329178

+0

. Ваш приветствуем, сообщите мне, если это сработает. Также любезно передайте код для функции uniqueUser, чтобы мы могли видеть проблему, стоящую за ней. – johndavedecano

+0

в верхнем посте :) – user1329178

1

TRY это

if ($username == "" || $pass == "" || $emailad==""|| $fname=="") 
{ 
    $msg = "Not all fields were entered"; 
} 
else if(uniqueUser($username,$emailad)) 
{ 
    $msg="The username or email already exists"; 
} 
else 
{ 
    insertIntoDB($fname,$emailad,$username,$pass); 
    $msg="The user has been inserted"; 
} 
echo $msg; 
+0

Прошу прощения за хаос эхо-сообщения внутри, исходное сообщение было изменено – user1329178

+0

Вы пробовали код, который я разместил? –

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