コード例 #1
0
 function fetch_record($sql, $obj_filter = '', $cmd_msg = '', $reset = false)
 {
     $my_sec = new OrSec();
     if (get_class($obj_filter) == 'OrSql') {
         $cmd_filter = $obj_filter->OP_[cmd_filter]->get();
         $cmd_group_filter = $obj_filter->OP_[cmd_group_filter]->get();
         $cmd_order = $obj_filter->OP_[cmd_order]->get();
     } else {
         die('fetch_record filter use OrSql Object!');
     }
     $sql_cmd = new OrSql();
     $val_ = new OrSysvalue();
     $sql_cmd->set_cmd_sql($sql);
     $db_event = $val_->db_event;
     if ($db_event[cmd_filter] != "") {
         $this->OP_[cmd_filter]->set(str_replace("#", "'", $db_event[cmd_filter]));
     }
     if ($db_event[cmd_group_filter] != "") {
         $this->OP_[cmd_group_filter]->set(str_replace("#", "'", $db_event[cmd_group_filter]));
     }
     if ($db_event[cmd_msg] != "") {
         $this->OP_[cmd_msg]->set(str_replace("#", "'", $db_event[cmd_msg]));
     }
     if ($db_event[cmd_order] != "") {
         $this->OP_[cmd_order]->set(str_replace("#", "'", $db_event[cmd_order]));
     }
     if ($db_event[cur_page] > 0) {
         if ($db_event[go_page] > 0 and $db_event[go_page] != $db_event[cur_page]) {
             $this->OP_[cur_page]->set($db_event[go_page]);
             $db_event[navigator] = '';
         } else {
             $this->OP_[cur_page]->set($db_event[cur_page]);
         }
     }
     /*ตรวจสอบเหตุการณ์ On Load*/
     if ($db_event[on_load] == '') {
         $EV_[EV_db_event] = $db_event;
         $this->OE_on_load($EV_);
         $this->OP_[on_load]->set(1);
     } else {
         $this->OP_[on_load]->set($db_event[on_load] + 1);
     }
     $evt_on_load = new OrFieldHidden("evt_form_db[on_load]");
     $this->set_body($evt_on_load->get_tag($this->OP_[on_load]->get()));
     /***************************/
     if ($db_event[total_page] > 0) {
         $this->OP_[total_page]->set($db_event[total_page]);
         $this->OP_[total_row]->set($db_event[total_row]);
     }
     $txt_cmd_filter = new OrFieldHidden("evt_form_db[cmd_filter]");
     $txt_cmd_group_filter = new OrFieldHidden("evt_form_db[cmd_group_filter]");
     $txt_cmd_order = new OrFieldHidden("evt_form_db[cmd_order]");
     $txt_cmd_msg = new OrFieldHidden("evt_form_db[cmd_msg]");
     if ($reset) {
         $this->OP_[cmd_filter]->set("");
         $this->OP_[cmd_group_filter]->set("");
         $this->OP_[cmd_order]->set("");
         $this->OP_[cmd_msg]->set("");
         $this->OP_[total_page]->set(1);
         $this->OP_[total_row]->set(0);
     } else {
         if ($cmd_filter != '' or $cmd_order != '' or $cmd_group_filter != '') {
             $this->OP_[cmd_filter]->set($cmd_filter);
             $this->set_body($txt_cmd_filter->get_tag(str_replace("'", "#", $this->OP_[cmd_filter]->get())));
             $this->OP_[cmd_group_filter]->set($cmd_group_filter);
             $this->set_body($txt_cmd_group_filter->get_tag(str_replace("'", "#", $this->OP_[cmd_group_filter]->get())));
             $this->OP_[cmd_order]->set($cmd_order);
             $this->set_body($txt_cmd_order->get_tag(str_replace("'", "#", $this->OP_[cmd_order]->get())));
             $this->OP_[cmd_msg]->set($cmd_msg);
             $this->set_body($txt_cmd_msg->get_tag(str_replace("'", "#", $this->OP_[cmd_msg]->get())));
             $db_event[navigator] = 'First';
             $this->OP_[total_page]->set(1);
             $this->OP_[total_row]->set(0);
         } else {
             $this->set_body($txt_cmd_filter->get_tag(str_replace("'", "#", $this->OP_[cmd_filter]->get())));
             $this->set_body($txt_cmd_group_filter->get_tag(str_replace("'", "#", $this->OP_[cmd_group_filter]->get())));
             $this->set_body($txt_cmd_order->get_tag(str_replace("'", "#", $this->OP_[cmd_order]->get())));
             $this->set_body($txt_cmd_msg->get_tag(str_replace("'", "#", $this->OP_[cmd_msg]->get())));
         }
     }
     if ($db_event[row_page] != '') {
         $this->OP_[row_per_page]->set($db_event[row_page]);
     }
     if ($db_event[chg_row] != $db_event[row_page]) {
         if ($db_event[chg_row] != '') {
             $this->OP_[row_per_page]->set($db_event[chg_row]);
         }
         $db_event[navigator] = 'First';
         $this->OP_[total_page]->set(1);
         $this->OP_[total_row]->set(0);
     }
     /*เหตุการณ์การกดปุ่มต่างๆ*/
     $this->OP_[on_click]->set($db_event[navigator]);
     switch ($db_event[navigator]) {
         case "First":
             $this->OP_[go_page]->set(1);
             break;
         case "Next":
             if ($this->OP_[cur_page]->get() < $this->OP_[total_page]->get()) {
                 $this->OP_[go_page]->set($this->OP_[cur_page]->get() + 1);
             } else {
                 $this->OP_[go_page]->set($this->OP_[cur_page]->get());
             }
             break;
         case "Prev":
             if ($this->OP_[cur_page]->get() > 1) {
                 $this->OP_[go_page]->set($this->OP_[cur_page]->get() - 1);
             }
             break;
         case "Last":
             $this->OP_[go_page]->set($this->OP_[total_page]->get());
             $this->OP_[total_page]->set(0);
             break;
         default:
             if ($this->OP_[cur_page]->get() != '') {
                 $this->OP_[go_page]->set($this->OP_[cur_page]->get());
             } else {
                 $this->OP_[go_page]->set(1);
             }
     }
     $this->OP_[cmd_limit]->set(" LIMIT " . ($this->OP_[go_page]->get() - 1) * $this->OP_[row_per_page]->get() . "," . $this->OP_[row_per_page]->get());
     /*
      * สร้างคำสั่ง Where
      */
     if ($this->OP_[cmd_filter]->get() != "") {
         $sql_cmd->set_cmd_where($this->OP_[cmd_filter]->get());
     }
     /*
      * สร้างคำสั่ง Having กรณีมี Group By
      */
     if ($this->OP_[cmd_group_filter]->get() != "") {
         $sql_cmd->set_cmd_having($this->OP_[cmd_group_filter]->get());
     }
     debug_mode(__FILE__, __LINE__, $sql_cmd->get_cmd_sql(), 'fetch_record : $sql_cmd');
     $this->set_total_controls($sql_cmd->get_cmd_sql());
     if ($this->OP_[total_page]->get() <= 1) {
         /*จะต้องไม่มีคำสั่ง ORDER ถึงจะมีค่า Total page ไม่ทราบสาเหตุ สุชาติ บุญหชัยรัตน์ 13/4/2547*/
         $count_sql = '';
         if ($sql_cmd->OP_[cmd_group]->get() == '') {
             /*ต้องไม่มีคำสั่ง Group By จึงสามารถใช้คำสีง Count ได้ สุชาติ บุญหชัยรัตน์ 19 /4/2547*/
             $count_sql = 'SELECT count(*) AS `total_row` ';
             $count_sql .= ' FROM ' . $sql_cmd->OP_[cmd_from]->get();
             if ($sql_cmd->OP_[cmd_where]->get() != '') {
                 $count_sql .= ' WHERE ' . $sql_cmd->OP_[cmd_where]->get();
             }
         }
         $this->set_total_page($count_sql, $sql_cmd->get_cmd_sql());
     }
     if ($this->OP_[cmd_order]->get() != "") {
         $sql_cmd->set_cmd_order($this->OP_[cmd_order]->get(), '');
         //กำหนดการเรียงเป็น '' เพื่อไม่ให้เกิดคำสั่งเรียงซัำ
     }
     debug_mode(__FILE__, __LINE__, $sql_cmd->get_cmd_sql(), 'function fetch_record');
     $this->db->get_query($sql_cmd->get_cmd_sql() . $this->OP_[cmd_limit]->get());
     if ($this->db->is_error()) {
         die("<b>ERROR</b> " . __FILE__ . " | " . __LINE__ . " | Description : " . $this->db->show_error());
     }
     $this->OP_[sql_cmd]->set($sql_cmd);
     //Object SQL หลังการประมวล สุชาติ บุญหชัยรัตน์ 11/5/2547
     //$this->form_fields = $this->get_form_fields();
     return null;
 }