mysql - 如何通过 POST 从选择数据表的选项中获取价值
问题描述
$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'。
解决方案
- 您已将变量包含在单引号中,这将导致 $user_id 的字符串而不是它的值。
所以改变
if ($start_date) {
$this->datatables->where('assigned_to', '$user_id')
->where('date_closing is not NULL');
}
To(删除 $user_id 周围的单引号)
if ($start_date) {
$this->datatables->where('assigned_to', $user_id)
->where('date_closing is not NULL');
}
$start_date
分配在哪里?
$start_date
是一个局部变量,我看不到它被设置。你在哪里设置?
目前,它总是会在您的 IF 语句中测试/评估为 FALSE。
除非您将其定义为类中的属性并将其分配到其他地方,否则您会将其称为$this->start_date
推荐阅读
- html - jquery验证表单隐藏显示不起作用
- java - 我的 Firebase 数据库为每个成员属性返回 null
- python - 无法使用 TableauServerClient 连接到 Tableau Server 10.5
- c# - C# 和 .NET MongoDB 驱动程序:在设置限制的同时检索不同的元素
- javascript - 如何使用 nodejs 和 ReactJS 提交动态表的输入?
- konvajs - 获取图层图像数据
- javascript - 是否可以基于 Rails 4 中选定的 HTML 元素以相同的形式创建多个对象?
- django - List Serializer 多对象创建
- android-studio - 错误模拟器:模拟器:错误:x86 仿真当前需要硬件加速
- visual-studio-code - 用于“重复上一个命令”的 Visual Studio Code 命令