codeigniter中的错误strtolower函数

时间:2014-12-23 03:25:06

标签: php codeigniter checkbox

当我尝试strtolower()我签入的codeigniter时得到的跟随错误。 这是错误:

strtolower() expects parameter 1 to be string, object given

 Undefined property: CI_Loader::$unit_id

这是我的观点

   <div class="checkbox">
                                        <?php foreach ($unit_list as $unit) :?>
                                        <?php $isChecked = (strtolower($unit->unit_id) == strtolower($unit_id)) ? true : false; ?>
                                                <label>
                                                    <input type="checkbox" checked='$isChecked' name="unit_id[]" value="<?php echo $unit->unit_id ?>"><?php echo $unit->unit_id ?>
                                                </label>""
                                        <?php endforeach?>

                                    </div>

这个控制器

$this->data['unit_list']= $this->munit_list->get_all_unit_list2();     

  $fleet = $this->input->post('id_fleet');
                $unit_id = $this->input->post('unit_id');
                $this->data['unit_id']= $unit_id;

                // get shift and date
                $q = $this->database_three->select("*")->from('fleet')->where('id_fleet', $fleet)->limit(1)->get()->row();
                $fleet_date  = $q->date;
                $fleet_shift = $q->shift;

                //$this->db->select('f.*, fm.*')->from('fleet_member as fm, fleet as f');
                        $custom_sql   = "fm.id_fleet = f.id_fleet AND f.date = '$fleet_date' AND f.shift = '$fleet_shift'";
                        $custom_where = "";
                $records = array();

                for ($i=0; $i < count($unit_id) ; $i++) {
                    $records[] = array(
                                        'id_fleet' => $fleet,
                                        'unit_id'  => $unit_id[$i]
                    );

模型

function get_all_unit_list2()
    {
        $this->database_two->order_by('unit_id','desc');
        $data = $this->database_two->query(
            "Select unit_list.unit_id, vehicle_group.vec_type, vehicle_group.vec_group 
            from unit_list, vehicle_group 
            where unit_list.vec_type = vehicle_group.vec_type 
            AND vec_group IN ('OHT','ADT') ");
        return $data->result();
    }
你可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

首先,在您看来,您有以下错误

<label>
<input type="checkbox" **checked='$isChecked'** name="unit_id[]" value="<?php echo $unit->unit_id ?>"><?php echo $unit->unit_id ?>

 </label>

其次你从两个变量$ records []和$ data [&#39; unit_id&#39;]中通过控制器传递相同的$ unit_it现在我不确定你传递的是哪一个如果它的$记录[ ]而不是它的阵列和你的条件

 <?php $isChecked = (strtolower($unit->unit_id) == strtolower(**$unit_id**)) ? true : false; ?>

你正在使用一个字符串,这就是为什么你得到ci_loader数组它希望一个字符串转换为strtolower但你传递一个对象或数组

尝试解决这些问题后,您将理解,因为我无法看到您要传递给哪些变量的完整代码。

此致

Imran Qasim

答案 1 :(得分:0)

我可以看到你的代码没有通过$ unit_id来查看,所以你得到了Undefined属性:

CI_Loader::$unit_id and secondly 
在您的unit_list arrary中

确保您在

中获取数据
result() not in resul_array() 

我的意思是你打电话给你的控制器

get_all_unit_list2() 

然后返回应该是result()

形式的对象或数组

例如

$this->data['unit_list']= $this->munit_list->get_all_unit_list2();    

现在在您的模型中

function get_all_unit_list2() 

你应该有一个查询并且我应该返回

$query= $this->db->get('tablename'); 

return $query->result(); 

现在在您的视图中,如果存在变量

,您可以使用$ unit_list-&gt; unit_id
$this->data['unit_list']

希望这会说清楚。