ตย. Codigniter : query in view + คิวรี่ซ้อนคิวรี่แบบบ้านๆ *ตัวอย่างโค้ดสามารถนำไปประยุกต์ใชักับระบบประเมินได้ เช่น การประเมินต้องมีหลายๆด้าน และแต่ละด้านก็จะมีข้อย่อยเพิ่มเข้ามาอีก
*ตารางที่แจกมี 2 ตารางด้วยกัน 1.ตาราง tbl_head เอาไว้เก็บหัวข้อ/ด้านการประเมิน และตาราง tbl_head_list เอาไว้เก็บคำถาม/ข้อย่อยของแต่ละด้าน
table
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
CREATE TABLE `tbl_head` ( `id` int(11) NOT NULL, `name` varchar(100) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO `tbl_head` (`id`, `name`) VALUES (1, 'หัวข้อการประเมิน ด้านที่ 1'), (2, 'หัวข้อการประเมิน ด้านที่ 2'); CREATE TABLE `tbl_head_list` ( `no` int(11) NOT NULL, `ref_h_id` int(11) NOT NULL, `choice_no` varchar(11) NOT NULL, `list_name` varchar(100) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO `tbl_head_list` (`no`, `ref_h_id`, `choice_no`, `list_name`) VALUES (3, 1, '1.1', 'หัวข้อย่อย หัวข้อการประเมิน 1'), (4, 1, '1.2', 'หัวข้อย่อย หัวข้อการประเมิน 1'), (5, 2, '2.1', 'หัวข้อย่อย หัวข้อการประเมิน 2'), (6, 2, '2.2', 'หัวข้อย่อย หัวข้อการประเมิน 2'); ALTER TABLE `tbl_head` ADD PRIMARY KEY (`id`); ALTER TABLE `tbl_head_list` ADD PRIMARY KEY (`no`); ALTER TABLE `tbl_head` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3; ALTER TABLE `tbl_head_list` MODIFY `no` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7; |
views *ใน Contrllers ก็เรียกใช้งาน views ตามปกติ ในตัวอย่างนี้เราจะคิวรี่ใน views เลยครับ และซ้อนคิวรี่เข้ามาอีกที
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
//main table $sql ="SELECT * FROM tbl_head"; $query = $this->db->query($sql); if($query->num_rows() > 0) { foreach($query->result() as $row){ echo '<b>'.$row->id.'. '.$row->name. '</b>'; echo '<br>'; //start query2 $ref_h_id = $row->id; //id from main table $sql2 ="SELECT * FROM tbl_head_list WHERE ref_h_id=$ref_h_id"; $query2 = $this->db->query($sql2); if($query2->num_rows() > 0){ foreach($query2->result() as $row2){ echo nbs(7).$row2->choice_no.'. '.$row2->list_name; echo '<br>'; } //foreach ($query2->result() as $row2) { } //if($query2->num_rows() > 0) { //end query2 echo '<hr>'; } //foreach ($query->result() as $row) { } //if($query->num_rows() > 0) { |
ผลการทำงาน
ลองเอาไปประยุกต์ใช้ดูครับ
*คอร์สออนไลน์สอน CodeIgniter แบบละเอียดทุกขั้นตอนคลิก
สนใจระบบนี้ inbox มาที่เพจครับ
ร่วมสนับสนุน ค่ากาแฟ ค่าโฮส devbanban.com ได้ที่
ธนาคารกรุงไทย สาขาเดอะมอลล์ท่าพระ
ชื่อบัญชี นายพิศิษฐ์ บวรเลิศสุธี เลขที่ 878-0-17747-6
————————————————————————————
ธนาคารไทยพาณิชย์ สาขามหาวิทยาลัยราชภัฏธนบุรี
ชื่อบัญชี นายพิศิษฐ์ บวรเลิศสุธี เลขที่ 406-359094-1
————————————————————————————
ธนาคารกสิกร สาขาเออร์เบิร์น สแควร์ ประชาชื่น
ชื่อบัญชี นายพิศิษฐ์บวรเลิศสุธี เลขที่ 048-1-17571-2
แฟนเพจ : https://www.facebook.com/sornwebsites/