【问题标题】:Insert form data into database with CodeIgniter使用 CodeIgniter 将表单数据插入数据库
【发布时间】:2016-11-04 18:04:25
【问题描述】:

这是我遇到的问题,我正在使用 HMVC,到目前为止:

routes.php

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

Qso_model.php 模型

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 查看

<?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 控制器

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');

}
}

当我运行这个时,表单显示很好,我可以输入数据,但是当我提交表单时,我得到了这个:

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

我不知道如何从表单中将数据插入数据库中的 qso 表中?

【问题讨论】:

  • 我浏览了 codeigniter 文档,看起来我做对了。我将尝试在一个单独的本地站点上浏览教程,看看它是否有效......这应该比我做的简单得多,但由于我是 codeigniter 的新手,所以我必须期待学习曲线。 :-(
  • 没有回复... :-(

标签: database forms codeigniter insert


【解决方案1】:

您使用的是哪种类型的 HMVC?

首先,这是我的 HMVC 文件夹: HMVC folder

我不需要使用$route['method'] 来配置 url 或查看。我只是在我想加载视图时使用$this-&gt;load-&gt;view('account',$this-&gt;_data);account.php 将放置在application\modules\account\views

如果它无法连接并显示错误,可能问题应该是您的 HMVC 源。我在我的项目中使用了bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc 的 HMVC。

第二,在你的 VIEW 文件中,这样写对吗?这里的表格是form_close,不是form_open,对吧?

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

应该是:

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

我没有足够的声誉来评论您的问题。所以请回复评论,我会检查并回复你。

【讨论】:

    猜你喜欢
    • 2013-04-04
    • 2016-09-18
    • 1970-01-01
    • 2014-05-04
    • 2013-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多