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 :: Помогиде с sql и выводом запроса

 PHP.SU

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


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

> Без описания
landau
Отправлено: 27 Июня, 2015 - 18:42:30
Post Id


Новичок


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


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




В общем есть БД в ней таблица "news". В этой таблице есть поля id, title, text, author
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2.         //выборка из базы данных, из таблицы "news"
  3.        
  4.         $result = mysql_query('SELECT DISTINCT author FROM news') or die (mysql_error());
  5.         //формирование массива из sql запроса
  6.         $data = mysql_fetch_array($result);
  7.         // создание цикла для оперирования
  8.         echo "<h2>Заголовк страницы!</h2>";
  9.         do {
  10.         printf("<div id='authors'>
  11.         <a href='index.php?author=%s'>%s</a>
  12.         </div>",$data["author"],$data["author"]);
  13.         }
  14.         while ($data = mysql_fetch_array($result));
  15. ?>


Код выводит ссылкой на экран список авторов , из таблицы "news".
Пример:
_Вася_
_Гриша_
_Петя_

У каждого автора есть по несколько статей (text). Никак не могу сделать так что бы вместе со списком автора считались и выводились так же количество его статей например:
_Вася_ ---- [3]статьи
_Гриша_ ---- [1]статья
_Петя_ ---- [6]статей
 
 Top
Мелкий Супермодератор
Отправлено: 28 Июня, 2015 - 19:12:17
Post Id



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


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


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




CODE (SQL):
скопировать код в буфер обмена
  1. SELECT author, count(0) AS news_count FROM news GROUP BY author


-----
PostgreSQL DBA
 
 Top
landau
Отправлено: 30 Июня, 2015 - 02:04:49
Post Id


Новичок


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


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




Мелкий пишет:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT author, count(0) AS news_count FROM news GROUP BY author

Cпасибо но сделал по другому.
Может кому поможет....
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT author, COUNT(*) FROM news GROUP BY author


Ошибка была не в запросе а в самом выводе запроса, в цикле.
 
 Top
broshurkaplus
Отправлено: 01 Июля, 2015 - 11:58:30
Post Id



Посетитель


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


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




если предполагается авторов много и у каждого автора большое количество статей, то целесообразно выполнять подсчет количество статей у автора при их добавлении, например повесить триггер на таблицу и при добавлении статей добавять +1 к полю суммы статей в таблице авторов.
это увеличит время выполнения сценария (очень очень незначительно) при добавлении, но при выводе не потребуется выполнять подсчет count, что более затратно, ведь запросы на выборку происходят значительно чаще чем добавляются новые статьи.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB