Как получить значение POST из опций для выбора таблиц данных с помощью где - PullRequest
0 голосов
/ 04 ноября 2019

Мне нужно получить значение опции $user_id для выбора с помощью Datatables.

При замене $user_id на число '' все работает нормально, но мне нужен выбор $user_id в параметре списка для генерации

Большое спасибо, извините, если мой английский не хорош ^^!

просмотр

    <?php
$v = "";
if ($this->input->post('date_range')) {
    $dr = explode(' - ', $this->input->post('date_range'));
    $v .= "&start_date=" . $dr[0];
    $v .= "&end_date=" . $dr[1];
}
?>


<div class="panel-body">
            <?php echo form_open("panel/reports/repairbyuser"); ?> 
<div class="form-group">
                    <?=lang('cuanhanvien', 'cuanhanvien');?>
                        <div class="input-group">
<div class="input-group-addon">
<i class="fa  fa-user"></i>
                            </div>
                                <select required id="user_id" name="user_id" class="form-control user_id"  style="width: 100%">
                                    <option value=""><?=lang('chonnhanvien'); ?></option>
<?php
                                        foreach($users as $user){
                                            echo '<option value="'.$user->id.'">'.$user->first_name . ' ' . $user->last_name .'</option>';
                                        }
                                    ?>
                                </select>
                        </div>
                </div>
<div class="form-group">
                    <?=lang('report_Status', 'report_Status');?>
                        <div class="input-group">
                            <div class="input-group-addon">
                                <i class="fas fa-money-bill-alt"></i>
                            </div>
                                <select required id="status" name="status" class="form-control status" style="width: 100%">
                                    <option value=""><?=lang('chontinhtrang'); ?></option>
<option value="1"><?=lang('delivered_user'); ?></option>
                                  <option value="2"><?=lang('inprogress_user'); ?></option>
                                </select>
</div>
</div>

<div class="form-group">
                    <?= lang('date_range', 'date_range'); ?>
                        <input class="form-control" type="text" name="date_range" class="date_range" id="date_range" value='<?= set_value('date_range'); ?>'>
                </div>
                <div class="form-group">
                    <div class="controls">
<?php echo form_submit('submit', $this->lang->line("submit_draw"), 'class="btn btn-primary"'); ?>
</div>
                </div>
                    <?php echo form_close(); ?>

контроллеры

   function repairbyuser()
    {

$this->mPageTitle = lang('user_report_detail');
        $this->render('reports/repairbyuser');
    }
    function getrepairbyuser($pdf = NULL, $xls = NULL)
    {
        if ($this->input->get('start_date')) {
            $start_date = date('Y-m-d', strtotime($this->input->get('start_date'))) . " 00:00:00";
        } else {
            $start_date = date('Y-m-d 00:00:00');
        }
        if ($this->input->get('end_date')) {
            $end_date = date('Y-m-d', strtotime($this->input->get('end_date'))) . " 23:59:59";
        } else {
            $end_date = date('Y-m-d 23:59:59');
        }


$user_id = $this->input->post('user_id');


$status= $this->input->post('status');


$this->load->library('datatables');
            $this->datatables
                ->select("date_opening, code, date_closing, name, CONCAT(reparation.category, ' ', reparation.model_name) as tenmay, defect, (grand_total-total) as tiendvsc")
                ->from('reparation');
if ($status == NULL) {
$this->datatables->where('reparation.date_opening BETWEEN "' . $start_date . '" and "' . $end_date . '"')
->where('assigned_to', '0');
} else if ($status == '1') {
$this->datatables->where('reparation.date_opening BETWEEN "' . $start_date . '" and "' . $end_date . '"')
->where('assigned_to', $user_id)
->where('date_closing is not null');

        } else if ($status == '2') {
$this->datatables->where('reparation.date_opening BETWEEN "' . $start_date . '" and "' . $end_date . '"')
->where('assigned_to', $user_id)
->where('date_closing is null');
}
            echo $this->datatables->generate();

}

Попробуйте назначить $ user_id = '1', $status = '1' в контроллерах, если предложение работает нормально.

Ответы [ 2 ]

0 голосов
/ 04 ноября 2019
Try this.
/////In view////
<?php echo form_open("panel/reports/repairbyuser", array('method'=>'post')); ?>  
            <div class="form-group" >
                <?=lang('cuanhanvien', 'cuanhanvien');?>
                    <div class="input-group">
                        <div class="input-group-addon">
                            <i class="fa  fa-user"></i>
                        </div>
                            <select required id="user_id" name="user_id" onchange="this.form.submit() class="form-control" style="width: 100%">
                                <?php
                                    foreach($users as $user){
                                        echo '<option value="'.$user->id.'">'.$user->first_name . ' ' . $user->last_name .'</option>';
                                    } 
                                ?>
                            </select>
                    </div>
            </div>
0 голосов
/ 04 ноября 2019
  1. Вы заключили переменную в одинарные кавычки, что приведет к строке $ user_id, а не к ее значению.

Поэтому измените

if ($start_date) {
  $this->datatables->where('assigned_to', '$user_id')
                   ->where('date_closing is not NULL');
}

Кому (Удалить одинарные кавычки около $ user_id)

if ($start_date) {
    $this->datatables->where('assigned_to', $user_id)
                     ->where('date_closing is not NULL');
}
$start_date назначается где?

$start_date - локальная переменная, и я не вижу, чтобы она была установлена. Где вы это устанавливаете?

В настоящий момент он всегда будет проверять / оценивать как FALSE в вашем операторе IF.

Если вы не определили его как свойство в классе и не присваиваете его в другом месте, тогда вы будете обращаться кэто как $this->start_date

...