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
Форумы портала PHP.SU :: Версия для печати :: Везде одно и тоже
Форумы портала PHP.SU » » Вопросы новичков » Везде одно и тоже

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

1. Predator - 06 Августа, 2012 - 16:39:19 - перейти к сообщению
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.

Как решить?
2. caballero - 06 Августа, 2012 - 16:42:33 - перейти к сообщению
group by
3. Predator - 06 Августа, 2012 - 16:48:16 - перейти к сообщению
А в какой из запросов нужно прописывать?
4. caballero - 06 Августа, 2012 - 16:49:59 - перейти к сообщению
тот который количество возвращает
(Добавление)
http://www.php.su/books/?mysql
(Добавление)
http://www.php.su/mysql/manual/?...ge=Counting_rows
5. Predator - 06 Августа, 2012 - 16:56:37 - перейти к сообщению
Спасибо за статьи, вроде бы получилось. Убрал один запрос, подключил еще таблицу.


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

Результат таков: вывод категории те в которых есть новости. С количеством новостей нет проблем Улыбка
6. tuareg - 06 Августа, 2012 - 20:34:22 - перейти к сообщению
Predator А почитать самому? Если я правильно понял, то вместо LEFT JOIN ==> INNER JOIN
7. KingStar - 06 Августа, 2012 - 20:59:53 - перейти к сообщению
ему впадлу читать, если не знает или будет работать
8. Predator - 06 Августа, 2012 - 21:24:56 - перейти к сообщению
Что я не пробовал, получился более менее такой вариант:
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.  


Выводит только те категории с подсчетом новостей,если соблюдается:
PHP:
скопировать код в буфер обмена
  1. LEFT JOIN post p ON (c.id=p.category)

Помогите второй час выношу мозг.
9. caballero - 06 Августа, 2012 - 21:54:29 - перейти к сообщению
во первых давать полям имена типа name user и т.д. хреновая привычка а во вторых если связываешь две таблицы потрудись указать к какой из них относится поле. Не удивлюсь если в обоих таблицах есть поле с именем name
10. Predator - 06 Августа, 2012 - 21:57:39 - перейти к сообщению
name имеется только в таблице category. А на счет совпадений, есть но не с этим полем. Переделаю если это получится сделать иначе нет необходимости.
11. Bio man - 06 Августа, 2012 - 22:10:01 - перейти к сообщению
caballero пишет:
во первых давать полям имена типа name user и т.д. хреновая привычка
Почему? Какие тогда имена давать?
12. Predator - 06 Августа, 2012 - 22:48:06 - перейти к сообщению
Bio man пишет:
caballero пишет:
во первых давать полям имена типа name user и т.д. хреновая привычка
Почему? Какие тогда имена давать?

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



Да помогите, подскажите как правильно... На будущее учту.
13. Bio man - 06 Августа, 2012 - 23:14:06 - перейти к сообщению
Predator пишет:
Чаще всего они совпадают с именами из другой таблицы.
И только? Бред какой то.


Ну а что подсказывать, ошибки как на ладони, надо быть слепым, что бы не заметить.
14. LIME - 06 Августа, 2012 - 23:17:24 - перейти к сообщению
Bio man пишет:
И только?
да
при склейке неудобно имена таблиц полям приписывать и алиасы
15. caballero - 06 Августа, 2012 - 23:24:17 - перейти к сообщению
Цитата:
Почему? Какие тогда имена давать?

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

 

Powered by ExBB FM 1.0 RC1