Code Igniter

Тема в разделе "Как сделать...", создана пользователем [Macintosh], 19 сен 2009.

Статус темы:
Закрыта.
  1. [Macintosh]

    [Macintosh]

    Регистр.:
    8 дек 2008
    Сообщения:
    208
    Симпатии:
    39
    Друзья такая проблема, начал изучать php и фреемворк Code Igniter

    В директории controllers
    создал файл clients.php
    PHP:
    <?php
    class Clients extends Controller {
        
        function 
    Clients()
        {
            
    parent::Controller();        
            
    $this->load->database();
            
    $clients $this->db->query('SELECT `id`,`email`,`description` FROM `clients` WHERE 1 LIMIT 0 , 30');
            
    $this->load->library('parser');
            
    $data_template = array ('title' => 'Клиенты','heading' => 'Клиенты компании''content' => $clients->result_array());
            
    $this->parser->parse('clients',$data_template);
            
            
        }
        
        function 
    index()
        {
            
    $this->load->view('clients');
        }
    }
    ?>
    В директории view файл шаблона clients.php

    HTML:
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>{title}</title>
    </head>
    <body>
    <p>
    <h1>{heading}</h1>
    <table width="400" border="0" cellpadding="0" cellspacing="0" style="border:1px #9999FF">
    <tr style="border:1px #9999FF">
    <td bgcolor="#CCCCFF" style="text-align:center; font-family: Georgia, "Times New Roman", Times, serif;">ID</td>
    <td bgcolor="#CCCCFF" style="text-align:center; font-family: Georgia, "Times New Roman", Times, serif;">E-Mail</td>
    <td bgcolor="#CCCCFF" style="text-align:center; font-family: Georgia, "Times New Roman", Times, serif;">Описание</td>
    </tr>
    <tr style="border:1px #9999FF">
    <td style="text-align:center; font-family: Georgia, "Times New Roman", Times, serif;">$clients['id']</td>
    <td style="text-align:center; font-family: Georgia, "Times New Roman", Times, serif;">$clients['email']</td>
    <td style="text-align:center; font-family: Georgia, "Times New Roman", Times, serif;">$clients['descriptions']</td>
    </tr>
    </table>
    </p>
    </body>
    </html>
    
    В итоге что получается у меня:

    [​IMG]

    Как мне правильно собрать из запроса бд в массим?, не могу понять почему не идут функции mysql_num_rows(),mysql_affected_rows()
    и как правильно отобразить все в шаблоне?

    P.S. 2 часа мучался. но так и не понял!
    Просьба: Ногами не пинать, в гугл не посылать, просто прошу объясните на родном языке что не так делаю и где я тупанул :)
     
  2. omfg

    omfg

    Регистр.:
    4 авг 2009
    Сообщения:
    159
    Симпатии:
    46
    ну во-первых ты $clients во вью не запихал в {}.
    Parse я вообще ни разу не юзал в ки, а смысл?)
    во-вторых во вью наверное лучше сделать это форичем, т.е. передать в него чистый $clients, а внутри уже сделать:
    foreach ($clients->result_array() as $client)
    {
    echo $client['id'];
    echo $client['email'];
    echo $client['description'];
    } (посмотри там синтаксис parse, я не помню как на нем.

    Используй сразу функции для ci - $clients->num_rows().
    Вообще конечно читай Перейти по ссылке получше :)

    UPD:
    вот сейчас прочитал еще мануал по парсеру, попробуй вот так:
    PHP:
    $data_template = array (
        
    'title' => 'Клиенты',
        
    'heading' => 'Клиенты компании'
        
    'clients' => $clients->result_array()); 
    а во вью в свою очередь:
    PHP:
    <table width="400" border="0" cellpadding="0" cellspacing="0" style="border:1px #9999FF">
    <
    tr style="border:1px #9999FF">
    <
    td bgcolor="#CCCCFF" style="text-align:center; font-family: Georgia, "Times New Roman", Times, serif;">ID</td>
    <
    td bgcolor="#CCCCFF" style="text-align:center; font-family: Georgia, "Times New Roman", Times, serif;">E-Mail</td>
    <
    td bgcolor="#CCCCFF" style="text-align:center; font-family: Georgia, "Times New Roman", Times, serif;">Описание</td>
    </
    tr>
    {
    clients}
    <
    tr style="border:1px #9999FF">
    <
    td style="text-align:center; font-family: Georgia, "Times New Roman", Times, serif;">{id}</td>
    <
    td style="text-align:center; font-family: Georgia, "Times New Roman", Times, serif;">{email}</td>
    <
    td style="text-align:center; font-family: Georgia, "Times New Roman", Times, serif;">{descriptions}</td>
    </
    tr>
    {/
    clients}
    </
    table>

    Так же у тебя как-то странно контроллер сделан. Зачем в конструктор пихать все функции, которые ты должен по идее в index() поставить? в конструкторе только библиотеки подгружай.
    И используй active records вместо чистого сикуэля.
     
    [Macintosh] нравится это.
  3. [Macintosh]

    [Macintosh]

    Регистр.:
    8 дек 2008
    Сообщения:
    208
    Симпатии:
    39
    Сами понимаете что такое говнокодить ) особенно когда только начинаеш ) а сейчас обязательно прочту про active records.
    Кстати. вот тут я точно также подставлял $clients->result_array()); но почему то ошибочку выдало. Хотя незнаю. сейчас буду проверять )

    И всетаки html генерируется и сначало в браузере он а после этого результаты. не могу понять как с этим бороться.
     
Статус темы:
Закрыта.