За последние 24 часа нас посетили 17886 программистов и 1701 робот. Сейчас ищут 1754 программиста ...

Вывод данных

Тема в разделе "PHP для новичков", создана пользователем Kirillde1, 26 мар 2013.

  1. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Код (Text):
    1. function articles_intro($article) {    
    2.     $article['content']=$article['content']."///";
    3.     return $article;
    4. }
     
  2. Kirillde1

    Kirillde1 Активный пользователь

    С нами с:
    16 мар 2013
    Сообщения:
    77
    Симпатии:
    0
    igordata ВЫ ВОЛШЕБНИК )я 2 дня над этим сижу. Вот что значит не понимать принцип данной работы )Теперь вроде всё понятно)
    Спасибо Вам за помощь! )
     
  3. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    можно сделать еще извращённее =))))))
    Код (Text):
    1. function articles_intro(&$article) {    
    2.     $article['content']=$article['content']."///";
    3. }
     
  4. iliavlad

    iliavlad Активный пользователь

    С нами с:
    24 янв 2009
    Сообщения:
    1.689
    Симпатии:
    4
    я выше написал рецепт против таких трудностей
     
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ну мало ли глаз замылилсо чо бываед
     
  6. Kirillde1

    Kirillde1 Активный пользователь

    С нами с:
    16 мар 2013
    Сообщения:
    77
    Симпатии:
    0
    И ещё, где можно почитать про MVC , учебник, или ещё что )
     
  7. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.108
    Симпатии:
    1.243
    Адрес:
    там-сям
    гыгыгы! интернеты набиты этим г* по самое немогу :)
    начни с вики и гуляй по ссылкам пока кушать не позовут.
     
  8. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    MVC это концепция. Как "Бог всепрощающий". Прочел - понял.
     
  9. Kirillde1

    Kirillde1 Активный пользователь

    С нами с:
    16 мар 2013
    Сообщения:
    77
    Симпатии:
    0
    Друг подкинул модель MVC
    index.php
    Код (Text):
    1. require_once('utills/utills.php');
    2. require_once('lib/lib.php');
    3. $a=new Lib;
    utills.php
    Код (Text):
    1. class Utills
    2. {
    3.     public function dump($dmp)
    4.     {
    5.         ob_start();
    6.         include($_SERVER['DOCUMENT_ROOT'].'/tmpl/'.$dmp.'.tpl');
    7.         ob_end_flush();
    8.     }
    9. }
    lib.php
    Код (Text):
    1. class Lib extends Utills
    2. {
    3.     public function __construct()
    4.     {
    5.         $this->dump('main');
    6.     }
    7. }

    Собственно всё работает, но только 1 страничка, т.е. main.php. Как можно сделать, что бы были ещё странички.
    Обратиться к этому другу не могу.
     
  10. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    отличный друг! люблю когда люди врут, спрашивая помощи.

    это можно сделать двумя способами.
    Код (PHP):
    1. class Utills
    2. {
    3.     static public function dump($dmp)
    4.     {
    5.         ob_start();
    6.         include($_SERVER['DOCUMENT_ROOT'].'/tmpl/'.$dmp.'.tpl');
    7.         ob_end_flush();
    8.     }
    9. } 
    Utills::dump('сюда пиши');

    или

    Код (PHP):
    1. class Lib extends Utills
    2. {
    3.     public function __construct($var)
    4.     {
    5.         $this->dump($var);
    6.     }
    7. } 
    $a=new Lib('сюда пиши');
     
  11. Kirillde1

    Kirillde1 Активный пользователь

    С нами с:
    16 мар 2013
    Сообщения:
    77
    Симпатии:
    0
    В смысле я вру? Я его достал своими глупыми вопросам, что теперь он мне не отвечает, что я могу поделать ?
     
  12. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Хороший друг! =) можешь поделать - не звать его другом, а например товарищем. :D
     
  13. Kirillde1

    Kirillde1 Активный пользователь

    С нами с:
    16 мар 2013
    Сообщения:
    77
    Симпатии:
    0
    Ну в каком то смысле я его понимаю )
     
  14. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Код (PHP):
    1. return $this->createNotification()
    2.                         ->setMessage($this->getView()->lang['notification']['forbidden_access'])
    3.                         ->setType('alert')
    4.                         ->setNotificationUrl('/admin/')
    5.                         ->run(); 
    [​IMG]
     
  15. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.330
    Адрес:
    Лень
    ====================================
    Код (Text):
    1. <?php
    2. $var=array("1","2","3","4","5","6","7","8");
    3. foreach ($var as $article){
    4. print $article;}
    5. ?>
     
  16. Kirillde1

    Kirillde1 Активный пользователь

    С нами с:
    16 мар 2013
    Сообщения:
    77
    Симпатии:
    0
    Вот новый вариант MVC, как теперь здесь сделать вывод данных ?
    Код (Text):
    1. <?php
    2.  
    3. include('C_View.php');
    4. $controller = new C_View();
    5. $controller -> Request();
    6. ?>
    Код (Text):
    1. <?php
    2.  
    3. abstract class Controller
    4. {
    5.     function __construct()
    6.     {
    7.        
    8.     }
    9.    
    10.     function Request()
    11.     {
    12.         $this->OnInput();
    13.         $this->OnOutput();
    14.     }
    15.    
    16.     protected function IsGet()
    17.     {
    18.         return $_SERVER['REQUEST_METHOD']=='GET';
    19.     }
    20.    
    21.     //Запрос пройзведён методом POST?
    22.    
    23.    
    24.     protected function IsPost()
    25.     {
    26.         return $_SERVER['REQUEST_METHOD']=='POST';
    27.        
    28.     }
    29.    
    30.     function OnInput()
    31.     {
    32.        
    33.     }
    34.    
    35.     function OnOutput()
    36.     {
    37.        
    38.     }
    39.    
    40.     function Template($fileName, $vars=array())
    41.     {
    42.         foreach ($vars as $k=>$v)
    43.         {
    44.             $$k=$v;
    45.         }
    46.        
    47.         ob_start();
    48.        
    49.         $fileName;
    50.        
    51.         ob_get_clean();
    52.     }
    53. }
    54.  
    55. ?>

    Код (Text):
    1. <?php
    2.  
    3. include('controller.php');
    4.  
    5.  
    6. abstract class C_Base extends Controller
    7. {
    8.     protected $title;
    9.    
    10.     protected $content;
    11.    
    12.     function __construct()
    13.     {
    14.        
    15.     }
    16.    
    17.     // Виртуальный обработчик запроса
    18.    
    19.     function OnInput()
    20.     {
    21.         parent::OnInput();
    22.        
    23.         $this->title='Test web';
    24.        
    25.         $this->content='';
    26.        
    27.     }
    28.    
    29.     //Виртуальный генератор
    30.    
    31.     function OnOutput()
    32.     {
    33.         $vars=array('title'=>$this->title,'content'=>$this->content);
    34.        
    35.         $page= $this->Template('theme/v_main.php',$vars);
    36.        
    37.         echo $page;
    38.     }
    39. }
    40.  
    41. ?>
    Код (Text):
    1. <?php
    2. include('C_Base.php');
    3. class C_View extends C_Base
    4. {
    5.     private $text;
    6.    
    7.     function __construct()
    8.     {
    9.        
    10.     }
    11.    
    12.     //Виртуальный обработчик запроса
    13.    
    14.     function OnInput()
    15.     {
    16.         parent::OnInput();
    17.        
    18.         $this->title = $this->title . "READ";
    19.        
    20.         $this->text = 'Hi';
    21.     }
    22.    
    23.    
    24.     // Виртуальный генератор
    25.    
    26.     function OnOutput()
    27.     {
    28.         $vars = array('text'=>$this->text);
    29.        
    30.         $this->content=$this->Template('theme/C_View.php', $vars);
    31.        
    32.         parent::OnOutput();
    33.     }
    34. }
    35. ?>
     
  17. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    а ты его не сам делал, чтоли? в чем вопрос?
     
  18. Kirillde1

    Kirillde1 Активный пользователь

    С нами с:
    16 мар 2013
    Сообщения:
    77
    Симпатии:
    0
    Сам делал, но понимаешь, я тупо заучил структуру, ибо плохо понимаю как это всё работает )
     
  19. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    extract()

    Добавлено спустя 44 секунды:
    ob_get_clean() возвращает значение. его надо куда-то поместить.
     
  20. Kirillde1

    Kirillde1 Активный пользователь

    С нами с:
    16 мар 2013
    Сообщения:
    77
    Симпатии:
    0
    не понял(
     
  21. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    что именно?
     
  22. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    А что ты этим хотел сделать
     
  23. Kirillde1

    Kirillde1 Активный пользователь

    С нами с:
    16 мар 2013
    Сообщения:
    77
    Симпатии:
    0
    Блин, не суждено мне понять этот PHP (
     
  24. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Задавай вопросы. Задавай.
     
  25. Kirillde1

    Kirillde1 Активный пользователь

    С нами с:
    16 мар 2013
    Сообщения:
    77
    Симпатии:
    0
    Блин, если сейчас не найду ответ на свой вопрос, у меня случится истерика+))) потому что я уже 3 дня над этим сижу.
    В общем общий вид моей MVC

    Файл index.php

    Код (Text):
    1. <?php
    2.  
    3. include('C_View.php');
    4. $controller = new C_View();
    5. $controller -> Request();
    6. ?>
    Тут пожалуй всё понятно, т.е. вызываем из контроллера метод Request().

    Далее смотрим на controller.php

    Код (Text):
    1. <?php
    2.  
    3. abstract class Controller
    4. {
    5.     function __construct()
    6.     {
    7.        
    8.     }
    9.    
    10.     function Request()
    11.     {
    12.         $this->OnInput();
    13.         $this->OnOutput();
    14.     }
    15.    
    16.     protected function IsGet()
    17.     {
    18.         return $_SERVER['REQUEST_METHOD']=='GET';
    19.     }
    20.    
    21.     //Запрос произведён методом POST?
    22.    
    23.    
    24.     protected function IsPost()
    25.     {
    26.         return $_SERVER['REQUEST_METHOD']=='POST';
    27.        
    28.     }
    29.    
    30.     protected function OnInput()
    31.     {
    32.        
    33.     }
    34.    
    35.     protected function OnOutput()
    36.     {
    37.        
    38.     }
    39.    
    40.     function Template($fileName, $vars=array())
    41.     {
    42.         foreach ($vars as $k=>$v)
    43.         {
    44.             $$k=$v;
    45.         }
    46.        
    47.         ob_start();
    48.        
    49.         $fileName;
    50.        
    51.         ob_get_clean();
    52.     }
    53. }
    54.  
    55. ?>
    Мы видим, что он абстрактный, поэтому реализовываем его в дочернем классе c_base.php, который по совместительству является базовым.

    Код (Text):
    1. <?php
    2.  
    3. include('controller.php');
    4.  
    5.  
    6. abstract class C_Base extends Controller
    7. {
    8.     protected $title;   // Заголовок страницы
    9.    
    10.     protected $content; //Содержание страницы
    11.    
    12.     function __construct()
    13.     {
    14.        
    15.     }
    16.    
    17.     // Виртуальный обработчик запроса
    18.    
    19.     protected function OnInput()
    20.     {
    21.         parent::OnInput();
    22.        
    23.         $this->title='Test web';
    24.        
    25.         $this->content='';
    26.        
    27.     }
    28.    
    29.     //Виртуальный генератор HTML
    30.    
    31.     protected function OnOutput()
    32.     {
    33.         $vars=array('title'=>$this->title,'content'=>$this->content);
    34.        
    35.         $page= $this->Template('theme/v_main.php',$vars);
    36.        
    37.         echo $page;
    38.     }
    39. }
    40.  
    41. ?>
    Ну здесь мы видим, что у нас идёт определение переменных, т.е. титл и контент, затем ф-ия OnOutput() в которой определяем массив и загоняем туда значения переменных, а затем опеределяем базовый шаблон, но титл пока не реализован, т.к. эта задача остаётся для другого класса c_view

    Код (Text):
    1. <?php
    2. include('C_Base.php');
    3. class C_View extends C_Base
    4. {
    5.     private $text;
    6.    
    7.     function __construct()
    8.     {
    9.        
    10.     }
    11.    
    12.     //Виртуальный обработчик запроса
    13.    
    14.     function OnInput()
    15.     {
    16.         parent::OnInput();
    17.        
    18.         $this->title = $this->title . "READ";
    19.        
    20.         $this->text = "Hi";
    21.     }
    22.    
    23.    
    24.     // Виртуальный генератор
    25.    
    26.     function OnOutput()
    27.     {
    28.         $vars = array('text'=>$this->text);
    29.        
    30.         $this->content=$this->Template('theme/C_View.php', $vars);
    31.        
    32.         parent::OnOutput();
    33.     }
    34. }
    35. ?>
    Вот только одного не пойму, как взаимодействуют два файла шаблона v_main.php и c_view.php. Я так полагаю, в c_view.php мы выводим данные например из бд, а затем каким то волшебством мы загоняем эти данные в main.php так?
    Но и всё же, данные не выводятся.

    Вот
    v_main.php
    Код (Text):
    1. <html>
    2. <?=$title?>
    3. <?=$contet?>
    4. <?=$text?>
    5. </html>
    и c_view.php
    Код (Text):
    1. <html><a>asd
    2.  
    3. <?=$text?></a></html>
    В обоих файлах пишу все переменные, которые желал бы вывести, т.е. просто уже от балды, лиж бы увидеть где что могло бы заработать, но увы, ничего и нигде (

    Добавлено спустя 2 минуты 58 секунд:
    п.с. учусь по видео урокам называются "Школа программирования", 6-ой по счёту

    Добавлено спустя 4 минуты 45 секунд:
    ААААААААААААааааа!!! НАШЁЛ ОШИБКУ! Пойду убьюсь об стену!

    Код (Text):
    1. ob_start();
    2.        
    3.         $fileName;
    4.        
    5.         ob_get_clean();
    - было!
    А нужно
    Код (Text):
    1. ob_start();
    2.        
    3.       INCLUDE  $fileName;
    4.        
    5.        RETURN ob_get_clean();
    Добавлено спустя 9 минут 57 секунд:
    Блин, извините, дошло всё )))) Огромное человеческое спасибо тем, кто отвечал!