Codeigniterでのviewへの受け渡し
Codeigniterを使用しています。
databaseからデータを取得するまでは出来るのですが、
viewへの受け渡しと表示がうまくいきません。
データベースへの接続は出来ていますので、単にソースの不備
と思いますが、どこが悪いのかよく分かりません。ご教授頂きたく
お願いいたします。
現在の仕様
【controllers/tel2.php】
<?php
class Tel2 extends CI_Controller{
function index()
{
// データベースを初期化(データの取得:ActiveRecord)
$this->load->database();
// SQLの実行
$this->db->select('id, prefecture_name,prefecture_name_en');
$query = $this->db->get('prefectures');
// 結果を表示
foreach( $query->result() as $row ){
$data['prefectures'] = array('id, prefecture_name,prefecture_name_en');
$this->load->view('tel2_view', $data);
}
}
}
?>
【views/tel2_view.php】
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>tel2</title>
</head>
<body>
<table width="700" border="1" cellspacing="2" cellpadding="2">
<tr>
<th scope="col">id</th>
<th scope="col">県名</th>
<th scope="col">en</th>
</tr>
<tr>
<td><?=$row['id']?></td>
<td><?=$row['prefecture_name']?></td>
<td><?=$row['prefecture_name_en']?></td>
</tr>
</table>
</body>
</html>
としてみました。
フレームは表示され、データの数だけ繰り返されているのですが、
肝心なデータの内容が下記のようになります。
【id欄】
A PHP Error was encountered
Severity: Notice
Message: Undefined variable: row
Filename: views/tel2_view.php
Line Number: 18
【prefecture_name欄】
Severity: Notice
Message: Undefined variable: row
Filename: views/tel2_view.php
Line Number: 19
【prefecture_name_en欄】
Severity: Notice
Message: Undefined variable: row
Filename: views/tel2_view.php
Line Number: 20
上記がデータの数だけ繰り返されます。(内容に変化なし)
database接続は下記となります。
(xamppのためパスワードは設定していません)
$active_group = 'default';
$active_record = TRUE;
$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'root';
$db['default']['password'] = '';
$db['default']['database'] = 'tel';
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = FALSE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;
いろいろ弄ってみたのですが、うまくいきません。
controllerを下記のようにするとデータが表示されますので、データの取得までは
出来ているようです。
viewへの受け渡しでミスがあるのだと思います。
<?
class Tel2 extends CI_Controller{
function index()
{
// データベースを初期化(データの取得:ActiveRecord)
$this->load->database();
// SQLの実行
$this->db->select('id, prefecture_name,prefecture_name_en');
$query = $this->db->get('prefectures');
// 結果を表示
foreach( $query->result() as $row ){
echo $row->id;
echo $row->prefecture_name;
echo $row->prefecture_name_en;
}
}
}
いろいろ試してみたのですがうまくいきません。
お手数ですがどこに間違いがあるのかご教授願います。
環境は以下のとおりです。
xampp for windowsXP
codeigniter2.0.3
Apache/2.2.21 (Win32)
PHP/5.3.8
mysql5.5.16
お礼
回答ありがとうございます。 大変参考になりました。