2011-01-30 5 views
0

Я создаю скрипт обновления для формы. Когда пользовательская информация отправляется при регистрации, она отправляется пользователю db со следующими полями: имя пользователя, пароль, полное имя и телефон. Когда пользователь обновляет форму для изменения своего имени, например, поля имени пользователя, прохода, телеполя также являются частью формы обновления. Поэтому, когда пользователь обновляет свой номер телефона # в форме обновления, информация о имени пользователя и информации о пропуске и информация о имени также присутствуют в форме. Проблема в том, что система распознает, что имя пользователя уже выполнено.MYSQL Update Value Recognition

Итак, как я могу обновить свой скрипт таким образом, чтобы измененные значения были подхвачены системой. Или есть лучший способ сделать это?

Код:

  if (!get_magic_quotes_gpc()) { 
      $_POST['username'] = addslashes($_POST['username']); 
     } 
     $idcheck = $_POST['username']; 
     $check = mysql_query("SELECT username FROM users WHERE username = '$username'") 
      or die(mysql_error()); 
     $check2 = mysql_num_rows($check); 


     if ($check2 != 0) { 
     print("username already taken"); 
     die(''); 
      } 

В основном проблема в том, что она признает, что значения уже существуют, но он не понимает, что его инфо же пользователи не какой-то другой пользователь, используя общий идентификатор или имя пользователя ...

+0

Предполагается ли пользователь быть в состоянии изменить свое имя пользователя в форме? Если нет, вам не нужно обновлять его. –

ответ

1

Просто удалите следующий код из сценария обновления:

$idcheck = $_POST['username']; 
$check = mysql_query("SELECT username FROM users WHERE username = '$username'") or die(mysql_error()); 
$check2 = mysql_num_rows($check); 

if ($check2 != 0) { 
    print("username already taken"); 
    die(''); 
} 

И все должно быть хорошо тогда.

Если у вас есть тот же скрипт для регистрации и обновления, я предлагаю вам сделать два разных сценария, так как это лучшая практика.

Бест, Камран

+0

Извините Камран. Вклеил неправильный код. Обновлено сейчас. – AAA

+0

ok, я отредактирую свой ответ с обновленным кодом в уме =) – thesocialgeek

+0

и, кстати, всегда «очистят» данные, отправленные в формах. $ idcheck = $ _POST ['username']; должно быть что-то вроде $ idcheck = mysql_real_escape_string ($ _ POST ['username']); – thesocialgeek

1

Я думаю, что код, который вы размещены, прежде чем был прав, если вы имеете в виду, чтобы проверить, если имя пользователя уже принято в случае, если пользователь решит изменить свое собственное имя, просто запустить этот кусок кода вы отправили сейчас перед оператором UPDATE, который будет работать на всякий случай, если имя пользователя будет в порядке (или позволит ему изменить другие поля, оставив прежнее имя пользователя и повторить предупреждение о уже принятом имени пользователя)

+0

Я запускаю этот код перед оператором обновления. – AAA

+1

Итак, я не могу понять, что не получится. О, и я считаю, что mysql_real_escape_string будет лучше, чем addlsash. –

+0

Что не так, так это то, что когда пользователь решает не менять имя пользователя, это порождает эхо в имени пользователя поле в поле обновления. Поэтому, когда форма отправляется на проверку существующего имени пользователя ... – AAA