- Резултаат от редове
WT форуми -> PHP MySQL ASP.NET -> Резултаат от редове
Създайте нова тема Напишете отговор 
Автор Съобщение
kini
Нов
Нов

Регистриран на: 01/05/2010 12:36 pm

Support: 2
Bonus: 4
Мнения: 149
Мнение 04/06/2019 5:15 pm     Резултаат от редове Отговорете с цитат


Здравейте,

Пиша относно нещо, което не знам дали е възможно да се направи. Доста търсих и пробвах различни примери, но уви..

Ситуацията е следната..

В таблица имам 15 колони за 15 изображения. (poster, poster2, poster3 до 15). Искам да направя COUNT, който да покаже в кои от полетата на даденото id има вкарани резултати.
Например ако има вкарани изображения и в 13 колони от 15-те, да извежда `13 изображения` - просто да показва цифрата, като общ резултат.

Моля за информация или решение. Question
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
dakata__92
Активен
Активен

Регистриран на: 02/08/2011 9:24 pm

Support: 123
Bonus: 239
Мнения: 3148
Мнение 04/06/2019 5:59 pm     Re: Резултаат от редове Отговорете с цитат


kini написа:
Здравейте,

Пиша относно нещо, което не знам дали е възможно да се направи. Доста търсих и пробвах различни примери, но уви..

Ситуацията е следната..

В таблица имам 15 колони за 15 изображения. (poster, poster2, poster3 до 15). Искам да направя COUNT, който да покаже в кои от полетата на даденото id има вкарани резултати.
Например ако има вкарани изображения и в 13 колони от 15-те, да извежда `13 изображения` - просто да показва цифрата, като общ резултат.

Моля за информация или решение. Question


Дай си структурата на таблицата, за да мога да ти напиша кода според нея.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
kini
Нов
Нов

Регистриран на: 01/05/2010 12:36 pm

Support: 2
Bonus: 4
Мнения: 149
Мнение 04/06/2019 6:08 pm     Re: Резултаат от редове Отговорете с цитат


dakata__92 написа:
kini написа:
Здравейте,

Пиша относно нещо, което не знам дали е възможно да се направи. Доста търсих и пробвах различни примери, но уви..

Ситуацията е следната..

В таблица имам 15 колони за 15 изображения. (poster, poster2, poster3 до 15). Искам да направя COUNT, който да покаже в кои от полетата на даденото id има вкарани резултати.
Например ако има вкарани изображения и в 13 колони от 15-те, да извежда `13 изображения` - просто да показва цифрата, като общ резултат.

Моля за информация или решение. Question


Дай си структурата на таблицата, за да мога да ти напиша кода според нея.



Заповядай.

