dazle
@dazle
Хороший электрик, но в душе программист

Редактирование полей пользователя самим пользователем. Не выполняются требуемые условия. Почему?

На сайте есть пункт редактирования своих данных (поменять имя, аватарку и город). Проблема в том что условия которые я ставлю не выполняются в полной мере как я хочу.
Проблема состоит в том что пользователь может ввести имя которое уже есть в бд и ошибку код не пишет почему то.
Я могу оставить свое старое имя без проблем и поменять только город или аватарку, но когда я ввожу имя которое у меня уже зарегистрировано код успешно выполняется и получается у меня на сайте 2 пользователя с одинаковыми именами, хотя я ставил условие:
$result3 = mysqli_query($bd, "SELECT id FROM users WHERE name='$name'");
 $myrow = mysqli_fetch_array($result3);
 if (!empty($myrow['id'])) {
 exit ("Извините, введённое вами имя уже зарегистрировано. Введите другое имя. <a href=../redact.php>Назад</a>");
 }

Код простой смотрите комменты поймете что я хочу. Вот весь код:
$name = trim($_POST['name']);
  $city = $_POST['city'];
   $avatar = trim($_POST['avatar']);

   $name= stripslashes($name);
 $name= htmlspecialchars($name);
   $avatar= stripslashes($avatar);
 $avatar= htmlspecialchars($avatar); //обработали поля заполненные пользователем

include ("bd.php");
 $id=$_SESSION['id'];
 $result = mysqli_query($bd, "SELECT id FROM users WHERE id='$id'"); 
 $row = mysqli_fetch_array($result);
 $ty=$row['name'];   //нахожу имя пользователя по его id в сессии который совершает редактирование

 if($ty=$name)  //если его имя схоже с новым именем которое он ввел заносим все в бд (сделано для того чтобы допустим пользователь захотел сменить только аватарку и город, а ник оставить прежним).
 {
 $result2 = mysqli_query($bd, "UPDATE `users` SET `name`='$name' , `avatar`='$avatar' , `city`='$city' WHERE id=$id "); 
 }
 else //иначе проверяем нет ли похожего имени чтобы не было двойников (людей с одинаковыми никами) если нет то заносим в бд новое имя аватар и город
 {
$result3 = mysqli_query($bd, "SELECT id FROM users WHERE name='$name'");
 $myrow = mysqli_fetch_array($result3);
 if (!empty($myrow['id'])) {
 exit ("Извините, введённое вами имя уже зарегистрировано. Введите другое имя. <a href=../redact.php>Назад</a>");
 }
 $result2 = mysqli_query($bd, "UPDATE `users` SET `name`='$name' , `avatar`='$avatar' , `city`='$city' WHERE id=$id "); 
 }
 
 if ($result2=='TRUE')
 {
 echo 'Вы успешно cовершили редактирование! <a href="../index.php">На Главную</a>';
}
 else {
 echo 'Ошибка! Вы не зарегистрированы. <a href="../index.php">На Главную</a>';
 }
  • Вопрос задан
  • 73 просмотра
Решения вопроса 1
evgen_dev
@evgen_dev
Веб-разработчик
if($ty=$name) {
Тут вы присваиваете значение, а не сравниваете.

Нужно сравнивать так:
if($ty === $name) {

Остальное оставлю без комментариев.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы