у меня есть таблица «tbl_userpersonal»,
я хочу проверить, какие столбцы заполнены, а какие нет, поэтому я могу рассчитать или отобразить процент завершения профиля.
\
До сих пор я пробовал много разных методов и кодов, и мой код считает все столбцы, но я хочу, чтобы он считал пустые столбцы значений как 0.
пожалуйста, помогите мне с решениями.
Пока, если в каком-либо столбце есть хотя бы одна запись для пользователя, это дает мне 100%, в противном случае 0% нет промежуточных
В настоящее время, если есть значение внутри «Father_name» & «Имя матери» & Столбец «DOB» для пользователя с user_authtoken = «app_7837hfjd57hdj» ожидаемый результат должен быть
3
50% т.е. (3/6) * 100
что происходит сейчас
если в любом из этих столбцов есть значение для пользователя с user_authtoken = «app_7837hfjd57hdj», вывод будет отображаться как
6
100% т.е. (6/6) * 100
или если для пользователя нет записи с user_authtoken = «app_7837hfjd57hdj», вывод выдаёт
0
0%
вот код php
$personal = mysqli_query($con,"
SELECT father_name,
mother_name,
DOB,
adhar_no,
address,
religion,
CASE WHEN father_name IS NOT NULL THEN 1 ELSE 0 END +
CASE WHEN mother_name IS NOT NULL THEN 1 ELSE 0 END +
CASE WHEN DOB IS NOT NULL THEN 1 ELSE 0 END +
CASE WHEN adhar_no IS NOT NULL THEN 1 ELSE 0 END +
CASE WHEN address IS NOT NULL THEN 1 ELSE 0 END +
CASE WHEN religion IS NOT NULL THEN 1 ELSE 0 END AS personal
FROM user WHERE `user_authtoken` = '$user_ath'
") or die(mysqli_error($con));
$data=mysqli_fetch_assoc($personal);
$pro_count = $data['personal'];
echo $pro_count ;
echo '<br>';
$percentage = ($pro_count /6)*100;
echo $percentage;
я думаю, у вас есть пустое значение в таблице, не пусто попробуйте это
это проверит как нулевое, так и пустое
$personal = mysqli_query($con,"
SELECT father_name,
mother_name,
DOB,
adhar_no,
address,
religion,
CASE WHEN father_name IS NOT NULL AND father_name<>'' THEN 1 ELSE 0 END +
CASE WHEN mother_name IS NOT NULL AND mother_name<>'' THEN 1 ELSE 0 END +
CASE WHEN DOB IS NOT NULL AND DOB<>'' THEN 1 ELSE 0 END +
CASE WHEN adhar_no IS NOT NULL AND adhar_no<>'' THEN 1 ELSE 0 END +
CASE WHEN address IS NOT NULL AND address<>'' THEN 1 ELSE 0 END +
CASE WHEN religion IS NOT NULL AND religion<>'' THEN 1 ELSE 0 END AS personal
FROM user WHERE `user_authtoken` = '$user_ath'
") or die(mysqli_error($con));
Других решений пока нет …