0

startdate を検証して codeigniter を終了させたい、stardate > enddate の場合、データベースに保存しない、またはコントローラにこのようなエラー メッセージを表示する

function buat_lagi() {
    if ($this->input->post('IDKategori')) {
        $this->MKalender->addEvents();
        $id = $_POST[IDKategori];
        $this->session->set_flashdata('message', 'Agenda Pimpinan baru telah dibuat !');
        redirect('admin/kalenderkategori/lihat/' . $id . '', 'refresh');
    } else {
        $data['title'] = "Tambah Agenda Pimpinan";
        $data['kategori'] = $this->MKalenderKategori->getKategoriDropDown();
        $data['main'] = 'admin/kalender/kalender_buat_lagi';
        $this->load->vars($data);
        $this->load->view('layout/dashboard');
    }
}

私のモデルはこのように

function addEvents() {
    $data = array(
        'IDKategori' => $this->input->post('IDKategori'),
        'TanggalMulai' => $this->input->post('TanggalMulai'),
        'TanggalAkhir' => $this->input->post('TanggalAkhir'),
        'judul' => $this->input->post('judul'),
        'konten' => $this->input->post('konten'),
        'create_by' => $_SESSION['username'],
    );
    $this->db->insert('kalender', $data);
}

私のフォームはこんな感じ

<form action="<?= base_url(); ?>index.php/admin/kalender/buat_lagi/" method="post" enctype="multipart/form-data" name="form" id="form">
<?php
echo "<label for='ptitle'>Kegiatan / Lokasi :</label><br/>";
$data = array('class' => 'validate[required] text-input', 'name' => 'judul', 'id' => 'ptitle', 'size' => 80);
echo form_input($data);

echo "<p><label for='long'>Uraian Kegiatan / Keterangan / Catatan :</label><br/>";
$data = array('class' => 'validate[required] text-input', 'name' => 'konten', 'rows' => '13', 'cols' => '60', 'style' => 'width: 60%');
echo form_textarea($data) . "</p>";

echo "<p><label for='ptitle'>Waktu Mulai :</label><br/>";
$data = array('class' => 'validate[required] text-input', 'name' => 'TanggalMulai', 'id' => 'basic_example_1');
echo form_input($data) . "</p>";

echo "<p><label for='ptitle'>Waktu Akhir :</label><br/>";
$data = array('class' => 'validate[required] text-input', 'name' => 'TanggalAkhir', 'id' => 'basic_example_2', 'onblur' => 'function compareDate()');
echo form_input($data) . "</p>";

echo form_hidden('IDKategori', $this->uri->segment(4));
echo form_submit('submit', 'Tambah Even');
?>
&nbsp;&nbsp;<input type="button" value="Kembali" onClick="javascript: history.go(-1)" />

私の問題を検証する方法??

4

1 に答える 1

1

日付の形式や、日付フィールドが何であるかさえ指定していません (ここのユーザーのほとんどは主に英語を話すことに注意してください)。また、このチェックをサーバー側にするかクライアント側にするかについても述べていません。フォームで呼び出された日付の比較関数によって、少なくともクライアント側でそれが必要であると想定していますが、サーバー側でもフォームの検証を行う必要があることをお勧めします。クライアント側は、ユーザーへの即時通知には優れていますが、フォーム サーバー側への入力を実際に保護するには役に立ちません。

クライアント側のjQuery(どのフィールドがどの疑似コードなのかわからないため:

function compareDate()
    {
var startDate = Date.parse($("#startDate).val()");
var endDate = Date.parse($("#endDate).val()");
if(startDate>endDate)
{
alert("Your start date must be earlier than your end date.");
}
    }

Codeigniter 関数 (コールバックは機能するはずですが、テストしていません。) 実際には、日付フィールドの 1 つで関数を実行するだけで済みます。1 つのエラーのみを返す必要があります。 2。

//validation rule
$this->form_validtion->set_rules('endDate', 'End Date','trim|callback_compareDates');


function compareDates()
{
$start = strtotime($this->input->post('startDate'));
$end = strtotime($this->input->post('endDate'));
if($start > $end)
{
    $this->form_validation->set_message('compareDates','Your start date must be earlier than your end date');
    return false;
}
于 2013-01-27T17:12:01.883 に答える