簡體   English   中英

Codeigniter-插入多個表

[英]Codeigniter - inserting into multiple tables

我在Codeigniter的預訂單時遇到問題; 當訪客進行預訂時,應將詳細信息插入數據庫的兩個表中(“預訂”和“期間”,從“預訂”到“期間”有一個FK)。

當我嘗試進行預訂時,數據庫中沒有任何內容,而且我無法說出表單或控制器與模型之間是否存在問題(沒有引發錯誤-數據庫中沒有任何錯誤)。 我試圖遵循此示例中的邏輯。

這是我的表格(gite-booking-form.php):

<html>
<head>
    <title>Gite booking form</title>
</head>
<body>

<?php echo validation_errors(); ?>

<?php echo form_open('GiteCtl/giteBookingForm'); ?>

<h5>Select a gite:</h5>
<?php
$gitenames = array('giteA', 'giteB', 'giteC', 'giteD');
$gitename = isset($_POST['gitename']) && in_array($_POST['gitename'], $gitenames) ? $_POST['gitename'] : 'giteA';

echo '<select name="gitename">';
foreach ($gitenames as $option) {
    echo '<option value="' . $option . '"' . (strcmp($option, $gitename) == 0 ? ' selected="selected"' : '') . '>' . $option . '</option>';
}
echo '</select>';

?>

<h5>Start date</h5>
<input type="date" value="<?php echo set_value('start_date'); ?>"/>

<h5>End date</h5>
<input type="date" value="<?php echo set_value('end_date'); ?>"/>


<div><input type="submit" value="Submit"/></div>
</form>

</body>
</html>

我的模型(Gite.php):

<?php

class Gite extends CI_Model
{


    public function __construct() {
        parent::__construct();
    }




    public function reservationInsert($table, $data)
    {
        $query = $this->db->insert($table, $data);

        return $this->db->insert_id();
    }


}

和控制器:

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

class GiteCtl extends CI_Controller
{
    public function __construct()
    {
        parent::__construct();
        $this->load->helper('url');
        $this->load->model('Gite');
        $this->load->library('calendar');
        $this->load->library('form_validation');
        $this->load->library('session');
        $this->load->model('Visitors');
    }

    public function isLoggedIn()
    {
        $isLoggedIn = $this->session->userdata('isLoggedIn');

        if (!isset($isLoggedIn) || $isLoggedIn != TRUE) {
            echo 'In order to book a gite, you must first login';
            echo 'button: visitor-login.php'; // I will add this later
        } else {
            $this->giteBookingForm();
        }
    }

    public function giteBookingForm()
    {


        $this->form_validation->set_rules('gite_selection', 'gite_select', 'required');
        $this->form_validation->set_rules('start_date', 'startDate', 'required', array('required' => 'You must choose a %s.'));
        $this->form_validation->set_rules('end_date', 'endDate', 'required', array('required' => 'You must provide an %s.')
        );

        if ($this->form_validation->run() == FALSE) {
            $this->load->view('gite-booking-form');


        } else {


            $start_date = $this->input->post('start_date');
            $end_date = $this->input->post('end_date');
            $isHauteSaison = 1;
            $isWeekend = 1;

            $period_data = array(

                'start_date' => $start_date,
                'end_date' => $end_date,
                'isHauteSaison' => $isHauteSaison,
                'isWeekend' => $isWeekend

            );



            $gite_selection = $this->input->post('gite_selection');
            $visitor_email = $this->session['visitorName'];
            $price = 100.00;


            $period_id = $this->Gite->reservationInsert('period', $period_data);

            $reservation_data = array(
                'gite_selection' => $gite_selection,
                'visitor_email' => $visitor_email,
                'price' => $price,
                'period' => $period_id
            );


            $insert = $this->Gite->reservationInsert('reservation', $reservation_data);


        }
    }


}

謝謝,E。

最后是表格。 從表單中檢索數據的PHP比我想象的要復雜:

<h5>Select a gite:</h5>
<?php
$gitenames = array('giteA','giteB','giteC','giteD');
$gitename = isset($_POST['gitename']) && in_array($_POST['gitename'],$gitenames)?$_POST['gitename']:'giteA';

echo '<select name="gitename">';
foreach($gitenames as $option) {
    echo '<option value="'.$option.'"'.(strcmp($option,$gitename)==0?' selected="selected"':'').'>'.$option.'</option>';
}
echo '</select>';

?>

<h5>Start date</h5>


<input type="date" class="form-control" name="start_date" value="<?php echo isset($start_date) ? set_value('start_date', date('Y-m-d', strtotime($start_date))) : set_value('start_date');   ?>">


<h5>End date</h5>

<input type="date" class="form-control" name="end_date" value="<?php echo isset($end_date) ? set_value('end_date', date('Y-m-d', strtotime($end_date))) : set_value('end_date');   ?>">

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM