2011-01-08 17 views
0

私はこのサイトとPHPを学習するのが初めてです。私は電子商取引のウェブサイトを作成するために、初心者から専門家まで、PHP5とMySQLの電子商取引を開始するテキストをDarieとBucicaが使用しています。私が今までに遭遇したエラーのいくつかは、更新されたデータベース(MDB2)に起因するものと信じています。私はこれを除いてすべてのエラーを乗り越えることができました。このコードは、Smartyを使用してデータベースから部門リストを取得することになっています。PHPとSmartyエラー:非オブジェクトのプロパティを取得しようとしています

最後の行で「非オブジェクトのプロパティを取得しようとしています」というエラーが表示されます。私はis_array()関数と関係があると感じています。

<?php $_smarty_tpl->tpl_vars["load_departments_list"] = new Smarty_variable("departments_list", null, null);?> 
    <table border="0" cellpadding="0" cellspacing="1" width="200"> 
    <tr> 
     <td class="DepartmentListHead"> Choose a Sport </td> 
    </tr> 
    <tr> 
     <td class="DepartmentListContent"> 
     <?php unset($_smarty_tpl->tpl_vars['smarty']->value['section']['i']); 
    $_smarty_tpl->tpl_vars['smarty']->value['section']['i']['name'] = 'i'; 
    $_smarty_tpl->tpl_vars['smarty']->value['section']['i']['loop'] = is_array($_loop=$_smarty_tpl->getVariable('departments_list')->value->mDepartments) ? count($_loop) : max(0, (int)$_loop); unset($_loop); 

回答が必要な場合は、私にお知らせください。できるだけわかりやすいようにし、可能であれば私のコードを使って解決策を示してください。ご協力いただきありがとうございます! -Drew

+0

これは本のコードですか? 'unset($ _ smarty_tpl-> tpl_vars ['smarty'] - > value ['section'] ['i']);'最後の2行でアクセスしようとしている変数を削除します。 – thetaiko

+0

私はこのセクションが.tplファイルからコンパイルされたものであり、本の中には直接含まれていないと思います。とにかく、それは個人的に私によって追加されませんでした。それを指摘してくれてありがとう。私はそれを見てみましょう! – DrewInPB

答えて

3

あなたのin_array機能内に$_smarty_tpl->getVariable('departments_list')->value->mDepartmentsを使用しています。スマートオブジェクトにdepartments_listを割り当てていることを確認してください。値がどのようなタイプを教えてくれます

var_dump($_smarty_tpl->getVariable('departments_list'), $_smarty_tpl->getVariable('departments_list'))->value, 
$_smarty_tpl->getVariable('departments_list'))->value->mDepartments); 

か、その

$departments_list = $_smarty_tpl->getVariable('departments_list'); 
if (is_object($departments_list) && is_object($departments_list->value) 
     && $departments_list->value->mDepartments) { 
    $_smarty_tpl->tpl_vars['smarty']->value['section']['i']['loop'] = is_array($_loop=$_smarty_tpl->getVariable('departments_list')->value->mDepartments) ? count($_loop) : max(0, (int)$_loop); unset($_loop); 
} 
+0

ダンケ!それは働いたようです。次のエラーに!早速のお返事ありがとうございます! – DrewInPB

0

var_dump()を使用してタイプのため、各変数をチェックしてみ前にチェックを追加します。問題は実際にはis_array関数にはありませんが、実際には$_smarty_tpl->getVariable('departments_list'))->value->mDepartmentsでは、getVariable()メソッドの戻り値とgetVariable()->valueの2つの場合にオブジェクトプロパティにアクセスしようとしているので、そのうちの1つが問題になります。

+0

ありがとう!私はまだそのコマンドに精通していない! – DrewInPB

関連する問題