2017-07-10 4 views
1

私はPrestashopに取り組んでいます。データベースに作成したテーブルからデータを取得したいと思います。私は2日間それを行ってきましたが、何も動かず、私は夢中になります。ここでエラーTPL PHP Prestashop

は、私は私のProductController.phpファイルに入れたコードです:ここでは

private function GetAvailableAttributes($id_produit, $id_compte, $note) 
    {  
    global $smarty; 
$sql = 'SELECT id_produit, id_compte, note 
     FROM `'.'ps_product_avis'; 
    $ess=mysql_result($sql,0); 
$smarty->assign('contact', $ess); 
    } 

はproduct.tplファイルに入れたコードです:

<li>test :{$contact}</li> 

ここでそれが与える間違いだ:

Error message

あなたが私を救って、彼の問題はよかったから来る?

事前におねがいします。

+0

この方法はどこですか? – sarcom

+0

商品ページごとに呼び出されます。 –

+0

いいえ、私はコントローラのどのメソッドでこのメソッドを呼び出すのですか? – sarcom

答えて

0

PrestaShop 1.7(および1.5と1.6)では、グローバル変数$smartyは廃止されました。 あなたは様々なエラーをした、私はこの中で、あなたのコードを変更

修正:)

で説明しようとするでしょう:

private function GetAvailableAttributes($id_produit, $id_compte, $note) 
{ 
    /* global $smarty; DEPRECATED */ 
    $sql = 'SELECT id_produit, id_compte, note 
     FROM `'._DB_PREFIX_.'product_avis`'; 
    /* Use always _DB_PREFIX_ constant var */ 

    /* $ess=mysql_result($sql,0); Use Db class instead of this old method */ 
    $ess = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql); 

    /* $smarty->assign('contact', $ess); Deprecated use */ 
    $this->context->smarty->assign('contact', $ess); 
} 

executeS方法は、配列のセットを返すことに注意してください、また、存在する場合1つの要素が返されます。

だからあなたの配列は次のようになります。

{$contact[0]['note']} 

それはmy noteを印刷します:あなたはこのような何かを行う必要があり、単一の要素を印刷するにはSmartyので

array(
    [0] => array(
     'id_produit' => 1, 
     'id_compte' => 1, 
     'note' => 'my note' 
    ) 
); 

これはすべてです:)

+0

お返事ありがとうございました。私はすべてのあなたの兆候を理解していますが、私は同じエラーがあります:( –

+0

PHPには最適ですが、TPLに{$ contact [0] ['note']}を追加するとエラーが発生します –

+0

{$ contact | var_dump }お探しのクエリを修正する必要がありますが、id_productを追加する必要があります。そのクエリはデータベースにあるすべての製品を取得するためです。 – sarcom