PHP SQL用户配置文件完整性计算不起作用
我试图在用户帐户上显示一个配置文件完整性栏,进度栏正在显示,但它没有添加数值以计算已完成字段的百分比,即: 如果($row['title']!='') $completedTitle=20 我的缩写代码如下:PHP SQL用户配置文件完整性计算不起作用,php,sql,Php,Sql,我试图在用户帐户上显示一个配置文件完整性栏,进度栏正在显示,但它没有添加数值以计算已完成字段的百分比,即: 如果($row['title']!='') $completedTitle=20 我的缩写代码如下: <?php $result = mysql_query("SELECT title,name,surname,identityno,gender FROM cic_candidates WHERE id='$id' LIMIT 1"); while($row = mysql_f
<?php
$result = mysql_query("SELECT title,name,surname,identityno,gender FROM cic_candidates WHERE id='$id' LIMIT 1");
while($row = mysql_fetch_assoc($result))
$maximumPoints = 100;
{
if($row['title'] != '')
$completedTitle = 20;
if($row['name'] != '')
$completedName = 20;
if($row['surname'] != '')
$completedSurname = 20;
if($row['identityno'] != '')
$dcompletedIdentityno = 20;
if($row['gender'] != '')
$completedGender = 20;
}
$percentage = ($dcompletedTitle+$completedName+$completedSurname+$completedIdentityno+$completedGender)*$maximumPoints/100;
echo "".$percentage."%";
?>
百分比显示在echo中,但总数是错误的-它没有为每个已完成的字段获取20个点的值,并将其包含在百分比计算的“加法”部分中。你能告诉我哪里出了问题吗?我已经花了4天的时间试图解决这个问题,在谷歌上搜索了2000多个论坛,但找不到答案。任何帮助都将不胜感激。在查询中使用{}作为单引号
<?php
// fisrt select database
$result = mysql_query("SELECT title,name,surname,identityno,gender FROM cic_candidates WHERE id='{$id}' LIMIT 1");
//use of MYSQL_QUERY is deprecated so don't use it
//use mysqli_query instead of mysql_query
if (!$result) {
echo "Could not successfully run query " . mysql_error();
exit;
}
if (mysql_num_rows($result) == 0) {
echo "No rows found, nothing to print so am exiting";
exit;
}
while($row = mysql_fetch_assoc($result))
$maximumPoints = 100;
$point = 0;
{
if($row['title'] != '')
$point+=20;
if($row['name'] != '')
$point+=20;
if($row['surname'] != '')
$point+=20;
if($row['identityno'] != '')
$point+=20;
if($row['gender'] != '')
$point+=20;
}
$percentage = ($point*$maximumPoints)/100;
echo $percentage."%";
?>
我认为你的情况完全错了,试试这个。。。它对我有用
$sql = "SELECT title,name,surname,identityno,gender FROM cic_candidates WHERE id='{$id}' LIMIT 1";
$result = $DBconnection->query($sql);
$maxvalue = 100;
$point = 0;
if ($result) {
while($row = $result->fetch_assoc()){
if($row['title'] != ''){
$point1 = $point+20;
}elseif($row['title'] == ''){
$point1 = $point+=0;
}
if($row['name'] != ''){
$point2 = $point+20;
}elseif($row['name'] == ''){
$point2 = $point+=0;
}
if($row['surname'] != ''){
$point3 = $point+20;
}elseif($row['surname'] == ''){
$point3 = $point+0;
}
if($row['identityno'] != ''){
$point4 = $point+20;
}elseif($row['identityno'] == ''){
$point4 = $point+0;
}
if($row['gender'] != ''){
$point5 = $point+=20;
}elseif($row['gender'] == ''){
$point5 = $point+0;
}
// otherwise
}
}else{
echo "error completing query";
}
$pint = $point1+$point2+$point3+$point4+$point5;
$percentage = ($pint*100)/100;
echo $percentage."%";
我认为是(总和)*100/$maximumpoints,当前结果是什么$dcompletedTitle
-->$completedTitle
。根据我的理解,你的计算有一个拼写错误。确实有两个拼写错误。dcompleteidentity…很抱歉,我的线程中有一个输入错误,但我在DW中的代码没有输入错误-好位置!:)我应该把(总和)放在哪里,因为如果我把它加在*$maximumPoints/100之前;它显示一个语法错误我复制了你的代码,但仍然显示0%-你认为它正确读取了“20”的值吗?@user2733533我已经编辑了答案。运行上面的代码后,您得到了什么输出???Title(field completed)-Name(field completed)-Name(field completed)-Name(field completed)-Identityno(field empty)-Gender(field empty),所以结果应该是60%完整。我将它们全部改为小写,结果仍然显示0%完整…@user2733533只是回显“$point”。如果显示为0,则检查查询中的“id”是否有效(即,它退出,并且设置了它的其他值(标题、名称、姓氏等))