CREATE TABLE `media` (
  `id` int(11) NOT NULL,
  `title` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `description` text COLLATE utf8_unicode_ci NOT NULL,
  `poster` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `poster2` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `poster3` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `poster4` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `poster5` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `poster6` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `poster7` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `poster8` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `poster9` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `poster10` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `poster11` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `poster12` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `poster13` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `poster14` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `poster15` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
dakata__92
Активен
Активен

Регистриран на: 02/08/2011 9:24 pm

Support: 123
Bonus: 239
Мнения: 3148
Мнение 04/06/2019 6:33 pm      Отговорете с цитат


SQL code:
SELECT sum((poster1 IS NOT NULL) +
(poster2 IS NOT NULL) +
(poster3 IS NOT NULL) +
(poster4 IS NOT NULL) +
(poster5 IS NOT NULL) +
(poster6 IS NOT NULL) +
(poster7 IS NOT NULL) +
(poster8 IS NOT NULL) +
(poster9 IS NOT NULL) +
(poster10 IS NOT NULL) +
(poster11 IS NOT NULL) +
(poster12 IS NOT NULL) +
(poster13 IS NOT NULL) +
(poster14 IS NOT NULL) +
(poster15 IS NOT NULL) +
) AS total
FROM media
WHERE id = $id;


Това ти е заявката, с която ще изведеш тоталният брой на не празните колони за ред с идентификатор примерно 1. Ако имаш и PHP код, дай го за да ти помогнем ако не успееш.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
kini
Нов
Нов

Регистриран на: 01/05/2010 12:36 pm

Support: 2
Bonus: 4
Мнения: 149
Мнение 04/06/2019 6:41 pm      Отговорете с цитат


dakata__92 написа:
SQL code:
SELECT sum((poster1 IS NOT NULL) +
(poster2 IS NOT NULL) +
(poster3 IS NOT NULL) +
(poster4 IS NOT NULL) +
(poster5 IS NOT NULL) +
(poster6 IS NOT NULL) +
(poster7 IS NOT NULL) +
(poster8 IS NOT NULL) +
(poster9 IS NOT NULL) +
(poster10 IS NOT NULL) +
(poster11 IS NOT NULL) +
(poster12 IS NOT NULL) +
(poster13 IS NOT NULL) +
(poster14 IS NOT NULL) +
(poster15 IS NOT NULL) +
) AS total
FROM media
WHERE id = $id;


Това ти е заявката, с която ще изведеш тоталният брой на не празните колони за ред с идентификатор примерно 1. Ако имаш и PHP код, дай го за да ти помогнем ако не успееш.


Благодаря!

Това е начина, по който се опитвам да извадя резултата в момента, но не се получава


$placeid = $_GET['id'];

$result=mysql_query("SELECT sum((poster IS NOT NULL) +
           (poster2 IS NOT NULL) +
           (poster3 IS NOT NULL) +
           (poster4 IS NOT NULL) +
           (poster5 IS NOT NULL) +
           (poster6 IS NOT NULL) +
           (poster7 IS NOT NULL) +
           (poster8 IS NOT NULL) +
           (poster9 IS NOT NULL) +
           (poster10 IS NOT NULL) +
           (poster11 IS NOT NULL) +
           (poster12 IS NOT NULL) +
           (poster13 IS NOT NULL) +
           (poster14 IS NOT NULL) +
           (poster15 IS NOT NULL) +
          ) AS total
FROM media
WHERE id = '$placeid'");
$data=mysql_fetch_assoc($result);
echo $data['total'];
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
dakata__92
Активен
Активен

Регистриран на: 02/08/2011 9:24 pm

Support: 123
Bonus: 239
Мнения: 3148
Мнение 04/06/2019 7:10 pm      Отговорете с цитат


Дай ми var_dump на $data!
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
kini
Нов
Нов

Регистриран на: 01/05/2010 12:36 pm

Support: 2
Bonus: 4
Мнения: 149
Мнение 04/06/2019 7:17 pm      Отговорете с цитат


dakata__92 написа:
Дай ми var_dump на $data!


Изписва NULL, като въведа var_dump($data); Confused
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
dakata__92
Активен
Активен

Регистриран на: 02/08/2011 9:24 pm

Support: 123
Bonus: 239
Мнения: 3148
Мнение 04/06/2019 8:18 pm      Отговорете с цитат


SQL code:

SELECT count(poster1) +
count(poster2) +
count(poster3) +
count(poster4) +
count(poster5) +
count(poster6) +
count(poster7) +
count(poster8) +
count(poster9) +
count(poster10) +
count(poster11) +
count(poster12) +
count(poster13) +
count(poster14) +
count(poster15)
FROM media
WHERE id = $id;
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
kini
Нов
Нов

Регистриран на: 01/05/2010 12:36 pm

Support: 2
Bonus: 4
Мнения: 149
Мнение 04/06/2019 8:46 pm      Отговорете с цитат


dakata__92 написа:
SQL code:

SELECT count(poster1) +
count(poster2) +
count(poster3) +
count(poster4) +
count(poster5) +
count(poster6) +
count(poster7) +
count(poster8) +
count(poster9) +
count(poster10) +
count(poster11) +
count(poster12) +
count(poster13) +
count(poster14) +
count(poster15)
FROM media
WHERE id = $id;


Все още нищо не се изобразява. Кофти ситуация Crying or Very sad
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
dakata__92
Активен
Активен

Регистриран на: 02/08/2011 9:24 pm

Support: 123
Bonus: 239
Мнения: 3148
Мнение 04/06/2019 9:12 pm      Отговорете с цитат


Щеее направим старомодно броене докато се сетя как се правеше с SQL Very Happy
PHP code:

<?php

$placeid = $_GET['id'];

$result=mysql_query("SELECT poster1,
poster2,
poster3,
poster4,
poster5,
poster6,
poster7,
poster8,
poster9,
poster10,
poster11,
poster12,
poster13,
poster14,
poster15
FROM media
WHERE id = '$placeid'");
$data=mysql_fetch_assoc($result);
$count = 0;
foreach ($data as $val) {
if (!empty($val)) {
$count++;
}
}
print $count;
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
Revelation
Потребител
Потребител

Регистриран на: 24/03/2013 3:23 pm

Support: 57
Bonus: 114
Мнения: 764
Мнение 04/06/2019 11:29 pm      Отговорете с цитат


Само да кажа, че подхода е абсолютно погрешен и самата ситуация доказва това.

Предполагам това искаш да постигнеш:

http://sqlfiddle.com/#!9/52a622/5

SQL code:

SELECT
`id`,
`title`,
(
IF(IFNULL(`poster`, '') = '', 0, 1) +
IF(IFNULL(`poster2`, '') = '', 0, 1) +
IF(IFNULL(`poster3`, '') = '', 0, 1) +
IF(IFNULL(`poster4`, '') = '', 0, 1) +
IF(IFNULL(`poster5`, '') = '', 0, 1) +
IF(IFNULL(`poster6`, '') = '', 0, 1) +
IF(IFNULL(`poster7`, '') = '', 0, 1) +
IF(IFNULL(`poster8`, '') = '', 0, 1) +
IF(IFNULL(`poster9`, '') = '', 0, 1) +
IF(IFNULL(`poster10`, '') = '', 0, 1) +
IF(IFNULL(`poster11`, '') = '', 0, 1) +
IF(IFNULL(`poster12`, '') = '', 0, 1) +
IF(IFNULL(`poster13`, '') = '', 0, 1) +
IF(IFNULL(`poster14`, '') = '', 0, 1) +
IF(IFNULL(`poster15`, '') = '', 0, 1)
) AS `Total Columns Filled`
FROM
`media`
WHERE
`id` = 1
;


Погледни линка за демо.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
dakata__92
Активен
Активен

Регистриран на: 02/08/2011 9:24 pm

Support: 123
Bonus: 239
Мнения: 3148
Мнение 05/06/2019 3:15 pm      Отговорете с цитат


Revelation написа:
Само да кажа, че подхода е абсолютно погрешен и самата ситуация доказва това.

Предполагам това искаш да постигнеш:

http://sqlfiddle.com/#!9/52a622/5

SQL code:

SELECT
`id`,
`title`,
(
IF(IFNULL(`poster`, '') = '', 0, 1) +
IF(IFNULL(`poster2`, '') = '', 0, 1) +
IF(IFNULL(`poster3`, '') = '', 0, 1) +
IF(IFNULL(`poster4`, '') = '', 0, 1) +
IF(IFNULL(`poster5`, '') = '', 0, 1) +
IF(IFNULL(`poster6`, '') = '', 0, 1) +
IF(IFNULL(`poster7`, '') = '', 0, 1) +
IF(IFNULL(`poster8`, '') = '', 0, 1) +
IF(IFNULL(`poster9`, '') = '', 0, 1) +
IF(IFNULL(`poster10`, '') = '', 0, 1) +
IF(IFNULL(`poster11`, '') = '', 0, 1) +
IF(IFNULL(`poster12`, '') = '', 0, 1) +
IF(IFNULL(`poster13`, '') = '', 0, 1) +
IF(IFNULL(`poster14`, '') = '', 0, 1) +
IF(IFNULL(`poster15`, '') = '', 0, 1)
) AS `Total Columns Filled`
FROM
`media`
WHERE
`id` = 1
;


Погледни линка за демо.


Впрочем, нещо подобно и на мен ми се завъртя в главата, но си признавам, че тотално изключих снощи, как точно да се справя с този проблем и реших да пратя на човека поне един прост брояч.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
Покажи мнения от преди:    
Създайте нова тема   Напишете отговор    web-tourist.net Форуми -> PHP MySQL ASP.NET Часовете са според зоната GMT + 2 Часа
Страница 1 от 1


 
Идете на:  
Не Можете да пускате нови теми
Не Можете да отговаряте на темите
Не Можете да променяте съобщенията си
Не Можете да изтривате съобщенията си
Не Можете да гласувате в анкети