牧尾竜一
ryuic****@jom*****
2008年 7月 11日 (金) 18:10:12 JST
JOMRです。 kunitsujiさん、ありがとうございます。 以下のものでテストしてみました(custmer→customerと少しだけかきかえました。) 少し長くなりますが、以下の内容のもので行いました、 <?php class Customer extends Controller { var $limit = 5; function Customer() { parent::Controller(); $this->load->helper(array('form', 'url')); $this->load->database(); } function index($offset = '') { $offset = (int) $offset; $this->db->order_by('cu_id', 'desc'); $data['query'] = $this->db->get('customer', $this->limit, $offset); $this->load->library('pagination'); $config['base_url'] = $this->config->site_url('/customer/index/'); $config['total_rows'] = $this->db->count_all('customer'); $config['per_page'] = $this->limit; $config['first_link'] = '«最初'; $config['last_link'] = '最後»'; $this->pagination->initialize($config); $data['pagination'] = $this->pagination->create_links(); $this->load->view('customer_show', $data); } function post() { $this->_set_validation(); $this->_show_post_page(); } function _set_validation() { $this->load->library('validation'); $fields['cu_name'] = '顧客名'; $fields['cu_kana'] = '顧客名(カナ)'; $fields['cu_tel'] = '連絡先'; $fields['cu_fax'] = 'FAX番号'; $fields['cu_mail'] = 'メールアドレス'; $fields['biko'] = '備考'; $fields['captcha'] = '画像認証コード'; $fields['key'] = 'key'; $this->validation->set_fields($fields); $rules['cu_name'] = 'trim|required|max_length[32]'; $rules['cu_kana'] = 'trim|max_length[32]'; $rules['cu_tel'] = 'trim|max_length[16]'; $rules['cu_fax'] = 'trim|max_length[16]'; $rules['cu_mail'] = 'trim|valid_email|max_length[64]'; $rules['biko'] = 'trim|max_length[200]'; $rules['captcha'] = 'trim|required|alpha_numeric|callback_captcha_check'; $rules['key'] = 'numeric'; $this->validation->set_rules($rules); } function _show_post_page() { $this->load->helper('string'); $this->load->plugin('captcha'); $vals = array( 'word' => random_string('numeric', 4), 'img_path' => './captcha/', 'img_url' => base_url() . 'captcha/' ); $cap = create_captcha($vals); $data = array( 'captcha_id' => '', 'captcha_time' => $cap['time'], 'word' => $cap['word'] ); $this->db->insert('captcha', $data); $key = $this->db->insert_id(); $data['image'] = $cap['image']; $data['key'] = $key; $data['cu_name'] = $this->validation->cu_name; $data['cu_kana'] = $this->validation->cu_kana; $data['cu_tel'] = $this->validation->cu_tel; $data['cu_fax'] = $this->validation->cu_fax; $data['cu_mail'] = $this->validation->cu_mail; $data['biko'] = $this->validation->biko; $this->load->view('customer_post', $data); } function captcha_check($str) { $expiration = time() - 7200; //有効期限2時間 $this->db->delete('captcha', array('captcha_time <' => $expiration)); $this->db->select("COUNT(*) AS count"); $this->db->where('word', $str); $this->db->where('captcha_id', $this->input->post('key')); $this->db->where('captcha_time >', $expiration); $query = $this->db->get('captcha'); $row = $query->row(); if ($row->count == 0) { $this->validation->set_message('captcha_check', '画像認証コードが一致 しません'); return FALSE; } else { return TRUE; } } function confirm() { $this->_set_validation(); if ($this->validation->run() == FALSE) { $this->_show_post_page(); } else { $data['cu_name'] = $this->validation->cu_name; $data['cu_kana'] = $this->validation->cu_kana; $data['cu_tel'] = $this->validation->cu_tel; $data['cu_fax'] = $this->validation->cu_fax; $data['cu_mail'] = $this->validation->cu_mail; $data['biko'] = $this->validation->biko; $data['key'] = $this->validation->key; $data['captcha'] = $this->validation->captcha; $this->load->view('customer_confirm', $data); } } function insert() { $this->_set_validation(); if ($this->validation->run() == FALSE) { $this->_show_post_page(); } else { $data['cu_name'] = $this->validation->cu_name; $data['cu_kana'] = $this->validation->cu_kana; $data['cu_tel'] = $this->validation->cu_tel; $data['cu_fax'] = $this->validation->cu_fax; $data['cu_mail'] = $this->validation->cu_mail; $data['biko'] = $this->validation->biko; $this->db->insert('customer', $data); redirect('/customer'); } } function delete($cu_id = '') { $cu_id = (int) $cu_id; $delete = (int) $this->input->post('delete'); $this->db->where('cu_id', $cu_id); $query = $this->db->get('customer'); if ($query->num_rows() == 1) { if ($delete == 1) { $this->db->where('cu_id', $cu_id); $this->db->delete('customer'); $this->load->view('customer_delete_finished'); } else { $row = $query->row(); $data['cu_id'] = $row->cu_id; $data['cu_name'] = $row->cu_name; $data['cu_kana'] = $row->cu_kana; $data['cu_tel'] = $row->cu_tel; $data['cu_fax'] = $row->cu_fax; $data['cu_mail'] = $row->cu_mail; $data['biko'] = $row->biko; $data['datetime'] = $row->datetime; $this->load->view('customer_delete_confirm', $data); } } else { $this->load->view('customer_delete_error'); } } function edit($cu_id = '') { //まず入力をさせる $cu_id = intval($cu_id); $this->db->where(array('cu_id'=>($cu_id))); $query = $this->db->get('customer'); if ($query) { $row = $query->row(); $data['cu_id'] = $row->cu_id; $data['cu_name'] = $row->cu_name; $data['cu_kana'] = $row->cu_kana; $data['cu_tel'] = $row->cu_tel; $data['cu_fax'] = $row->cu_fax; $data['cu_mail'] = $row->cu_mail; $data['biko'] = $row->biko; $data['datetime'] = $row->datetime; $data['msg'] = '入力してください。'; $data['err_flag'] = FALSE; //エラーはない } else { //指定のIDが見つからなかった場合 $data['msg'] = '<span style="color:red">指定のIDではデータが 見つかりませんでした。</span>'; $data['err_flag'] = TRUE; //エラーとする } $this->load->view('customer_edit', $data); } //edit_confirm function edit_confirm() { if ($this->input->post('submit') == '戻る') { //入力画面へ戻る $cu_id = intval($cu_id); $this->db->where(array('cu_id'=>($cu_id))); $query = $this->db->get('customer'); if ($query) { $row = $query->row(); $data['cu_id'] = $row->cu_id; $data['cu_name'] = $row->cu_name; $data['cu_kana'] = $row->cu_kana; $data['cu_tel'] = $row->cu_tel; $data['cu_fax'] = $row->cu_fax; $data['cu_mail'] = $row->cu_mail; $data['biko'] = $row->biko; $data['datetime'] = $row->datetime; $data['msg'] = '入力してください。'; $data['err_flag'] = FALSE; //エラーはない } else { //指定のIDが見つからなかった場合 $data['msg'] = '<span style="color:red">指定のIDではデー タが見つかりませんでした。</span>'; $data['err_flag'] = TRUE; //エラーとする } $this->load->view('customer_edit', $data); } else { $data = array( 'cu_id' => $this->input->post('cu_id'), 'cu_name' => $this->input->post('cu_name'), 'cu_kana' => $this->input->post('cu_kana'), 'cu_tel' => $this->input->post('cu_tel'), 'cu_fax' => $this->input->post('cu_fax'), 'cu_mail' => $this->input->post('cu_mail'), 'biko' => $this->input->post('biko'), 'datetime' => date('Y-m-d H:i:s', time()),//更新日付に変 えてみる ); $this->load->view('customer_edit_confirm', $data); } } function edit_post() { $where = array('cu_id' => $this->input->post('cu_id')); $data = array( 'cu_id' => $this->input->post('cu_id'), 'cu_name' => $this->input->post('cu_name'), 'cu_kana' => $this->input->post('cu_kana'), 'cu_tel' => $this->input->post('cu_tel'), 'cu_fax' => $this->input->post('cu_fax'), 'cu_mail' => $this->input->post('cu_mail'), 'biko' => $this->input->post('biko'), 'datetime' => date('Y-m-d H:i:s', time()),//更新日付に変 えてみる ); $this->db->update('customer', $data, $where); redirect('customer'); } } ?> ちなみにテーブル内容はこちらです CREATE TABLE IF NOT EXISTS `customer` ( `cu_id` int(12) NOT NULL auto_increment COMMENT '顧客ID', `cu_name` varchar(64) default NULL COMMENT '顧客名', `cu_kana` varchar(64) default NULL COMMENT '顧客名(カナ)', `cu_tel` varchar(16) default NULL COMMENT '電話番号', `cu_fax` varchar(16) default NULL COMMENT 'FAX番号', `cu_mail` varchar(128) default NULL COMMENT 'メールアドレス', `biko` mediumtext COMMENT '備考', `datetime` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP COMMENT '登録日', PRIMARY KEY (`cu_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=46 ; err_flag と msg というのが良くわからないのですが、これも追加しないと いけないのでしょうか? 今現在は一覧から編集ボタンをクリックすると A PHP Error was encountered Severity: Notice Message: Undefined variable: msg Filename: views/customer_edit_confirm.php Line Number: 18 と A PHP Error was encountered Severity: Notice Message: Undefined variable: err_flag Filename: views/customer_edit_confirm.php Line Number: 21 といったエラーが返されます。 先のフィールドがないためだと思うのですが、どのようなフィールドを追加した らいいのでしょうか?