3

I know how to create table in wordpress while installing the plugin. But in opencart i have no idea. Please help to know how can i create a new table while installing the module. I have paste the test.php code that is used to install the module.

  <?php
    class ControllerModuletest extends Controller {
        private $error = array(); 

        public function index() {   
            $this->load->language('module/test');

            $this->document->setTitle($this->language->get('heading_title'));

            $this->load->model('setting/setting');

            if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) {            
                $this->model_setting_setting->editSetting('test', $this->request->post);        

                $this->session->data['success'] = $this->language->get('text_success');

                $this->redirect($this->url->link('extension/module', 'token=' . $this->session->data['token'], 'SSL'));
            }

            $this->data['heading_title'] = $this->language->get('heading_title');

            $this->data['text_enabled'] = $this->language->get('text_enabled');
            $this->data['text_disabled'] = $this->language->get('text_disabled');
            $this->data['text_content_top'] = $this->language->get('text_content_top');
            $this->data['text_content_bottom'] = $this->language->get('text_content_bottom');       
            $this->data['text_column_left'] = $this->language->get('text_column_left');
            $this->data['text_column_right'] = $this->language->get('text_column_right');

            $this->data['entry_product'] = $this->language->get('entry_product');
            $this->data['entry_limit'] = $this->language->get('entry_limit');
            $this->data['entry_image'] = $this->language->get('entry_image');
            $this->data['entry_layout'] = $this->language->get('entry_layout');
            $this->data['entry_position'] = $this->language->get('entry_position');
            $this->data['entry_status'] = $this->language->get('entry_status');
            $this->data['entry_sort_order'] = $this->language->get('entry_sort_order');

            $this->data['button_save'] = $this->language->get('button_save');
            $this->data['button_cancel'] = $this->language->get('button_cancel');
            $this->data['button_add_module'] = $this->language->get('button_add_module');
            $this->data['button_remove'] = $this->language->get('button_remove');

            if (isset($this->error['warning'])) {
                $this->data['error_warning'] = $this->error['warning'];
            } else {
                $this->data['error_warning'] = '';
            }

            if (isset($this->error['image'])) {
                $this->data['error_image'] = $this->error['image'];
            } else {
                $this->data['error_image'] = array();
            }

            $this->data['breadcrumbs'] = array();

            $this->data['breadcrumbs'][] = array(
                'text'      => $this->language->get('text_home'),
                'href'      => $this->url->link('common/home', 'token=' . $this->session->data['token'], 'SSL'),
                'separator' => false
            );

            $this->data['breadcrumbs'][] = array(
                'text'      => $this->language->get('text_module'),
                'href'      => $this->url->link('extension/module', 'token=' . $this->session->data['token'], 'SSL'),
                'separator' => ' :: '
            );

            $this->data['breadcrumbs'][] = array(
                'text'      => $this->language->get('heading_title'),
                'href'      => $this->url->link('module/test', 'token=' . $this->session->data['token'], 'SSL'),
                'separator' => ' :: '
            );

            $this->data['action'] = $this->url->link('module/test', 'token=' . $this->session->data['token'], 'SSL');

            $this->data['cancel'] = $this->url->link('extension/module', 'token=' . $this->session->data['token'], 'SSL');

            $this->data['token'] = $this->session->data['token'];

            if (isset($this->request->post['test_product'])) {
                $this->data['test_product'] = $this->request->post['test_product'];
            } else {
                $this->data['test_product'] = $this->config->get('test_product');
            }   

            $this->load->model('catalog/product');

            if (isset($this->request->post['test_product'])) {
                $products = explode(',', $this->request->post['test_product']);
            } else {        
                $products = explode(',', $this->config->get('test_product'));
            }

            $this->data['products'] = array();

            foreach ($products as $product_id) {
                $product_info = $this->model_catalog_product->getProduct($product_id);

                if ($product_info) {
                    $this->data['products'][] = array(
                        'product_id' => $product_info['product_id'],
                        'name'       => $product_info['name']
                    );
                }
            }   

            $this->data['modules'] = array();

            if (isset($this->request->post['test_module'])) {
                $this->data['modules'] = $this->request->post['test_module'];
            } elseif ($this->config->get('test_module')) { 
                $this->data['modules'] = $this->config->get('test_module');
            }       

            $this->load->model('design/layout');

            $this->data['layouts'] = $this->model_design_layout->getLayouts();

            $this->template = 'module/test.tpl';
            $this->children = array(
                'common/header',
                'common/footer'
            );

            $this->response->setOutput($this->render());
        }

        private function validate() {
            if (!$this->user->hasPermission('modify', 'module/test')) {
                $this->error['warning'] = $this->language->get('error_permission');
            }

            if (isset($this->request->post['test_module'])) {
                foreach ($this->request->post['test_module'] as $key => $value) {
                    if (!$value['image_width'] || !$value['image_height']) {
                        $this->error['image'][$key] = $this->language->get('error_image');
                    }
                }
            }

            if (!$this->error) {
                return true;
            } else {
                return false;
            }   
        }
    }
    ?>

4 Answers 4

4

You can add an install() method in your controller which will run when an install takes place. Simply execute your SQL in there

Sign up to request clarification or add additional context in comments.

1 Comment

yes i came to know about that. but i do not know how to do that. can you make that let me know
3

[09/08/2013] you can see here http://www.opencartnews.com/tutorials/creating-a-custom-page-in-opencart-final/ , hope this help also someone out there concerning this problem..

regards

Comments

3

may be this can help you to create your tables during installation of module.

http://kvcodes.com/2013/11/creating-table-while-installing-module-in-opencart/

Comments

3

Both pages mentioned above have a little mistake: They are missing ENGINE... at the end of the query, so fix:

$this->db->query("CREATE TABLE IF NOT EXISTS `" . DB_PREFIX . "table_Name` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `date_added` datetime NOT NULL,
      `status` tinyint(1) NOT NULL,
      `fieldName` text(2) NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=0;");

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.