2012-03-19 9 views
1

私は自分自身をPHPの初心者だと考えているので、この質問は誰かにとっては簡単すぎる可能性がありますが、解決方法は本当に混乱しています。私は自分の見解でデータベースから何かをループしようとしています。だから、速いやり方で私はこれを次のように解決しました:ビュー内のPHP MVCループ

私のモデルでは、ループを実行すると同時に、htmlを作成して変数に保存する関数を作成しました。それから私はコントローラからその変数を取得し、私はそれを私の視点で渡します。しかし、私のHTMLを変更したいのであれば、ビューファイルの代わりにモデル関数を入力する必要があるので、これはこれを解決する良い方法ではないようです。 ...私はその後、私のコントローラで結果を取り、ビューでそれを送るが、

function displayUsers() { 
$sql = $this->pdo->prepare('select * from user'); 
$sql->execute(); 
while($row = $sql->fetch()) 
    $results[] = $row; 
return $results; 
} 

..:

その後、私はこのようになります私のモデルで別の関数を作成しました変数から結果を抽出する方法がわかりません。

をしかし、その後、最終的にそれは私が、私は存在しない配列のキーを参照していますを意味し、オフセットundefinedに言う:私はこのような何かを行っています。誰もこの問題を解決する方法について私を助けることができますか?

+0

てみましたか? $出力変数に 'var_dump()'を実行してみてください。 –

答えて

2

適切なMVCはモデルやコントローラ内の任意の出力を持つべきではありません。

理想的には、生のデータを取得してコントローラに戻すモデルがあれば理想的です。コントローラーは、データと呼ばれる値の配列を作成できます。例えば:

コントローラ

$data['users'] = $this->MyModel->getusers(); // Getting the users from your model 
$data['posts'] = $this->MyModel->getposts(); // Getting the posts from your model 
$this->getTemplate('userdisplay', $data); // Get the template userdisplay and pass data 

これはモデルからデータを取得し、次に「データ」変数内のキーに割り当て。その後、データ変数をテンプレートに渡すことができます。次に、テンプレート$ userと$ postsの2つの変数を使用して作業します。

テンプレート内で使用するためにデータ配列を個々の変数に適切にマップする「getTemplate」関数が必要ですが、すべての表示はテンプレートに配置する必要があります。

が最後にあなたの特定の質問に答えるために、このようなものは、テンプレートで作業する必要があります:あなたは、デバッグ

if (count($users) > 0) { 
    foreach ($users as $person) { 
     echo $person['email']; 
    } 
} 
+0

これは事実です。なぜなら、最初のものがMVCルールに従っていなかったので、別の解決策を探していたからです。答えてくれてありがとう、それは私がやろうとしていたものです。それは私をたくさん助けました。 – Darko

+0

実際には、 'MyModel'インスタンスをビューに直接渡すことができます。そして、ビューはモデルからデータを取得します。それ以外の場合は、実際にMVPに近づいています。また、 'count()'のチェックは必要ありません。それはちょっと意味がない。とにかく、努力のために+1。 –

1

あなたはこれを行うことができるようになります。

foreach($output as $row) { 
    echo $row['email']; 
} 
+0

そうです、それは今働いています...私は十分な知識がないと思うので、私はそれを考えませんでした。どうもありがとうございました! – Darko

関連する問題