PDA

View Full Version : Help Smarty



minhthanhhb
07-12-2007, 08:15
Mình đang thử sử dụng Smarty PHP nhưng khó quá ...ai bik chỉ hộ cái nhé

Mình có cái Catalog gồm có Cat và SubCat : bt thì mình làm thế này mình dùng xTemplates




### OUT CATALOGUE
$query=$mysql->query("SELECT * FROM ".$prefix_table."cat WHERE subid=0 ORDER BY orders ASC");
while ($cat=$mysql->fetch_array($query)){

$xtpl->assign('CAT', array( 'ID' => $cat["catid"],
'NAME' => $cat["name"])
);



$queryrows=$mysql->query("SELECT * FROM ".$prefix_table."cat WHERE subid=".$cat["catid"]." ORDER BY orders ASC");
while ($subcat=$mysql->fetch_array($queryrows)){

$xtpl->assign('SUBCAT', array( 'ID' => $subcat["catid"],
'NAME' => $subcat["name"])
);
$xtpl->parse('main.showcat.cat.subcat');
}

$xtpl->parse('main.showcat.cat');
}

$xtpl->parse('main.showcat');



ở HTML thì mình vít các block cho nó... rồi nó show ra
Cat1
+ Subcat1
+ Subcat2
Cat2
+ Subcat3

như thế...giờ mình muốn show như nhế trên Smarty thế nào

mình đã thử nhưng cố gắng mình chỉ show ra đc mỗi Cat kô làm thế nào cả SubCat nên mong sự giúp đỡ

PHP


$catsql = "SELECT * FROM ".$prefix_table."cat WHERE cat_subid=0 ORDER BY cat_order ASC";
$smarty->assign('cat', $db->getAll($catsql));
HTML


{section name=showcat loop=$cat}
&nbsp;&nbsp;<img src="{$skin}img/cat.gif" border="0">
<b> <A href="./#Cat/{$cat[showcat].cat_catid}"><b><font color=#FB6604>{$cat[showcat].cat_name}</a></font></b> <br>

{/section}

cuongdh
07-12-2007, 09:29
Làm 2 vòng lặp lồng vào nhau. Có gì liên hệ với mình qua nick YIM: hungcuong411

Hero_vanchien
07-12-2007, 09:30
Chào bạn! Mình dùng Smarty khá nhiều chắc giúp được bạn.
Nòng cốt của Smarty khi assign dữ liệu xuống templates đó là dùng mảng (Array)
Bạn phải đưa cấu trúc dữ liệu cho biến $cat của bạn trợ thành 1 mảng như sau
Cat[1][cat_name] = Ten category
Cat[1][cat_item][1]= Ten Subcategory
...
Từ đấy bạn thể sử dụng foreach để lấy ra dữ liệu.
Nếu bạn thích dùng Section thì
Cat[1]->cat_name = Ten category
Cat[1]->cat_item[1]= Ten Subcategory

Và trong template bạn phải sử dụng 2 vòng lặp section hoặc foreach lồng vào nhau
{section name=icat loop=$cat}
{section name=sub loop=$cat[icat]}
{/section}
{/section}

thì sẽ lấy ra được.
http://hr.gviets.org; http://hiephoioto.com.vn là 2 ví dụ site mình làm sử dụng smarty.

minhthanhhb
07-12-2007, 10:33
cảm ơn bạn bạn có thể cho 1 ví dụ qurey và assign thì tốt quá

Hero_vanchien
07-12-2007, 10:37
Cũng rất là khó đưa ví dụ vì dữ liệu của bạn khác dữ liệu của mình. Bạn cứ làm sao tạo ra được 1 mảng như vậy là thành công.