0

Codeigniter を使用して、データベースの値に基づいてメニューを表示し、ユーザーにユーザー権限を付与しようとしています。しかし、それは機能していません。問題はビューファイルにある可能性があります。次の表があります。

テーブル名: module_permission

   id   user_id   delete     add    edit
   1       1        0         1      1

私のコントローラー:

$this->load->model('mod_module_permission');
$data['permit']= $this->mod_module_permission->permission($user_id);

私のモデル:

  $this->db->select('*');
    $this->db->from('module_permission');
    $this->db->where('user_id', $user_id);                                          
    $getData = $this->db->get('');
    if($getData->num_rows() > 0)
    return $getData->result_array();
    else
return null; 

私の見解 :

    if ( in_array(add=>'1',$permit)) {echo "YES";} else {echo "NO";}

ビューファイルのどの変更で問題が解決するか教えてください。

ありがとう :)

4

4 に答える 4

2

明らかに、問題はin_array()関数の使用法にあります

in_array()のマニュアルを確認してください。

bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )

最初のパラメーターは文字列などである必要があり、2番目のパラメーターは検索対象の配列です。

さらに、最初のパラメーターで誤って配列を定義しようとしている場合、配列構造ブロックは次のようになります。

array('key'=> 'value')

(文字列はコロンで囲まれています)

これを試して:

echo $tmp = ($permit == '1') ?  "YES" : "NO";

また

$arr = array('key'=>'1');
echo $tmp = (in_array($permit, $arr)) ?  "YES" : "NO";
于 2012-06-01T15:59:55.940 に答える
1

使い方がin_array()間違っています。in_array($needle, $haystack)あるタイプの$needle単一変数です。試してみてくださいin_array('1', $permit)$permit実際に配列の場合)。

もちろん、上記の答えin_array()は、あなたの問題に対する適切な解決策である場合にのみ適用されます。

于 2012-06-01T16:00:31.503 に答える
0

次の方法を使用できると思います。

 <?php foreach ($permit as $rows){ 
    if ($rows['add']==1) {echo "YES";} else {echo "NO";}
} ?>                
于 2012-06-01T17:55:43.900 に答える
0

あなたの質問を見てください。result_array() が何を返すかわからないようです。あなたの場合、それは以下を返します:

array (
    array (
        "id" => 1,
        "user_id" => 1,
        "delete" => 1,
        "add" => 1,
        "edit" => 1
    )
)

したがって、 in_array() を実行しようとすると、最も外側の配列が表示され、if ステートメントが渡されなくなります。ただし、問題の簡単な修正は、モデルを変更し、この行を次のように更新することです。

return $getData->result_array();

return $getData->result_array()->row();

次に、ビューで次の行を変更します。

if ( in_array(add=>'1',$permit)) {echo "YES";} else {echo "NO";}

if ($permit->add == 1) {echo "YES";} else {echo "NO";}

これは、コードを操作して目的の結果を得る 1 つの方法にすぎません。

于 2012-06-01T21:20:00.587 に答える