tashworth19191
tashworth19191

Reputation: 27

Insert form data into database with CodeIgniter

Here is what I am having trouble with, I am using HMVC and I have so far:

routes.php

$route['create_qso'] = 'qso/create_qso';
$route['insert_qso'] = 'qso/insert_qso';

Qso_model.php MODEL

function add_qso($data){

     $data = array(
        'user_id' => $this->input->post('user_id'),
        'date' => $this->input->post('date'),
        'time_in_field' => $this->input->post('time-in-field'),
        'discipline_id' => $this->input->post('discipline'),
        'shift_id' => $this->input->post('shift'),
        'type_id' => $this->input->post('type'),
        'at_risk_category_id' => $this->input->post('at-risk'),
        'at_risk_details' => $this->input->post('at-risk-details'),
        'severity_level_id' => $this->input->post('severity-level'));



    $this->db->insert('qso', $data);}

create_qso.php VIEW

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

// logic for form begins    
    $user_id_val = $this->session->userdata('user_id');
    $user_username_val = $this->session->userdata('username');

    //  discipline dropdown
    $disciplines = $this->db->query('SELECT DISTINCT discipline_desc FROM discipline');
    $disciplinedropdowns = $disciplines->result();
    foreach ($disciplinedropdowns as $disciplinedropdown){
        $disciplinedropdownlist[$disciplinedropdown->discipline_desc] = $disciplinedropdown->discipline_desc;
    }
    $finaldisciplinedropdown = $disciplinedropdownlist;

    // shift dropdown
    $shifts = $this->db->query('SELECT DISTINCT shift FROM shift');
    $shiftdropdowns = $shifts->result();
    foreach ($shiftdropdowns as $shiftdropdown){
        $shiftdropdownlist[$shiftdropdown->shift] = $shiftdropdown->shift;
    }
    $finalshiftdropdown = $shiftdropdownlist;

    // Type dropdown
    $types = $this->db->query('SELECT DISTINCT type FROM type');
    $typedropdowns = $types->result();
    foreach ($typedropdowns as $typedropdown){
        $typedropdownlist[$typedropdown->type] = $typedropdown->type;
    }
    $finaltypedropdown = $typedropdownlist;

    // At Risk dropdown
    $atriskcats = $this->db->query('SELECT DISTINCT at_risk_cat FROM at_risk_cat');
    $atriskcatdropdowns = $atriskcats->result();
    foreach ($atriskcatdropdowns as $atriskcatdropdown){
        $atriskcatdropdownlist[$atriskcatdropdown->at_risk_cat] =   $atriskcatdropdown->at_risk_cat;
    }
    $finalatriskdropdown = $atriskcatdropdownlist;

    // severity_level dropdown
    $severity_levels = $this->db->query('SELECT DISTINCT severity_level FROM severity_level');
    $severity_leveldropdowns = $severity_levels->result();
    foreach ($severity_leveldropdowns as $severity_leveldropdown){
        $severity_leveldropdownlist[$severity_leveldropdown->severity_level] = $severity_leveldropdown->severity_level;
    }
    $finalseverity_leveldropdown = $severity_leveldropdownlist;?>

<div class="text-left">
<h1 class="fg-primary f900 text-uppercase">Create QSO</h1>

