Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как подставить в шаблон комментариев значения из базы данных
 
 автор: (Sandr)   (06.06.2011 в 17:31)   письмо автору
 
 

Всем привет) Помогите с проблемой пжл..
Есть файл comments.tpl. Его содержание:
{num_comm}) Дата: {date}<br>
<a href="javascript:void(0)" onclick="answer('{name},'#add_comm')">{name}</a><br>
Сообщение: {message}
<hr>

И есть файл index.php в котором:
...
public function ShowComm($comm_tpl, $num, $id_article)
    {
        $this->selComm = mysql_query("SELECT * FROM `comm` WHERE `id_article`=".intval($id_article)." ORDER BY `id` ASC LIMIT ".intval($num));
        $num_comm = 1;
        $comm_tpl = file_get_contents('tpl/comm.tpl');
....



Помогите пожалуйста сделать вывод из бд всех записей(в данном случае комментариев) согласно "шаблону".

  Ответить  
 
 автор: cheops   (06.06.2011 в 17:49)   письмо автору
 
   для: (Sandr)   (06.06.2011 в 17:31)
 

А структура таблицы comm какая?

  Ответить  
 
 автор: (Sandr)   (06.06.2011 в 18:01)   письмо автору
 
   для: cheops   (06.06.2011 в 17:49)
 

Упс.. забыл написать))

`id` int(15) NOT NULL auto_increment,
`id_article` int(15) NOT NULL,
`date` int(25) NOT NULL,
`name` varchar(255) NOT NULL,
`msg` varchar(255) NOT NULL

  Ответить  
 
 автор: cheops   (06.06.2011 в 18:22)   письмо автору
 
   для: (Sandr)   (06.06.2011 в 17:31)
 

Можно начать отталкиваться от следующего скрипта
<?php
  
public function ShowComm($comm_tpl$num$id_article
  { 
    
$query "SELECT * FROM `comm` 
              WHERE `id_article`="
.intval($id_article).
              ORDER BY `id` ASC 
              LIMIT "
.intval($num)
    
$this->selComm mysql_query($query); 
    if(!
$this->selComm) exit("Ошибка выполнения SQL-запроса ".$query);
    
$num_comm 1
    
$comm_tpl file_get_contents('tpl/comm.tpl'); 
    
$search  = array("{num_comm}""{date}""{name}""{message}");
    if(
mysql_num_rows($this->selComm))
    {
      while(
$comm mysql_fetch_array($this->selComm))
      {
        
$replace = array($num_comm$comm['date'], $comm['name'], $comm['msg']);
        echo 
str_replace($search$replace$comm_tpl); 
      }
    }
    ...
  }
?>

  Ответить  
 
 автор: (Sandr)   (06.06.2011 в 19:04)   письмо автору
 
   для: cheops   (06.06.2011 в 18:22)
 

Спасибо большое!) Всё так, как нужно)
Ответьте ещё на один вопрос пожалуйста? Вот читал я про статические свойства класса, но пока не понял, где можно их применить? Можете дать ссылки или выложить куски кода, в которых показано(расказано) о том где их лучше использовать?

  Ответить  
 
 автор: cheops   (06.06.2011 в 19:26)   письмо автору
 
   для: (Sandr)   (06.06.2011 в 19:04)
 

Собственно ничего сложного в них нет. Это общие для всех объектов переменные, в них можно хранить значения которые нужны всем объектам данного класса без исключения или использовать в качестве счетчика объектов (изменения в одном объекте отражаются на всех остальных объектах).

Это очень крутое и мощное свойство в средах, где объекты живут долго. Понятно что в условиях Web-страниц, где объект живет лишь покуда выполняется скрипт, польза от таких переменных значительно меньше (так как изменения в таких свойствах не передаются от страницы к странице, если об этом специально не заботиться).

Статические методы удобны тем, что могут использоваться без создания объектов. Т.е. классы со статическими методами выступают в качестве своеобразного пространствами имен. Поэтому вы смело можете заводить функции с произвольными именами, не заботясь о том, что имя функции может совпасть с именем библиотечной. Например, можно реализовать в классе копии строковых функций, но которые будут корректно работать с UTF-8. Для обращения к этим методам нужно будет указывать префикс класса, например text::strlen($str). При этом не нужно будет тратить память и время на создание объекта text(), вызов new, инициализацию объекта конструктором и т.п.

PS Под новые вопросы, лучше новые темы заводить.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования