[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: вывод блоков из БД на ООП
m4a1fox
Доброе утро кто уже или еще не спит! Собственно интересует такой вопрос.
Допустим, в таблице в БД есть новости (id, title, meta_d, meta_k, text, date, time, img). Есть индуский запрос к БД. Вот такой

public function ShowAllBlogOnPage() {
$i = 3;
$name = '<table border="0" cellpadding="0" cellspacing="0" border="0" id="blog" align="center">
<tr valign="top">'
;
$sql = "SELECT * FROM `".$this->getLink()."` ORDER BY `id` DESC";
$res = connectDb::sql($sql);
if(mysql_num_rows($res) > 0) {
$c = 0;
while($row = mysql_fetch_assoc($res)) {
$c++;
$name .= '<td width="300px"><img src="./file/'.$row['img'].'"><br />';
$name .= '<div id="date">0'.$row['id'].'<br />
<span style="font-size: 8px;">
'
.$this->cor_date($row['date']).'
</span>
</div>
<a href="./'
.$this->getLink().'&id='.$row['id'].'">
<lable id="blog_title">'
.$row['title'].'</lable>
</a>
<br />'
;
$name .= ''.$this->CutText($row['text']).'</td>';
if($c == $i){
$name .= '</tr>';
}
}

$name .= '</tr></table>';
}else{
return false;
}
return $name;
}


Думаю что он делает не надо объяснять.... Вопрос чисто на логику, как вывести данные через цикл, только как это правильно.... А то как-то тупичок получился.
В файле вывода просто прописываю

echo $show->ShowAllBlogOnPage();

Но это же не корректно. Кто как делает сей процесс? Спасибо!



Спустя 6 минут, 50 секунд (6.09.2011 - 09:41) sharki написал(а):
m4a1fox
Лучше возвращай сформированный массив, а потом получаешь подготовленный шаблон и делаешь вставки, проходясь foreach smile.gif

Спустя 3 минуты, 30 секунд (6.09.2011 - 09:44) m4a1fox написал(а):
Да.... так же думал.... наверно так и сделаю....

Спустя 3 минуты, 47 секунд (6.09.2011 - 09:48) sharki написал(а):
Типа

public function parse_tpl($txt,$arr_replace) {
$replace_txt = array(); // массив с указатаелями на замену
$insert_txt = array(); // массив для замены указателей

foreach ($arr_replace as $key => $value) {
$replace_txt[] = $key;
$insert_txt[] = $value;
}

return str_replace($replace_txt, $insert_txt, $txt);
}
$row = $show->ShowAllBlogOnPage();
/* в $chunk находится любой хтмл шаблон
* создается массив с заменяемыми эл-ми
* там твоя таблица которая будет циклится или чего еще, может быть даже цельный шаблон :) где есть эл-ты #id# #name# и т.п
*/

$text = "";
foreach($row as $key=>$val) {
$replace = array(
"#id#" => $val['id'],
"#name#" => strip_tags($val['name']),
);


$text .= $pars->parse_tpl($chunk,$replace);
}

Спустя 2 минуты, 9 секунд (6.09.2011 - 09:50) linker написал(а):
Лучше не надо, у тебя на выходе готовый хтмл и это замечательно, вместо двух ненужных циклов. А представь, что у тебя запрос вернул 10 тысяч записей и чего, два раз по ним циклом проходить? А оно нужно ли?

Спустя 2 минуты, 23 секунды (6.09.2011 - 09:53) sharki написал(а):
Ну да, чтобы избежать лишнего цикла, можно прям там (в ShowAllBlogOnPage()) распарсить подготовленный шаблон, так будет лучше
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.