[HELP]Вывод записей из базы

Тема в разделе "PHP", создана пользователем saylar_06, 27 ноя 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. saylar_06

    saylar_06 Создатель

    Регистр.:
    7 мар 2009
    Сообщения:
    42
    Симпатии:
    0
    Доброго времени суток! помогите мне решить задачку...

    Есть у меня две таблицы `Записи` и `Категории` в первой есть 10 заметок во второй 5 разумеется в таблице записи у каждой записи есть свой cat номер
    тоесть я могу вывести все категории и заметки в них...

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

    chang

    Регистр.:
    20 ноя 2009
    Сообщения:
    363
    Симпатии:
    117
    если верно понял то будет так
    PHP:
    SELECT  `cat` as 'cat'count (  `cat`  ) as 'count_cat' FROM `Записи`
    GROUP BY `cat`
     
    saylar_06 нравится это.
  3. Phrack

    Phrack

    Регистр.:
    3 ноя 2010
    Сообщения:
    264
    Симпатии:
    38
    если быть совсем точным, то

    PHP:
    select категории.catnamecount (категории.catname)
    from
     записи
    join
     категории
    on
     записи
    .catid категории.ид
    group by
     категории
    .catname
     
    saylar_06 нравится это.
  4. saylar_06

    saylar_06 Создатель

    Регистр.:
    7 мар 2009
    Сообщения:
    42
    Симпатии:
    0
    и так, что то у меня ничего не выходит :(

    оговорюсь ещё раз: есть две таблицы

    categories (id title)

    topics (id cat title)

    Делаю такой запрос:
    select categories.id, count (categories.id) from topics join categories on topics.cat = categories.id group by categories.id

    В результате хочу получить количество записей в категории
    В принципе жду такого результата чтоб когда в цикле выводил данные:
    Категория: 1 Записей: 3
    Категория: 2 Записей: 6
    Категория: 3 Записей: 0
    Категория: 4 Записей: 4

    но при попытке что то сделать пишет что FUNCTION name.count does not exist

    Что я делаю не так? Как нужно подправить запрос чтоб все сработало?
     
  5. Phrack

    Phrack

    Регистр.:
    3 ноя 2010
    Сообщения:
    264
    Симпатии:
    38
    а так работает?(убрали пробел)
     
    saylar_06 нравится это.
  6. saylar_06

    saylar_06 Создатель

    Регистр.:
    7 мар 2009
    Сообщения:
    42
    Симпатии:
    0
    хм, странно теперь начало выводить Resource id #(и тут число 13 15 18 11)
    Вот код к стати говоря:

    PHP:
    function get_categories() {
        global 
    $url;
        
            
    $sql "SELECT * FROM categories";
            
    $result mysql_query($sql);

            if (
    $result == FALSE) {
                echo 
    "Запрос на выборку данных из базы не прошел.".mysql_error();
            }
            if (
    mysql_num_rows($result) > 0) {
                
    $myrow mysql_fetch_assoc($result);
                do {
                    
    $title lat($myrow["title"]);
                    
    $SQL "select categories.id, count(categories.id) from topics join categories on topics.cat = categories.id group by categories.id";
                    
    $mysql_qu mysql_query($SQL);
                    if (
    $mysql_qu == FALSE) {
                        echo 
    "Запрос на выборку данных из базы не прошел.".mysql_error();
                    }
                    
    //$mysql_ar = mysql_fetch_array($mysql_qu);
                 
    printf ("<li><a rel=\"tag\" href=\"%s/category/%s/\">%s</a>[B]<sub>%s</sub>[/B]</li>",$url,$title,$myrow["title"],[B]$mysql_qu[/B]);
                } while (
    $myrow mysql_fetch_assoc($result));        
            } else {
                  echo 
    "<li><a rel=\"tag\" href=\"".$url."/#\">Нет записей!</a><sub>0</sub></li>";
                }
    }
     
  7. Hafner

    Hafner Постоялец

    Регистр.:
    9 июл 2008
    Сообщения:
    79
    Симпатии:
    30
    PHP:
    $sql2 mysql_query("select categories.id, count(categories.id) as total_topics from topics join categories on topics.cat = categories.id group by categories.id");
    $result2 mysql_fetch_assoc($sql2);

    printf ("<li><a rel=\"tag\" href=\"%s/category/%s/\">%s</a><b><sub>%s</sub></b></li>",$url,$title,$myrow["title"],$result2['total_topics']);
     
    saylar_06 нравится это.
  8. saylar_06

    saylar_06 Создатель

    Регистр.:
    7 мар 2009
    Сообщения:
    42
    Симпатии:
    0
    хм, почему то везде вывело 9 9 9 9 9 :) может в запросе надо где то вместо ID переменную дать, чтоб она менялась в цикле? или я что то не понимаю? :(
     
  9. Hafner

    Hafner Постоялец

    Регистр.:
    9 июл 2008
    Сообщения:
    79
    Симпатии:
    30
    Функция ужасная и запрос в том же духе...
    Всё это можно сделать более лаконично:
    PHP:
    function get_categories() {
        global 
    $url
        
    $query mysql_query("SELECT categories.title AS cat_title, count(topics.id) AS topics_total FROM categories, topics WHERE topics.cat = categories.id GROUP BY categories.id") or die(mysql_error());   
        if( 
    mysql_num_rows($query) == ) {
            
    $data "Данные отсутствуют...";
        } else {
            
    $data "";
            while( 
    $result mysql_fetch_assoc($query) ) {
                
    $title htmlspecialchars$result['cat_title'], ENT_QUOTES );
                
    $topics_total $result['topics_total'];
                
    $data .= "<li><a rel='tag' href='".$url."/category/".$title."/'>".$title."</a> - <b>".$topics_total."</b></li>";
            }
        }
        echo 
    $data;
    }
     
    saylar_06 нравится это.
Статус темы:
Закрыта.