Intereting Posts
Ответные вызовы pcntl_signal не выполняются Каков наилучший способ привязки значений десятичных / двойных / плавающих значений с PDO в PHP? Получить результаты разбивки на страницы в Active Collab API в foreach, isLastItem () существует? Как пользователь автоматически выйдет из всех открытых вкладок, когда пользователь выйдет из одной из них передать crontab переменную и прочитать ее с PHP? (nginx / selinux) Разрешение отклонено для сеансов, но файлы создаются .htaccess URL-адрес: проблема с перезаписыванием: наличие ошибок, когда файлы и имена папок одинаковы Laravel slash после перенаправления URL-адресов в корневую папку Преобразовать строку в двойную – возможно ли это? Как редактировать и сохранять пользовательские файлы конфигурации в Laravel? Как зашифровать данные $ _GET в php? Получить первое значение строки, разделенной запятыми Двойная вставка mysql_real_escape_string новых символов строки. Как получить новые разрывы строк? Создайте XML-файл на сервере с помощью SimpleXML и JQuery Ajax

Подсчитывая, сколько полей MySQL в строке заполнено (или пусто)

Мне нужно собрать метод, который позволит мне количественно определить, сколько полей в строке было заполнено пользователем.

Например:

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 

Интересно, нужно ли это делать через SQL-предложения или если через PHP SQL-функции можно запросить БД и рассчитать степень завершения.

Любые предложения, как это сделать? Я использую PHP 5 (codeigniter) и SQL 5.0.77, но любая дорожная карта была бы весьма признательна.

 $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'; } 
 select User, ( case Name when '' 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 / 5 as complete 

Используйте этот случай в соответствии с тем, что означает никакая информация: пустой или пустой.

я думаю, что это было бы лучше решено в php, где вы создаете функцию, которая определяет имена столбцов и присваивает вес каждому, а затем вычисляет% complete на основе данных, полученных из db, поэтому имя может рассчитывать на 20% и возраст может рассчитывать на 5% и т. д., а столбцы и определения веса могут даже храниться извне в файле xml, так что кто-то другой может играть с процентами и не нуждается в программисте для настройки требований