【问题标题】:How form validation/ data limitation of a vehicle_number and date using codeigniter如何使用 codeigniter 对车辆编号和日期进行表单验证/数据限制
【发布时间】:2016-08-28 17:27:38
【问题描述】:

我在这里不包括表单输入等,因为我的代码正在运行。 我想要一个像这个查询这样的表单验证,如果“车辆 1”出现在数据库中 5 次并且在相同的交货日期,则选择交货表。提醒一个错误,车辆 1 只需要在该日期交付 5 次。”

数据库:
车辆名称 |交货日期
车辆 1 2016 年 8 月 29 日
车辆 1 2016 年 8 月 29 日
车辆 1 2016 年 8 月 29 日
车辆 1 2016 年 8 月 29 日
车辆 1 2016 年 8 月 29 日

6日输入
输入:车辆 1
输入:2016 年 8 月 29 日

我的输入没有问题。我只想验证一下,如果“车辆 1”在 2016 年 8 月 29 日的交付表上存在 5 次,则您不能再添加任何交付。我将如何编写代码?”

控制器

private function _validate()
{
    $data = array();
    $data['error_string'] = array();
    $data['inputerror'] = array();
    $data['status'] = TRUE;

    if($this->input->post('client_firstname') == '')
    {
        $data['inputerror'][] = 'client_firstname';
        $data['error_string'][] = 'First name is required';
        $data['status'] = FALSE;
    }

    if($this->input->post('client_lastname') == '')
    {
        $data['inputerror'][] = 'client_lastname';
        $data['error_string'][] = 'Last name is required';
        $data['status'] = FALSE;
    }

    if($this->input->post('client_contact') == '')
    {
        $data['inputerror'][] = 'client_contact';
        $data['error_string'][] = 'Customer contact is required';
        $data['status'] = FALSE;
    }

    if($this->input->post('client_address') == '')
    {
        $data['inputerror'][] = 'client_address';
        $data['error_string'][] = 'Address is required';
        $data['status'] = FALSE;
    }

    if($this->input->post('tracking_no') == '')
    {
        $data['inputerror'][] = 'tracking_no';
        $data['error_string'][] = 'Tracking number is required';
        $data['status'] = FALSE;
    }

    if($this->input->post('vehicle_id') == '')
    {
        $data['inputerror'][] = 'vehicle_id';
        $data['error_string'][] = 'Vehicle Assignation Required';
        $data['status'] = FALSE;
    }


    if($this->input->post('delivery_status') == '')
    {
        $data['inputerror'][] = 'delivery_status';
        $data['error_string'][] = 'Delivery status is required';
        $data['status'] = FALSE;
    }


    if($this->input->post('delivery_date') == '')
    {
        $data['inputerror'][] = 'delivery_date';
        $data['error_string'][] = 'Delivery Date is required';
        $data['status'] = FALSE;
    }


    if($data['status'] === FALSE)
    {
        echo json_encode($data);
        exit();
    }
}

型号

public function save($data)
{
    $this->db->insert($this->table, $data);
    return $this->db->insert_id();
}

在我的脚本上

function add_delivery()
{
save_method = 'add';
$('#form')[0].reset(); // reset form on modals
$('.form-group').removeClass('has-error'); // clear error class
$('.help-block').empty(); // clear error string
$('#modal_form').modal('show'); // show bootstrap modal
$('.modal-title').text('Add Delivery'); // Set Title to Bootstrap modal title
}

function save()
{
$('#btnSave').text('saving...'); //change button text
$('#btnSave').attr('disabled',true); //set button disable 
var url;

if(save_method == 'add') {
    url = "<?php echo base_url('index.php/delivery/ajax_add')?>";
    $('#btnSave').text('Add Delivery');
} else {
    url = "<?php echo base_url('index.php/delivery/ajax_update')?>";
}

// ajax adding data to database
$.ajax({
    url : url,
    type: "POST",
    data: $('#form').serialize(),
    dataType: "JSON",
    success: function(data)
    {

        if(data.status) //if success close modal and reload ajax table
        {
            $('#modal_form').modal('hide');
            reload_table();
            alert('Successfully Added');
        }
        else
        {
            for (var i = 0; i < data.inputerror.length; i++) 
            {
                $('[name="'+data.inputerror[i]+'"]').parent().parent().addClass('has-error'); //select parent twice to select div form-group class and add has-error class
                $('[name="'+data.inputerror[i]+'"]').next().text(data.error_string[i]); //select span help-block class set text error string
            }
        }
        $('#btnSave').text('Save Delivery'); //change button text
        $('#btnSave').attr('disabled',false); //set button enable 


    },
    error: function (jqXHR, textStatus, errorThrown)
    {
        alert('Error adding / update data');
        $('#btnSave').text('Save Delivery'); //change button text
        $('#btnSave').attr('disabled',false); //set button enable 

    }
});

}

【问题讨论】:

  • vehicle 18/29/2016的输入变量名是什么??请说明
  • @Spartan vehicle_name and delivery_date..
  • 我的输入没有问题。我只是想要验证,如果“车辆 1”在 2016 年 8 月 29 日在交付表上存在 5 次,则您不能再添加任何交付
  • delivery_date手动输入??
  • @Spartan 不,我使用 datepicker,所以它总是会像 8/29/2016 这样的 M/DD/YY 出现

标签: javascript php mysql ajax codeigniter-3


【解决方案1】:

在模型中

function getVeichleCount($vehicle_name, $delivery_date)
{
    $query = $this->db->query("SELECT count(id) FROM table_name WHERE vehicle_name = '$vehicle_name' AND delivery_date = $delivery_date ");
    $result = $query->result_array();
    return $result;
}

在回调函数中

$count = $this->model_name->getVeichleCount($vehicle_name, $delivery_date)[0];
if ($count >= 5) {
    # count already have 5 records
    # your error goes here
}

【讨论】:

  • $vid = $this->input->post('vehicle_id'); $dad = $this->input->post('delivery_date'); $count = $this->delivery_model->getVehicleCount($vid , $dad); $c = 5; if($count >= $c) { $data['inputerror'][] = 'vehicle_id'; $data['error_string'][] = '出现5次'; $data['status'] = 假; }
  • 似乎正确。在添加型号代码之前。使用 print r 检查变量是否传递了输出
  • 一些错误。即使 3>=5 我也会进入 if()
  • 没有。不可能。 echo $count 并发布数据
  • Array ( [count(delivery_id)] => 2 ) 是结果..返回一个字符串输出只能2返回结果有问题
猜你喜欢
  • 2017-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多