【问题标题】:Counting how many MySQL fields in a row are filled in Codeigniter在 Codeigniter 中统计一行中有多少个 MySQL 字段
【发布时间】:2016-04-17 07:35:12
【问题描述】:

我需要编写一个方法来计算用户填写了一行中的字段数。 例如:

 User    Name    Age    Country    Gender    Height
    1       Mike    34     USA        Male      6
    2       Bill    23     CA                   5
    3       Jane    31     USA   

在上面的例子中,我想查询数据库并返回一个反映用户记录完成程度的值。如:

User 1 = 100% complete
User 2 = 80% complete
User 3 = 60% complete

我正在使用 Codeigniter 3。你们能帮帮我吗?

【问题讨论】:

    标签: php mysql codeigniter


    【解决方案1】:

    你可以这样试试 ::

    $result = mysql_query('SELECT * FROM `MyTable`');
    while($row = mysql_fetch_row($result)){
    $empty_count = 0;
    $count = count($row);
    for($i = 0; $i < $count; $i++)
        if($row[$i] === '' || $row[$i] === 'NULL')
            $empty_count++;
    echo 'User '.$row[0].' = '.((int)(100*(1-$empty_count/($count-1)))).'% complete';
    }
    

    希望它会起作用。

    【讨论】:

      【解决方案2】:

      让方法在方法中传递参数

        function profileCompleted($user){
               $percentage = 0;
               $sql ="SELECT * FROM user  WHERE user=$user"
             $query = $this->db->query($sql);
      
            if ($query->num_rows() > 0)
                { 
                  $notEmpty =   0;
                  $totalField =5;
                  foreach ($query->result() as $row)
                    {
                     $notEmpty +=  ($row->Name != '') ? 1 : 0;
                      //do with all field
                    }
                $percentage = $notEmpty/$totalField *100;
                }
              return $percentage.'%';
          }
      

      【讨论】:

      • 如何在我的视图中显示该值。
      • 通过在加载函数中传递参数,在控制器中调用此方法,它会返回结果并像您传递的其他数据一样传入视图
      • 如果您想返回更多数据,则此方法仅返回百分比,然后在 foreach 中添加变量,如果存在 where 条件,则仅显示单个用户
      • 我想我把你弄糊涂了,无论如何谢谢你的帮助。
      【解决方案3】:

      我认为也可以通过 SQL 查询来完成:

      SELECT id,
      (
          CASE name WHEN NULL THEN 0 ELSE 1 END
          +
          CASE WHEN age IS NULL THEN 0 ELSE 1 END
          +
          CASE country WHEN '' THEN 0 ELSE 1 END
          +
          CASE gender WHEN '' THEN 0 ELSE 1 END
          +
          CASE WHEN height IS NULL THEN 0 ELSE 1 END
      ) * 100 / number_of_fields AS complete
      from your_table;
      

      【讨论】:

        猜你喜欢
        • 2018-04-03
        • 2011-10-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多