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

Форум PHP

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

 

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

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

тема: Smarty+php
 
 автор: Roo$   (13.07.2009 в 12:58)   письмо автору
 
 

Всем добрый день. Помогите разобраться (отделить код php от html) с шаблонизатором Smarty.
Изначально мой код выглядит так:

$result = mysql_query("SELECT * FROM ".$pre."_post_".$lang." where show_ns='y' and full_story LIKE '%$searchmsg%' ORDER BY date DESC LIMIT $start, $num");
while ($postrow = mysql_fetch_array($result))
$postrow2 = mysql_fetch_array($result);
{
$result8 = mysql_query("SELECT * FROM ".$pre."_category_".$lang." where id = '$postrow[category]'");
$postrow8 = mysql_fetch_array($result8);
  echo "<tr bgcolor='#F0F8FF'><td><b>Раздел:</b> $postrow8[name]</td></tr>";
  echo "<tr bgcolor='#F5FFFA'><td><a href='/$lang/search/$postrow[id]-$postrow[alt_name].html'>".$postrow[full_story]."</a></td></tr>";
  echo "<tr><td width='2px'>&nbsp;</td></tr>";
}

А так я пытаюсь его отделить:

$search = new Smarty;

while ($postrow = mysql_fetch_array($result))
{
$postrows[]=$postrow;
$result8 = mysql_query("SELECT * FROM ".$pre."_category_".$lang." where id = '$postrow[category]'");
$postrow8 = mysql_fetch_array($result8);
$razdel[]=$postrow8;
}
$search->assign('postrow2',$postrows);
$search->assign('razdel',$razdel);
$search->display('search.tpl');

search.tpl

{foreach from=$postrow2 item=item}
{foreach from=razdel item=razdel1}
<tr bgcolor='#F0F8FF'><td><b>Раздел:</b> {$razdel1.name}</td></tr>
<tr bgcolor='#F5FFFA'><td><a href='/{$lang}/search/{$item.id}-{$item.alt_name}.html'>{$item.full_story|truncate}</a></td></tr>
<tr><td width='2px'>&nbsp;</td></tr>
{/foreach}
{/foreach}

В результате это у меня записей выводится в 5 раз больше чем должно быть ((. Если закоментить

{foreach from=razdel item=razdel1}
<tr bgcolor='#F0F8FF'><td><b>Раздел:</b> {$razdel1.name}</td></tr>
{/foreach}

то выводится все как надо.. но как быть с выводом раздела?

  Ответить  
 
 автор: sim5   (13.07.2009 в 13:10)   письмо автору
 
   для: Roo$   (13.07.2009 в 12:58)
 

Раздел вне цикла.

  Ответить  
 
 автор: Roo$   (13.07.2009 в 15:58)   письмо автору
 
   для: sim5   (13.07.2009 в 13:10)
 

??

  Ответить  
 
 автор: sim5   (13.07.2009 в 16:32)   письмо автору
 
   для: Roo$   (13.07.2009 в 15:58)
 

Ваш массив должен представлять собой либо многомерный массив, где ключу "раздел" соответствует свой массив подразделов, тогда внешний цикл получает раздел, а внутренний раскладывает его подразделы. Либо это одномерный массив, тогда достаточно одного цикла, но с проверкой ключа "раздел".
Что вы пытаетесь разложить, бог его знает, но судя по коду Смарти, не верно - у вас "родитель" запихнут внутрь.

  Ответить  
 
 автор: Roo$   (15.07.2009 в 13:16)   письмо автору
 
   для: sim5   (13.07.2009 в 16:32)
 

спасибо за советы.. нестал больше мучить foreach, а воспользовался альтернативным тегом section

  Ответить  
 
 автор: sim5   (15.07.2009 в 13:41)   письмо автору
 
   для: Roo$   (15.07.2009 в 13:16)
 

Ну если у вас проблема в инстументе, пользуйтесь section, но суть то не в нем. ;-)

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

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