Php 计算Codeigniter中一行填充了多少MySQL字段
我需要编写一个方法,允许我计算一行中有多少字段是由用户填写的。 例如:Php 计算Codeigniter中一行填充了多少MySQL字段,php,mysql,codeigniter,Php,Mysql,Codeigniter,我需要编写一个方法,允许我计算一行中有多少字段是由用户填写的。 例如: User Name Age Country Gender Height 1 Mike 34 USA Male 6 2 Bill 23 CA 5 3 Jane 31 USA 在上面的示例中,我希望查询数据库并返回一个反映用户记录
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
我正在使用CodeIgniter3。你们能帮帮我吗 使方法在方法中传递参数
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.'%';
}
你可以这样试试::
$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';
}
$result=mysql\u查询('SELECT*FROM'MyTable`);
while($row=mysql\u fetch\u row($result)){
$empty_count=0;
$count=计数($row);
对于($i=0;$i<$count;$i++)
如果($row[$i]==''| |$row[$i]==='NULL')
$empty_count++;
回显“用户”。$row[0]。='((int)(100*(1-$empty_count/($count-1)))。%complete';
}
希望它能起作用。我认为也可以通过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;
如何在视图中显示该值。通过在load function中传递参数,在controller中调用此方法,它返回结果,并只在视图中传递,与您传递的其他数据相同。此方法仅返回百分比如果您想返回更多数据,则在foreach中添加变量,如果存在where条件,则仅显示单个用户i我想我把你弄糊涂了,无论如何谢谢你的帮助。