10/10/2018, 09:31
Hiển thị mảng trong Smarty Template Engine?
Mình có 1 đoạn mã gọi dữ liệu từ table "category" trong database.
Có 2 loại cat là root và sub. Mình dùng while 2 lần ->> gọi được Root rồi tới sub của nó, nhưng đó là khi dùng echo (hiển thị trong chính file php), còn khi cho nó hiện trong file tpl của Smarty Template Engine thì chịu, Không biết làm thế nào! Mình thử dùng section tương tự lúc dùng while nhưng ko được: nó chỉ hiện ra root thôi, còn sub thì ko thấy.
Code trong file php:
Code trong file tpl:
Nếu hiển thị trực tiếp trong file PHP thì code sau sẽ work:
Mong các bạn giúp dùm :P Mình thử đủ cách rồi vẫn ko được
Có 2 loại cat là root và sub. Mình dùng while 2 lần ->> gọi được Root rồi tới sub của nó, nhưng đó là khi dùng echo (hiển thị trong chính file php), còn khi cho nó hiện trong file tpl của Smarty Template Engine thì chịu, Không biết làm thế nào! Mình thử dùng section tương tự lúc dùng while nhưng ko được: nó chỉ hiện ra root thôi, còn sub thì ko thấy.
Code trong file php:
Code:
// Danh sách chuyên mục $rootcat_qr = mysql_query("SELECT * FROM category WHERE type = 'root'"); $r=0;$s=$r;$cat=array();$subcat=array(); while ($root = mysql_fetch_array($rootcat_qr)) { $cat[$r] = $root['name'];$r++; $subcat_qr = mysql_query("SELECT * FROM category WHERE type = 'sub' and parent = "$cat[$r]" "); while ($sub = mysql_fetch_array($subcat_qr)) { $subcat[$S] = $sub['name'];$s++; } }
Code:
<select name="cat"> {section name=r loop=$cat}<option>{$cat[r]} [Root]</option>{section name=s loop=$subcat}<option>{$subcat[s]}</option>{/section}{/section}</select>
Nếu hiển thị trực tiếp trong file PHP thì code sau sẽ work:
Code:
// Danh sách chuyên mục $rootcat_qr = mysql_query("SELECT * FROM category WHERE type = 'root'"); while ($root = mysql_fetch_array($rootcat_qr)) { $cat = $root['name']; echo $cat; $subcat_qr = mysql_query("SELECT * FROM category WHERE type = 'sub' and parent = "$cat" "); while ($sub = mysql_fetch_array($subcat_qr)) { $subcat = $sub['name']; echo $subcat; } }
Bài liên quan
Và cũng như vậy ở smarty bạn cũng phải đưa chúng ra theo kiểu có liên quan chứ.
Hình như bạn còn code sai chính tả đấy.
Cứ nghĩ đí Nếu khó quá mình sẽ đưa code cho xem.
<select name=category>
{html_options values=$option_values selected=$option_selected output=$option_output}
</select>
Ví dụ SELECT root category.(Root thì parentid=0 còn subcategory thì parentid <>0 )
$sql_root="SELECT * FROM tbl_category WHERE parentid=0";
$sql_sub="SELECT * FROM tbl_category WHERE parentid <> 0";
sau đó gọi hàm lấy về kết quả $rs_root và $rs_sub rồi assign vào templates:
assign("root",$rs_root);
assign("sub",$rs_sub);
trong file HTML bạn gọi như sau:
{section name=i loop=$root}
<div class="root">{$root[i].catname}</div>
foreach(item=item from=$sub)
if($item.catid eq $root[i].catid)
<div class="sub">{$item.catname}</div>
{/if}
{/foreach}
{/section}
Chúc thành công !
{section name=i loop=$root}
<div class="root">{$root[i].catname}</div>
{section name=j loop=$sub[i]}
{if $sub[i][j].catid eq $root[i].catid}
<div class="sub">{$sub[i][j].catname}</div>
{/if}
{/section}
{/section}
Nếu muốn trực quan hơn thì hiển thị mảng trong Smarty ra mà nhin cho dễ giống print_r() trong PHP ấy
Bgs