Този код за Smarty ?

djman

Registered
Код:
$query1 = mysql_query("SELECT * FROM `forum_cat` ORDER BY `id` ASC") or die(mysql_error()); 
while ($row = mysql_fetch_array($query1)) 
{
	echo $row["category_name"]."<br/>"; 

	$query2 = mysql_query("SELECT `name` FROM `forum_forums` WHERE `cid` = '".$row["id"]."'") or die(mysql_error());
	while ($data = mysql_fetch_array($query2)) 
	{
		echo $data["name"]."<br/>"; 
	} 

	echo "<br/>"; 
}

Може ли да покажете как ще стане този код за Smarty, заедно с tpl ? По-точно ме интересува частта с assign (къде да я направя?) и извеждането на данните в tpl.
Благодаря много!!
 
PHP:
$query1 = mysql_query("SELECT * FROM `forum_cat` ORDER BY `id` ASC") or die(mysql_error());
$za_smarty = array();
while ($row = mysql_fetch_array($query1))
{
echo $row["category_name"]."<br/>";

$query2 = mysql_query("SELECT `name` FROM `forum_forums` WHERE `cid` = '".$row["id"]."'") or die(mysql_error());
while ($data = mysql_fetch_array($query2))
{
echo $data["name"]."<br/>";
}

echo "<br/>";
$za_smarty[] = $row;
}
$smarty->assign("info",$za_smarty);

SMARTY:
{$info.category_name}
 
Друго имах впредвид... Нека постна направо моя опит:

Smarty каза:
$data1=array(); $data2=array();

$query1=mysql_query("SELECT * FROM links_category ORDER BY links_category.cid ASC") or die(mysql_error());
while($d1=mysql_fetch_array($query1))
{
$data1[]=$d1;
$catid=$d1['cid'];
}

$query2=mysql_query("SELECT * FROM links WHERE links.cid = $catid ORDER BY links.cid ASC") or die(mysql_error());
while($d2=mysql_fetch_array($query2))
{
$data2[]=$d2;
}

$smarty->assign("q1",$data1);
$smarty->assign("q2",$data2);

TPL каза:
{foreach from=$q1 item=qu1}
+ {$qu1.name}<br />
{foreach from=$q2 item=qu2}
{$qu2.title}<br />
{/foreach}
-------------<br /><br />
{/foreach}

Резултатът е: Показва правилно категориите, но съдържанието под тях е едно и също навсякъде. :roll:
 
Защото нямаш връзка между данните
Код:
$data=array(); 
$query=mysql_query("SELECT * FROM links_category ORDER BY links_category.cid ASC") or die(mysql_error()); 
while($d1=mysql_fetch_array($query1)) 
{ 
$data[]=$d1;
$query2=mysql_query("SELECT * FROM links WHERE links.cid = $d1['cat_id'] ORDER BY links.cid ASC") or die(mysql_error()); 
while($d2=mysql_fetch_array($query2)) 
{ 
$data['links']=$d2; 
} 
}

$smarty->assign("q1",$data);

и след това
Код:
{foreach from=$q1 item=q} 
+ {$q.name}<br /> 
{foreach from=$q.links item=l} 
{$l.title}<br /> 
{/foreach} 
-------------<br /><br /> 
{/foreach}
Пробвай така :?:
 
Да, забелязах...
По твоя начин не стана - показва само категориите, без съдържанието. :roll:
 
function data() {
$data=array();
$query=mysql_query("SELECT * FROM links_category ORDER BY links_category.cid ASC") or die(mysql_error());
while($d1=mysql_fetch_array($query1)) {
$data[]=$d1;
$query2=mysql_query("SELECT * FROM links WHERE links.cid = $d1['cat_id'] ORDER BY links.cid ASC") or die(mysql_error());
while($d2=mysql_fetch_array($query2)) {
print_r($d2);
}
}
}
$smarty->register_function('q1','data');
и в темплейта просто пишеш
:?:
 
Излезе нещо, но във вид на масив, а и така като гледам, не изобразява името на категорията... :roll:
 
Да, досетих се .. :D

Това с регистриране на функцията било много полезно... Благодаря много! :?:
 

Back
Горе