</div>
<div id="add_qso_form">
<?php   echo form_open('create_qso/insert_qso');   
echo form_hidden('user_id', $user_id_val);  // hiding user id
$date = date("Y-m-d H:i:s");  // getting date in mySQL format
?>
<div class="col-sm-6">    
    <div class="form-group">  <!-- adding read only date -->
        <label for="date">Date</label>
        <?php 
        $datedata = array(
            'name'          => 'date',
            'id'            => 'date',
            'value'         => $date,
            'type'          => 'datetime',
            'class'         => 'form-control',
            'readonly'      =>  'true'
        );
        echo form_input($datedata); 
        ?>
    </div>
    <div class="form-group">   <!--Adding minutes observed-->
        <label for="time-in-field">Minutes Observed</label>
        <?php 
        $timeinfield = array(
            'name'          => 'time-in-field',
            'id'            => 'time-in-field',
            'value'         => '',
            'type'          => 'number',
            'min'           => '1',
            'max'           => '480',
            'class'         => 'form-control'
        );
        echo form_input($timeinfield); 
        ?>
    </div>
    <div class="form-group">   <!--Adding discipline-->
        <label for="discipline">Discipline</label>
        <?php
        $discipline_extras = array(
            'class' => 'form-control'
        );
        echo form_dropdown('discipline',$finaldisciplinedropdown,'',$discipline_extras); 
        ?>
    </div>
    <div class="form-group">   <!--Adding shift-->
        <label for="shift">Shift</label>
        <?php
        $shift_extras = array(
            'class' => 'form-control'
        );
        echo form_dropdown('shift',$finalshiftdropdown,'',$shift_extras); 
        ?>
    </div>
    <div class="form-group"> <!--Adding type-->
        <label for="type">Type</label>
        <?php
        $type_extras = array(
            'class' => 'form-control'
        );
        echo form_dropdown('type',$finaltypedropdown,'',$type_extras); 
        ?>

    </div>
</div>
<div class="col-sm-6">
    <div class="form-group"> <!--Adding At Risk Category-->
        <label for="type">At Risk Category</label>
        <?php
        $at_risk_cat_extras = array(
            'class' => 'form-control'
        );
        echo form_dropdown('at-risk',$finalatriskdropdown,'',$at_risk_cat_extras); 
        ?>

    </div>
    <div class="form-group">   <!--Adding At Risk Details-->
        <label for="time-in-field">At Risk Details</label>
        <?php 
        $timeinfield = array(
            'name'          => 'at-risk-details',
            'id'            => 'at-risk-details',
            'value'         => '',
            'type'          => 'text',
            'class'         => 'form-control'
        );
        echo form_textarea($timeinfield); 
        ?>
    </div>
    <div class="form-group"> <!--Adding severity_level-->
        <label for="severity_level">severity_level</label>
        <?php
        $severity_level_extras = array(
            'class' => 'form-control'
        );
        echo form_dropdown('severity-level',$finalseverity_leveldropdown,'',$severity_level_extras); ?>

    </div>

</div>
<div class="text-center">
<?php
    echo form_submit('submit', 'Submit QSO');
    echo form_open('create_qso/insert_qso');
?>

</div>

</div>

Create_qso.php CONTROLLER

class Create_qso extends Site_Controller 
{

public function __construct()
{
    parent::__construct();
    //Transfers data to model
    $this->load->model('Qso_model'); // load the model

} 

public function index() {  
    //  Quick Page setup is the same as $this->load->view() method used in CI
    $this->quick_page_setup(Settings_model::$db_config['active_theme'], 'main', 'Create QSO', 'create_qso', 'header', 'footer');  

    // Setting values for table coloums

}
public function insert_qso() {

    $this->Qso_model->add_qso();
    $this->load->view('qso/insert_qso');

}
}

When I run this, the form displays great and I can enter data, but when I submit the form I get this:

http://versumgas.com/error_images/form-error.jpg

I can't figure out how to get from the form to insert data into my qso table on my database?

Upvotes: 0

Views: 968

Answers (1)

Vương Nguyễn Minh
Vương Nguyễn Minh

Reputation: 69

What type of HMVC did you use?

First, this my HMVC folders: HMVC folder

I don't need to use $route['method'] to config url or view. I just use $this->load->view('account',$this->_data); in when I want to load view, and account.php will be place in application\modules\account\views

If it cannot connect and show error, maybe problem should be your HMVC source. I used HMVC at bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc for my project.

Second, In your VIEW file, is this correct? The form here is form_close, it's not form_open, right?

<div class="text-center">
<?php
    echo form_submit('submit', 'Submit QSO');
    echo form_open('create_qso/insert_qso');
?>
</div>

It should be:

<div class="text-center">
<?php
    echo form_submit('submit', 'Submit QSO');
    echo form_close('create_qso/insert_qso');
?>
</div>

I don't have enough reputation to comment your question. So please comment back, I'll check and reply to you.

Upvotes: 1

Related Questions