Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Везде одно и тоже

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
Predator
Отправлено: 06 Августа, 2012 - 16:39:19
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 619
Дата рег-ции: Март 2012  
Откуда: Ярославль


Помог: 0 раз(а)

[+][+][+]


PHP:
скопировать код в буфер обмена
  1.  
  2. $tb = $db->query("SELECT `name` FROM category  WHERE `parentid` =26");
  3. $th = $db->query("SELECT count(*) AS id FROM post  WHERE `category` IN (SELECT id FROM category WHERE parentid=26)");
  4.  
  5.         while ($_row = $db->get_row($th )) {
  6.  
  7.                 while ($rowb = $db->get_row($tb, $th)) {
  8.  
  9.                 $tplb->set ( '{name}', $rowb['name'] );
  10.                 $tplb->set( '{news}',  $_row['id'] );          
  11.                 $tplb->compile ( 'Spisok_kat' );
  12.                 }
  13.                 }


Вывожу название категории: {name}, все категории выводятся если сходятся значения в запросе $tb.
Дальше запросом $th, пытаюсь вывести количество новостей в каждой категории вот тут и косяк. У всех категорий ,количество новостей столько сколько у первой категории которую выводит запрос $tb.

Как решить?
 
 Top
caballero
Отправлено: 06 Августа, 2012 - 16:42:33
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




group by


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Predator
Отправлено: 06 Августа, 2012 - 16:48:16
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 619
Дата рег-ции: Март 2012  
Откуда: Ярославль


Помог: 0 раз(а)

[+][+][+]


А в какой из запросов нужно прописывать?

(Отредактировано автором: 06 Августа, 2012 - 16:50:15)

 
 Top
caballero
Отправлено: 06 Августа, 2012 - 16:49:59
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




тот который количество возвращает
(Добавление)
http://www.php.su/books/?mysql
(Добавление)
http://www.php.su/mysql/manual/?...ge=Counting_rows


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Predator
Отправлено: 06 Августа, 2012 - 16:56:37
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 619
Дата рег-ции: Март 2012  
Откуда: Ярославль


Помог: 0 раз(а)

[+][+][+]


Спасибо за статьи, вроде бы получилось. Убрал один запрос, подключил еще таблицу.


Вопрос в следующем, как можно или как и чем заменить

Результат таков: вывод категории те в которых есть новости. С количеством новостей нет проблем Улыбка

(Отредактировано автором: 06 Августа, 2012 - 17:53:16)

 
 Top
tuareg
Отправлено: 06 Августа, 2012 - 20:34:22
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




Predator А почитать самому? Если я правильно понял, то вместо LEFT JOIN ==> INNER JOIN
 
 Top
KingStar
Отправлено: 06 Августа, 2012 - 20:59:53
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


Помог: 69 раз(а)




ему впадлу читать, если не знает или будет работать


-----
То что программа работает, не означает что она написана правильно!
 
 Top
Predator
Отправлено: 06 Августа, 2012 - 21:24:56
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 619
Дата рег-ции: Март 2012  
Откуда: Ярославль


Помог: 0 раз(а)

[+][+][+]


Что я не пробовал, получился более менее такой вариант:
PHP:
скопировать код в буфер обмена
  1.  
  2.         $tb = $db->query("SELECT `name`,  count(*) AS id
  3.         FROM category c
  4.         LEFT JOIN post p ON (c.id=p.category)
  5.         WHERE `parentid` =26
  6.         AND `category` IN (SELECT id FROM category WHERE parentid=26)
  7.         GROUP BY name
  8.         ");
  9.  
  10.  
  11.  


Выводит только те категории с подсчетом новостей,если соблюдается:

Помогите второй час выношу мозг.

(Отредактировано автором: 06 Августа, 2012 - 21:26:27)

 
 Top
caballero
Отправлено: 06 Августа, 2012 - 21:54:29
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




во первых давать полям имена типа name user и т.д. хреновая привычка а во вторых если связываешь две таблицы потрудись указать к какой из них относится поле. Не удивлюсь если в обоих таблицах есть поле с именем name


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Predator
Отправлено: 06 Августа, 2012 - 21:57:39
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 619
Дата рег-ции: Март 2012  
Откуда: Ярославль


Помог: 0 раз(а)

[+][+][+]


name имеется только в таблице category. А на счет совпадений, есть но не с этим полем. Переделаю если это получится сделать иначе нет необходимости.
 
 Top
Bio man
Отправлено: 06 Августа, 2012 - 22:10:01
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


Помог: 52 раз(а)




caballero пишет:
во первых давать полям имена типа name user и т.д. хреновая привычка
Почему? Какие тогда имена давать?
 
 Top
Predator
Отправлено: 06 Августа, 2012 - 22:48:06
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 619
Дата рег-ции: Март 2012  
Откуда: Ярославль


Помог: 0 раз(а)

[+][+][+]


Bio man пишет:
caballero пишет:
во первых давать полям имена типа name user и т.д. хреновая привычка
Почему? Какие тогда имена давать?

Чаще всего они совпадают с именами из другой таблицы.



Да помогите, подскажите как правильно... На будущее учту.
 
 Top
Bio man
Отправлено: 06 Августа, 2012 - 23:14:06
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


Помог: 52 раз(а)




Predator пишет:
Чаще всего они совпадают с именами из другой таблицы.
И только? Бред какой то.


Ну а что подсказывать, ошибки как на ладони, надо быть слепым, что бы не заметить.
 
 Top
LIME
Отправлено: 06 Августа, 2012 - 23:17:24
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Bio man пишет:
И только?
да
при склейке неудобно имена таблиц полям приписывать и алиасы
 
 Top
caballero
Отправлено: 06 Августа, 2012 - 23:24:17
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




Цитата:
Почему? Какие тогда имена давать?

такие которые не совпадают с ключевыми словами SQL
кроме того это нечитабельно - фиг его знает чей это name

(Отредактировано автором: 06 Августа, 2012 - 23:27:13)



-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB