2016-02-21 87 views
1

我想動態發送一個變量從foreach smarty後端從smarty前端,但沒有適用於所有變量,它只顯示一個......有一種方法可以實現這一點? 這裏是我的代碼:從前端發送動態變量到smarty後端

BACKEND:

$allineamento = array(); 
    foreach($db->query("SELECT Fields FROM Tables WHERE Allineamento = :allineamento ORDER BY ID",array("allineamento"=>$smarty->getTemplateVars('all'))) as $row){ 
     $allineamento[] = $row; 
    } 
    $smarty->assign("allineamento",$allineamento); 

前端:

{foreach $maps as $r} 
     {assign var="all" value="$r.ID"} 
     <div class="panel panel-default"> 
      <div class="panel-heading"> 
       <img src="img/locations/{$r.Immagine}" class="img-rounded"> 
       <a class="panel-title" data-toggle="collapse" data-parent="#panel-1" href="#panel-element-{$r.ID}">{$r.Nome}</a> 
      </div> 
      <div id="panel-element-{$r.ID}" class="panel-collapse collapse"> 
       {foreach $allineamento as $a} 
        <div class="panel-body">{$a.Nome}</div> 
       {/foreach} 
      </div> 
     </div> 
    {/foreach} 

輸出是這樣的(重複字段):

1. FIELD 1   
    ° SECOND FOREACH A 
    ° SECOND FOREACH B 
    ° SECOND FOREACH C 

2. FIELD 2 
    ° SECOND FOREACH A 
    ° SECOND FOREACH B 
    ° SECOND FOREACH C 

Insete (通過在後端的正確查詢不同的字段):

1. FIELD 1   
    ° SECOND FOREACH A 
    ° SECOND FOREACH B 
    ° SECOND FOREACH C 

2. FIELD 2 
    ° SECOND FOREACH D 
    ° SECOND FOREACH E 
    ° SECOND FOREACH F 

在此先感謝您。

回答

0

我可能會誤解,但我相信你必須將數據作爲數組傳遞。因此,例如,如果您的前端需要一個陣列(如$allineamento),那麼您的後端必須發送此陣列作爲您傳遞的主要$data陣列的子項。此外,您不告訴我們什麼$db是,但我假設它是一個mysqli對象,在這種情況下,您需要使用fetch_assoc()獲取數據,然後while遍歷每個。重做這樣的:

$result = $db->query("SELECT Fields FROM Tables WHERE Allineamento = :allineamento ORDER BY ID"); 


if ($result->num_rows > 0) { 
    // output data of each row 
    $allineamento = array(); 
    while($row = $result->fetch_assoc()) { 
     $allineamento[] = $row; 
    } 

    $data = array('allineamento' => $allineamento); 

    $smarty->assign($data); 
    // display it 
    $smarty->display('index.tpl'); 
} 
+0

這將返回一個空字符串...我要檢查更多 –

+0

對不起,遲到answare,它不工作 - > db->查詢來自一個類: https://github.com/WarriorDenB/PHP-MySQL-PDO-Database - 等級 真的很感謝你的幫助 –

0

我相信youre設法獲取表中的所有結果,確定allineamento列到你的價值相匹配。既然你沒有提到你的表格字段和你的表格名稱,我會改變它來匹配我認爲你想要做的事情。繼承人我會做什麼:

$db = new Db(); //this is your custom DB class 
$smarty = new Smarty(); 

$vars = array(
    "allineamento" => "something" 
); 
$results = $db->query("SELECT * FROM table_name WHERE Allineamento = :allineamento ORDER BY id", $vars); 

$data = array('allineamento' => $results); 
$smarty->assign($data); 
// display it 
$smarty->display('index.tpl'); 

一旦按照要求上述操作後,在你的模板(這我打電話index.tpl),你現在應該能夠解析:

{foreach $allineamento as $a} 
    <div class="panel-body">{$a.Nome}</div> 
{/foreach}