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 :: ООП и MVC (не могу передать данные из Модели в Контроллер)

 PHP.SU

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


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

> Без описания
Yan9
Отправлено: 09 Октября, 2015 - 18:25:30
Post Id


Новичок


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


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




Добрый день!
Есть три файла:
index.php (View)
signup.php (Controller)
classsignlog.php (Model)
Делаю элементарную регистрацию, но с этим паттерном первый раз.
Я вначале сделал в Контроллере проверку, но она не работала, потом решил просто вывести строку с уже введенным логином из БД, но не могу это сделать через Контроллер.
P.S. Есть еще класс DB, который находит в файле classcreatedb.php, там я просто подключаюсь к БД с помощью метода connect(), который вызываю в Модели и там же есть метод, который создает таблицу.
P.P.S Если в методе signcheck() Модели написать print_r($row), то строка из БД прекрасно выводится, но эти данные почему-то не могу передать в Контроллер, чтобы там их обработать.
Спасибо за помощь!

VIEW:
CODE (htmlphp):
скопировать код в буфер обмена
  1. ...
  2. <body>
  3.         <?php
  4.            include_once('signup.php');
  5.            if(isset($_REQUEST['send'])){
  6.                $name=htmlspecialchars(trim($_REQUEST['name']));
  7.                $password=htmlspecialchars(trim($_REQUEST['password']));
  8.                $g=new Controller($name, $password);
  9.                $g->signhandler();
  10.            }else{
  11.        ?>
  12.  
  13.         <form action="index.php" method="post">
  14.             <table>
  15.                 <tr>
  16.                     <td><label for="name">Name: </label></td>
  17.                     <td><input type="text" name="name" id="name"></td>
  18.                 </tr>
  19.                 <tr>
  20.                     <td><label for="pass">Password: </label></td>
  21.                     <td><input type="password" name="password" id="pass"></td>
  22.                 </tr>
  23.                 <tr>
  24.                     <td></td>
  25.                     <td><input type="submit" name="send"></td>
  26.                 </tr>
  27.             </table>
  28.         </form>
  29.  
  30.         <?php
  31.            }
  32.        ?>
  33. </body>
  34. ...


CONTROLLER:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2.  
  3. include_once('classsignlog.php');
  4.  
  5. class Controller
  6. {
  7.    private $name;
  8.    private $password;
  9.  
  10.    function __construct ($name, $password){
  11.        $this->name=$name;
  12.        $this->password=$password;
  13.    }
  14.  
  15.    function signhandler(){
  16.        $x=new User($this->name, $this->password);
  17.        $x->signcheck();
  18.        global $row;
  19.        print_r($row);
  20.    }
  21. }
  22. ?>


MODEL:
CODE (htmlphp):
скопировать код в буфер обмена
  1. include_once('classcreatedb.php');
  2.  
  3. class User extends DB
  4. {
  5.     public $name;
  6.     public $password;
  7.  
  8.     function __construct ($name, $password){
  9.         $this->name=$name;
  10.         $this->password=$password;
  11.     }
  12.  
  13.     function signcheck(){
  14.         $this->connect();
  15.         $sel=mysql_query("SELECT * FROM user WHERE name='$this->name'") ;
  16.         $row=mysql_fetch_array($sel,MYSQL_NUM);
  17.     }
  18. }
  19. ?>
 
 Top
andrewkard
Отправлено: 09 Октября, 2015 - 18:33:41
Post Id


Участник


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


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




PHP:
скопировать код в буфер обмена
  1.  
  2. function signcheck(){
  3.         $this->connect();
  4.         $sel=mysql_query("SELECT * FROM user WHERE name='$this->name'") ;
  5.         $row=mysql_fetch_array($sel,MYSQL_NUM);
  6.         return $row;
  7.     }
  8.  


PHP:
скопировать код в буфер обмена
  1.  
  2.    function signhandler(){
  3.        $x=new User($this->name, $this->password);
  4.        $x->signcheck();
  5.        print_r($x);
  6.    }
  7.  
 
 Top
Yan9
Отправлено: 09 Октября, 2015 - 18:40:27
Post Id


Новичок


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


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




andrewkard пишет:
PHP:
скопировать код в буфер обмена
  1.  
  2. function signcheck(){
  3.         $this->connect();
  4.         $sel=mysql_query("SELECT * FROM user WHERE name='$this->name'") ;
  5.         $row=mysql_fetch_array($sel,MYSQL_NUM);
  6.         return $row;
  7.     }
  8.  


PHP:
скопировать код в буфер обмена
  1.  
  2.    function signhandler(){
  3.        $x=new User($this->name, $this->password);
  4.        $x->signcheck();
  5.        print_r($x);
  6.    }
  7.  


Спасибо большое! Все работает, еще и неверно выводил метод)
Объясните, пожалуйста, зачем в модели нужен return, с вызовом метода очевидно где ошибка, а вот с return не понял)
 
 Top
andrewkard
Отправлено: 09 Октября, 2015 - 18:52:15
Post Id


Участник


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


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




Yan9 пишет:
с вызовом метода очевидно где ошибка

по моему нет ошибки тут
Yan9 пишет:
зачем в модели нужен return

возврат значения, почитайте про функции
 
 Top
Viper
Отправлено: 09 Октября, 2015 - 18:57:12
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


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




Yan9 пишет:
Объясните, пожалуйста, зачем в модели нужен return, с вызовом метода очевидно где ошибка, а вот с return не понял)

http://php.net/manual/en/function.return.php
http://php.net/manual/en/functio...rning-values.php


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Yan9
Отправлено: 09 Октября, 2015 - 18:58:16
Post Id


Новичок


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


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




Цитата:
по моему нет ошибки тут

Я имел ввиду то, что я писал print_r($row), а надо было как Вы написали, ну или что-то типа такого
CODE (text):
скопировать код в буфер обмена
  1. $g=$x->signcheck();
  2. print_r($g);

Цитата:
возврат значения, почитайте про функции

Ок, спасибо, как-то упустил это и не вник.
(Добавление)
Viper пишет:
Yan9 пишет:
Объясните, пожалуйста, зачем в модели нужен return, с вызовом метода очевидно где ошибка, а вот с return не понял)

http://php.net/manual/en/function.return.php
http://php.net/manual/en/functions.returning-values.php


Спасибо, обязательно прочту!)

(Отредактировано автором: 09 Октября, 2015 - 18:59:29)

 
 Top
andrewkard
Отправлено: 09 Октября, 2015 - 20:06:22
Post Id


Участник


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


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




Yan9 пишет:
с вызовом метода очевидно где ошибка

да, точно Улыбка Что то я не увидел.
 
 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