Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Не работает вывод else

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Александерр
Отправлено: 29 Мая, 2015 - 00:28:52
Post Id


Новичок


Покинул форум
Сообщений всего: 32
Дата рег-ции: Май 2015  


Помог: 0 раз(а)




Пожалуйста помогите else не выводит информацию просто пустота после запроса с неверным логином. А с верным логином все ок выводит.
Вот код:
PHP:
скопировать код в буфер обмена
  1.     if (isset($_POST['login_p'])){
  2.         $parametersp = array(':login' => $_POST['login_p']);
  3.         $sqlp = 'SELECT login,email FROM users WHERE login = :login ';
  4.         $sth = $bd->prepare($sqlp);
  5.         $sth->execute($parametersp);
  6.         while($row = $sth->fetchall(PDO::FETCH_ASSOC))
  7.         foreach ($row as $dataa){
  8.         if($sth->columnCount() > 0)
  9.         {$message="Пользователь c таким логином найден";} else  {$message="Пользователь с таким логином не найден";}
  10.     }
  11.     }
 
 Top
KingStar
Отправлено: 29 Мая, 2015 - 00:35:47
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


Помог: 69 раз(а)




потому что ты делаешь запрос, и есть поле найдено - то оно обрабатывается в цикле while, а потом еще и в foreach, где и выводит соответствующее сообщение

если не найдено - то в while цикла нет, и до foreach ничего не доходит, а следовательно и выводить нечего


-----
То что программа работает, не означает что она написана правильно!
 
 Top
Александерр
Отправлено: 29 Мая, 2015 - 21:06:32
Post Id


Новичок


Покинул форум
Сообщений всего: 32
Дата рег-ции: Май 2015  


Помог: 0 раз(а)




KingStar пишет:
потому что ты делаешь запрос, и есть поле найдено - то оно обрабатывается в цикле while, а потом еще и в foreach, где и выводит соответствующее сообщение

если не найдено - то в while цикла нет, и до foreach ничего не доходит, а следовательно и выводить нечего

убрал while все ровно не хочет выводится else SOS
PHP:
скопировать код в буфер обмена
  1.       if (isset($_POST['login_p'])){
  2.         $parametersp = array(':login' => $_POST['login_p']);
  3.         $sqlp = 'SELECT * FROM users WHERE login = :login ';
  4.         $sth = $bd->prepare($sqlp);
  5.         $sth->execute($parametersp);
  6.         foreach ($sth  as $dataa){
  7.         if($sth->columnCount() >0)
  8.         {$message="Пользователь c таким логином найден";} else
  9.         {$message="Пользователь с таким логином не найден";}
  10.     }
  11.     }
 
 Top
Sail
Отправлено: 30 Мая, 2015 - 11:39:55
Post Id



Участник


Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014  


Помог: 57 раз(а)




Александерр, количество полученных в результате запроса записей набора надо анализировать до цикла обхода этих записей (будь то while или foreach).
(Добавление)
Ну или проверять, что цикл успешно пройден мимо, без захода в его тело...
(Добавление)
Если уж сложно (или вовсе невозможно из-за особенностей реализации) проверить возвращенное функцией "somedbObertka::execute()" значение.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB