Использование шаблонизатора

Аватара пользователя
SuBbI
Сообщения: 161
Зарегистрирован: 02 янв 2010
есть код,который выводит некоторые поля из бд

Код: Выделить всё

<?php  
  include 
("db_config.php"); 
  $result 
= mysql_query("SELECT * FROM monik",$db);
  $myrow = mysql_fetch_array($result);
  do  {
    printf ("<p><td class='pi'>%s:%s:%s</td></p>",$myrow['name'],$myrow['ip'],$myrow['port']);
  } while($myrow = mysql_fetch_array($result));   
?>

хочу сделать
1.подцепление шаблона страницы

Код: Выделить всё

print_page('index.tpl');

2.присвоить значение некоторой переменной (не знаю как правильно сказать)

Код: Выделить всё

$template->assign_vars('name',$name['name'])

помогите собрать все в кучу и верно релизовать

Аватара пользователя
Distructor
Администратор
Сообщения: 1600
Зарегистрирован: 28 дек 2009
это кусок кода для чего (phpBB, vB или что-то свое)? какой шаблонизатор стоит?

Аватара пользователя
SuBbI
Сообщения: 161
Зарегистрирован: 02 янв 2010
это из своего=)

какой шаблонизатор стоит?
не понимаю о чем, хотелось бы сделать=)

Khvosticov Sergey
Сообщения: 201
Зарегистрирован: 31 дек 2009
:D Знакомый мне код )))
1.Почему тема называется php-connect ?
2.Как сделать в шаблоне не знаю ... почитай в интернете ...

-- добавлено 24 фев 2010, 21:51 --

+ замени printf функцией echo
будет так :

Код: Выделить всё

echo "$myrow[ip],$myrow[port]";

Так более маленький код !

Аватара пользователя
Distructor
Администратор
Сообщения: 1600
Зарегистрирован: 28 дек 2009
Tarq писал(а):2.Как сделать в шаблоне не знаю ... почитай в интернете ...
п7. Правил (предпоследний абзац)

SuBbI писал(а):
Distructor писал(а):какой шаблонизатор стоит?
не понимаю о чем,хотелось бы сделать=)
в общих чертах почитай в http://ru.wikipedia.org/wiki/Smarty .
Официальный сайт - http://www.smarty.net/ там есть и версии для скачивания, и русский учебник.

Аватара пользователя
SuBbI
Сообщения: 161
Зарегистрирован: 02 янв 2010
Шаблонизатор совсем не то что мне нужно.
ради 2 строчек кода нет смысла его использовать

Аватара пользователя
Distructor
Администратор
Сообщения: 1600
Зарегистрирован: 28 дек 2009
SuBbI писал(а):ради 2 строчек кода нет смысла его использовать
2 строчки кода будут как-раз при его использовании

иначе либо писать свой собственный облегченный (при чем не факт, что более быстрый и гибкий) мини шаблонизатор,
либо по старинке писать весь php и html код сразу в исполняемом *.php файле

Аватара пользователя
SuBbI
Сообщения: 161
Зарегистрирован: 02 янв 2010
чет бред какой-то....если мне тупо надо выводить линк заполеный юзером

Код: Выделить всё

printf ("

",$myrow['link']);
}   

то мне обязательно нужен шаблонизатор???? если я тупо хочу этот линк вогнать под картинку и выводить до тех пор пока они не кончатся в бд,то мне тоэе нужен шаблонизатор?????
как сделать по старинке? ведь в php я не смагу сверстать таблицу для вывода

Аватара пользователя
Distructor
Администратор
Сообщения: 1600
Зарегистрирован: 28 дек 2009
SuBbI писал(а):как сделать по старинке? ведь в php я не смагу сверстать таблицу для вывода
я не про написание HTML на языке php.
Приведу пример:
Задача - вывести на странице таблицу с повторяющейся информацией.

Вариант 1 - "По старинке".
    файл page.php

    Код: Выделить всё


    <html>
    <head>
      <title>Пример страницы</title>
    </head>
    <body>

    <?php
       $users_array 
    = array (
                  array('name'=> 'Вася', 'age'=>14 ),
                  array('name'=> 'Петя', 'age'=>16 ),
                  array('name'=> 'Коля', 'age'=>18 ),
             );
    ?>

    <table>
      <tr> <td>Имя</td>    <td>Возраст</td> </tr>
    <?php foreach ($users_array as $user) { ?>
      <tr> <td><?php echo $user['name']; ?></td>    <td><?php echo $user['age']; ?></td> </tr>
    <?php } ?>
    </table>

    </body>
    </html>

Вариант 2 - С использованием шаблонизатора Smarty
    файл page.php

    Код: Выделить всё


    <?php
       require_once
    ('Smarty.class.php');
       $smarty = new Smarty();
       $users_array = array (
                  array('name'=> 'Вася', 'age'=>14 ),
                  array('name'=> 'Петя', 'age'=>16 ),
                  array('name'=> 'Коля', 'age'=>18 ),
             );
       $smarty->assign('users_arr', $users_array );
       $smarty->display('page.tpl');
    ?>

    файл /templates/page.html

    Код: Выделить всё

    <html>
    <head>
      <title>Пример страницы</title>
    </head>
    <body>

    <table>
      <tr> <td>Имя</td>    <td>Возраст</td> </tr>
    {foreach from=$users_arr item=user}
      <tr> <td>{$user.name}</td>    <td>{$user.age}</td> </tr>
    {/foreach}
    </table>

    </body>
    </html>
     

Таким образом использование шаблонизатора позволяет отделить верстку от кода, что особенно актуально для страниц имеющих сложную многоэлементную верстку.

Конечно если пишется сайт из "двух" страниц, не выполняющий сложных обработок данных и не имеющий сложной структуры верстки, то проще использовать первый вариант

Аватара пользователя
SuBbI
Сообщения: 161
Зарегистрирован: 02 янв 2010
Вариант 1 - "По старинке".

ну это пример для вывода 1 строчки , а как сделать чтобы данные заполнялись в столько строчек/столбцов,сколько есть в базе?

Аватара пользователя
Distructor
Администратор
Сообщения: 1600
Зарегистрирован: 28 дек 2009
SuBbI писал(а):ну это пример для вывода 1 строчки , а как сделать чтобы данные заполнялись в столько строчек/столбцов,сколько есть в базе?
неужели так сложно подумать самому? Вспомнить к примеру вложенные циклы и написать что-то вроде

Код: Выделить всё

<?php foreach ($users_array as $user) { ?>
  <tr>
    <?php foreach ($user as $value) { ?>
      <td><?php echo $value; ?></td>
    <?php } ?>
  </tr>
<?php } ?>


или ты только готовое использовать можешь?

Аватара пользователя
SuBbI
Сообщения: 161
Зарегистрирован: 02 янв 2010

Код: Выделить всё

<!--Линк-->
                     <div class="Comment2">
                                 <div class="Comment2SmoothTopLine"><div class="Comment2SmoothTopLeft"><div class="Comment2SmoothTopRight">&nbsp;</div></div></div>
                                 <div class="Comment2Content"><div class="Comment2ContentLeft"><div class="Comment2ContentRight">
                                 123123
                                 </div></div></div>
                                 <div class="Comment2SmoothBottomLine"><div class="Comment2SmoothBottomLeft"><div class="Comment2SmoothBottomRight">&nbsp;</div></div></div>
                     </div>
                              <!-- / линк -->

вот мой блок в котором на странице должна выводиться инфа! этих блоков должно быть столько,сколько инфы в базе.....

Аватара пользователя
Distructor
Администратор
Сообщения: 1600
Зарегистрирован: 28 дек 2009

Код: Выделить всё

<?php foreach ($blocks_array as $block) { ?>
    <!--Линк-->
    <div class="Comment2">
         <div class="Comment2SmoothTopLine"><div class="Comment2SmoothTopLeft">
               <div class="Comment2SmoothTopRight">&nbsp;</div></div></div>
         <div class="Comment2Content"><div class="Comment2ContentLeft"><div class="Comment2ContentRight">
                                 <?php echo $block; ?>
         </div></div></div>
         <div class="Comment2SmoothBottomLine"><div class="Comment2SmoothBottomLeft">
                <div class="Comment2SmoothBottomRight">&nbsp;</div></div></div>
    </div>
    <!-- / линк -->
<?php } ?>
и в чем тут сложность-то?

Аватара пользователя
SuBbI
Сообщения: 161
Зарегистрирован: 02 янв 2010
ап темы=)
есть код который при офф выводит одну картинку,при он другую

Код: Выделить всё

<?php
$ip = "ip ";
$port = "port";
if (! $sock = @fsockopen($ip, $port, $num, $error, 3))
echo '<img src="images/smoothred/buttons/transfers.png" alt="" border="0" />';
else{
echo '<B>Имя хаба: <FONT COLOR=lime>Online</b></FONT>';
fclose($sock);
}
?>

вопрос,как в $ip = "ip "; и $port = "port"; вогнать автоматически данные из бд?
зы.

Код: Выделить всё

$names_array = array (     array('name'=> $myrow['name'] ),
                           array('ip'  => $myrow['ip']   ), 
                     array('port'=> $myrow['port'] ),     );       
         

Аватара пользователя
Distructor
Администратор
Сообщения: 1600
Зарегистрирован: 28 дек 2009
SuBbI писал(а):вопрос,как в $ip = "ip "; и $port = "port"; вогнать автоматически данные из бд?
вставить опрос сервера в цикл обработки данных полученных из БД

Тебе полгода назад уже накидали кучу ссылок на инфу по работе с MySQL из PHP. Неужели за это время знаний в этом вопросе так и не прибавилось..?


Вернуться в «Вопросы по программированию»