0
CodeIgniterのアクティブレコードにクエリ文を書き込むにはどうすればよいですか?入れ子になったsqlをCodeigniterに変換する方法アクティブレコード
ここでは、コードをmenu.phpのファイルで表示します。
<?php
$m=1;
echo "<table>
<tr>
<td>No</td><td>Menu</td><td>Submenu 1</td><td>Submenu 2</td><td>Submenu 3</td>
</tr>";
// main menu
$query1 = $this->db->query("select id,title,parent,order from tbl_menu where parent='0' order by order;");
foreach($query1->result_array() as $r) {
echo "<tr>
<td>$m</td><td>$row[title]</td><td>-</td><td>-</td><td>-</td>
</tr>";
$m++;
$s1=1;
// submenu 1
$query2 = $this->db->query("select * from tbl_menu where parent='$row[id]' order by order;");
foreach($query2->result_array() as $r) {
echo "<tr>
<td></td><td >$s1</td><td>$r[title]</td><td>-</td><td>-</td>
</tr>";
$s1++;
$s2=1;
// submenu 2
$query3 = $this->db->query("select * from tbl_menu where parent='$r[id]' order by order;");
foreach($query3->result_array() as $r2) {
echo "<tr>
<td></td><td></td><td >$s2</td><td>$r2[title]</td><td>-</td>
</tr>";
$s2++;
$s3=1;
// submenu 3
$query4 = $this->db->query("select * from tbl_menu where parent='$r2[id]' order by order;");
foreach($query4->result_array() as $r3) {
echo "<tr>
<td></td><td></td><td></td><td>$s3</td><td>$r3[title]</td>
</tr>";
$s3++;
} // submenu 3
} // submenu 2
} // submenu 1
} // main menu
echo"</table>";
?>
を(このコードを実行することができます)私は...これに変更(これは誤りである)
<?php
$m=1;
echo "<table>
<tr>
<td>No</td><td>Menu</td><td>Submenu 1</td><td>Submenu 2</td><td>Submenu 3</td>
</tr>";
// main menu
foreach($query1 as $r) {
echo "<tr>
<td>$m</td><td>$row[title]</td><td>-</td><td>-</td><td>-</td>
</tr>";
$m++;
$s1=1;
// submenu 1
foreach($query2 as $r) {
echo "<tr>
<td></td><td >$s1</td><td>$r[title]</td><td>-</td><td>-</td>
</tr>";
$s1++;
$s2=1;
// submenu 2
foreach($query3 as $r2) {
echo "<tr>
<td></td><td></td><td >$s2</td><td>$r2[title]</td><td>-</td>
</tr>";
$s2++;
$s3=1;
// submenu 3
foreach($query4 as $r3) {
echo "<tr>
<td></td><td></td><td></td><td>$s3</td><td>$r3[title]</td>
</tr>";
$s3++;
} // submenu 3
} // submenu 2
} // submenu 1
} // main menu
echo"</table>";
?>
ここMenu_model.phpファイル内のモデルコードがあります。ここで
<?php
class Menu_model extends CI_Model {
public function menu_q1() {
$this->db->select('*')->from('tbl_menu')->where('parent','0')->order_by('order', 'ASC');
$query1 = $this->db->get();
return $query1->result_array();
}
public function menu_q2() {
$this->db->select('*')->from('tbl_menu')->where('parent',$row['id'])->order_by('order', 'ASC');
$query2 = $this->db->get();
return $query2->result_array();
}
public function menu_q3() {
$this->db->select('*')->from('tbl_menu')->where('parent',$r['id'])->order_by('order', 'ASC');
$query3 = $this->db->get();
return $query3->result_array();
}
public function menu_q4() {
$this->db->select('*')->from('tbl_menu')->where('parent',$r2['id'])->order_by('order', 'ASC');
$query4 = $this->db->get();
return $query4->result_array();
}
}
?>
コントローラー・コードは、Menu_controller.phpファイルです。
<?php
Class Menu_controller extends CI_Controller {
function __construct(){
parent::__construct();
$this->load->model('menu_model'); //Load profil_model
}
public function profil() {
$query1 = $this->profil_model->menu_q1();
$query2 = $this->profil_model->menu_q2();
$query3 = $this->profil_model->menu_q3();
$query4 = $this->profil_model->menu_q4();
$this->load->view('profil', array('query1' => $query1,'query2' => $query2,'query3' => $query3,'query4' => $query4));
}
?>
これはテーブル
-------------------------------------------------------- No | Menu | Submenu 1 | Submenu 2 | Submenu 3 -------------------------------------------------------- $m | $row[title] | - | - | - | $s1| $r[title] | - | - | | $s2| $r2[title] | - | | | $s3| $r3[title] --------------------------------------------------------
しかし、この文でエラーを取得している:
1)( '親'、$行[ 'ID'])
2 )ここで( 'parent'、$ r ['id'])
3)ここで( 'parent'、$ r2 ['id'])
デバッグヘルプ( "**なぜこのコードは動作しないのですか?**")には、目的の動作、特定の問題またはエラー、および質問自体に再現するのに必要な最短コードが含まれている必要があります。明確な問題文がない質問は、他の読者にとって有用ではありません。参照:[最小限で完全で検証可能なサンプルの作成方法](http://stackoverflow.com/help/mcve) –
スニペットはHTML/JS/Javascriptの値しか持っていないので、コードスニペットに変更しました。実際にはPHPであるため、コードをhtmlとしてマークするヒントも削除しました。 – mikek3332002