Как сделать вывод новостей через TPL?

У меня вот в чем проблема:
Есть шаблон на TPL (main.tpl) главная страница
На ней отображаются новости, но когда я делаю их вывод, но выводится только одна последняя новость, а не все. Как это можно исправить? Вот код вывода новостей:
//Вывод новостей
$result = mysql_query ("SELECT * FROM news ORDER by id");
$myrow = mysql_fetch_array ($result) ;
 
do {
    $tpl->set_value('id',$myrow['id']);
    $tpl->set_value('N_TITLE',$myrow['n_name']);
    $tpl->set_value('SHORT',$myrow['descr']);
    $tpl->set_value('AUTHOR',$myrow['author']);
    echo $news;
} while ($myrow = mysql_fetch_array ($result));


Вот часть кода из main.tpl отвечающая за блок с новостями:
<div class="news_c">
	<div class="news_name">
		<h2>{N_TITLE}</h2>
	</div>
	<div class="news_short">
		<h4>{SHORT}... | Автор: {AUTHOR}</h4>
	</div>
</div>


Вот скриншот самого сайта:
c754fde86f8a4f4ebee254cc75c755a4.png

Шаблонизатор писал по книге - самый простенький:
<?php
class template_class{
	var $values = array();
	var $html;
	
	function get_tpl($tpl_name){
		if(empty(tpl_name) || !file_exists($tpl_name)){
			return false;
		}else{
			$this->html = join('',file($tpl_name));
		}
	}
	
	function set_value($key,$var){
		$key = '{'.$key.'}';
		$this->values[$key] = $var;
	}
	
	function tpl_parse(){
		foreach($this->values as $find => $replace){
			$this->html = str_replace($find, $replace, $this->html);
		}
	}
}
$tpl = new template_class;
?>
  • Вопрос задан
  • 233 просмотра
Пригласить эксперта
Ответы на вопрос 2
@k2lhu
Все правильно, используйте цикл для вывода записей к примеру for:
{% for user in users %}
{{ user.username|e }}
{% endfor %}


Просто так вам новости все сразу не выведутся, это же общание к массиву идут, еще есть смысл проверить массив, распечатайте его var_dump() либо print_r():
var_dump($a);
Посмотрите что в него попадает.
А то как вы хотите распечатать выведет только одну запись :)

Еще хотел бы добавить - используйте PDO или mysqli для работы с БД. Забудьте про mysql в срочном порядке.
Ответ написан
Stalker_RED
@Stalker_RED
Вы бы хоть написали, что за шаблонизатор у вас.
Похоже на смарти, если я угадал, то вот пример вывода циклом:
www.smarty.net/docsv2/ru/language.function.foreach.tpl
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы