【问题标题】:String comparison fails because of value passed by datatable, codeigniter由于数据表、codeigniter 传递的值,字符串比较失败
【发布时间】:2013-11-13 12:56:46
【问题描述】:

我正面临一个非常奇怪的问题,我从过去 2 小时开始调试,但找不到解决方案。在解释问题之前,我先展示一下代码

我的控制器功能是

  $this->load->library('datatables');
    $actionLinkBar = $this->load->view("content/updates/dt_files/action_bar", array(), TRUE);
    $this->datatables
            ->select("id, name, status")
            ->where('id', $this->session_data['user_id'])
            ->from("t_user")
            ->add_column("action", $actionLinkBar, 'id, name, status');

    echo $this->datatables->generate();

我的 action_bar 视图中的代码是

    <?php
     $status_rec = '$3';
     var_dump($status_rec); // STRANGE OUTPUT -  string(2) "1" 
     ?>

 <div class="action_bar" data-update-id="<?php echo '$1'; ?>">

    <?php if ($status_rec == '1') { ?> // HENCE COMPARISON ALWAYS FAILS

         <span>Present</span>

    <?php }else { ?>

         <span>Absent</span> 

     <?php } ?>

 </div>

现在解释问题.. 我正在使用带有 Codeigniter 的数据表。我有一个视图模板action_bar,它将显示在前端的数据列之一中。该视图具有基于 DB 中 status 字段值的 if/else 条件。如果status 字段值 = 1 = 存在。否则它是缺席的。但是尽管$status_rec 的值为'1',但相比之下它仍然失败。奇怪的是在 var_dumping $status_rec 上,我发现虽然它有适当的值,但长度很奇怪(2),尽管它是单个 int。我什至尝试修剪等,但仍然没有效果。也许这就是比较失败的原因。真的需要你的帮助:/

P.S - 保存此值的 DB 字段是长度为 1 的 int

【问题讨论】:

    标签: php codeigniter datatables codeigniter-2


    【解决方案1】:

    我也有类似的问题,通过更改库解决了一点:

    Datatables.php with if condition

    194、196440 字符串的变化

    使用方法:

    $if = array('0' => array('if_condition'=>'$3', 'if_condition_eqv'=>'1', 'if_true'=>'<span>Present</span></div>', 'if_false'=>'<span>Absent</span></div>'));
    $this->datatables->add_column("action", '<div class="action_bar" data-update-id="$1">', 'id, name, status');
    

    但你必须改变: ".=" On "="(字符串 497504

    应该可以。

    如果有人能更正代码,我将不胜感激

    附:对不起我的英语

    【讨论】:

      猜你喜欢
      • 2018-09-06
      • 1970-01-01
      • 2016-07-05
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多