За последние 24 часа нас посетили 17862 программиста и 1657 роботов. Сейчас ищут 1855 программистов ...

Как вывести статьи по категориям постранично

Тема в разделе "PHP и базы данных", создана пользователем Arisov, 9 май 2018.

Метки:
  1. Arisov

    Arisov Новичок

    С нами с:
    9 май 2018
    Сообщения:
    5
    Симпатии:
    0
    Все привет как вывести категории постранично к примеру нажимаешь на категорию здоровье и выходят все статьи с категорией здоровье.Второй месяц ломаю голову над этим.
    снизу код страницы категория
    PHP:
    1. if (isset($_GET['category'])) {
    2.             $category = (int)$_GET['category'];
    3.             $query = mysqli_query($connect,"SELECT * FROM `articles` WHERE `categorie_id`= 1  ORDER BY `id`  DESC LIMIT $start, $limit ");
    4.             $page = $_GET["page"];
    5.             if ($page < 1 or $page == "") $page = 1;
    6.             $limit = 5;
    7.             $start = getStart($page, $limit);
    8.             $articles = getAllArticles($start, $limit);
    9.             for ($i = 0; $i < count($articles); $i++) {
    Код (Text):
    1. <?php
    2.    require"application/includes/config.php";
    3.    require"application/includes/functions.php";
    4. ?>
    5. снизу код главной страницы index.php
    6. <!DOCTYPE html>
    7. <html>
    8. <head>
    9.   <?php
    10.     $title="Ты в Спорте";
    11.     require_once "application/blocks/head.php";
    12.   ?>
    13. </head>
    14. <body>
    15.  
    16.   <?php
    17.     require_once "application/blocks/top.php";
    18.     require_once "application/blocks/header.php";
    19.   ?>
    20.       <div class="page">
    21.       <div class="container clear">
    22.         <div class="content">
    23.    
    24.           <?php
    25.            $page = $_GET["page"];
    26.             if ($page < 1 or $page == "") $page = 1;
    27.             // количество строк-статей на стр.
    28.             $limit = 15;
    29.             // начало выборки из БД
    30.             $start = getStart($page, $limit);
    31.            
    32.             $articles = getAllArticles($start, $limit);
    33.             for ($i = 0; $i < count($articles); $i++) {
    34.             ?>
    35.             <div class="article">
    36.                 <a href="article.php?id=<?php echo $articles[$i]['id']; ?>"><img class="article_img" alt="<?php echo $articles[$i]['title']; ?>" title="<?php echo $articles[$i]['title']; ?>" src="application/images/<?php echo $articles[$i]['image']; ?>"></a>
    37.                <h1><?php echo $articles[$i]['title']; ?></h1>
    38.                <p class="preliminary">
    39.                    <?php echo mb_substr(strip_tags($articles[$i]['text']), 0, 69, 'utf-8').' ...'; ?>
    40.                </p>
    41.                <div class="data-cat">
    42.                     <div class="data">
    43.                     <img src="public/images/kalendar.png" class="below-img" style="width: 14px; height: 14px; float: left; margin-top: 1px; padding-right: 5px;">
    44.                         <span class="article-data">
    45.                             <a href="index.php" title="<?php echo russian_date($articles[$i]['pubdate']);?> "><?php echo russian_date($articles[$i]['pubdate']);?></a>
    46.                          </span>
    47.                     </div>
    48.               <?php
    49.               ?>
    50.                     <span class="categories">
    51.                   <?php
    52.                    $art_cat=false;
    53.                     foreach ($catigories as $cat ) {
    54.                      if ($cat['id']==$articles[$i]['categorie_id']) {
    55.                        $art_cat=$cat;
    56.                        break;
    57.                      }
    58.                     }
    59.                   ?>
    60.                         <a href="category.php?id=<?php echo $art_cat['id']; ?>"  
    61.                  title="<?php echo $art_cat['title'];?>">
    62.                  <?php echo $art_cat['title'];?>
    63.                   </a>
    64.                     </span>
    65.                 </div>
    66.                 <div align="center" class="btn">
    67.                   <a href="article.php?id=<?php echo $articles[$i]['id']; ?> ">Прочитать полностью</a>
    68.                </div>
    69.           </div>
    70.             <?php
    71.             }
    72.             ?>
    73.           <div class="paginator">
    74.             <?php
    75.                echo pagination($page, $limit);
    76.             ?>
    77.           </div>  
    78.         </div>
    79.          <?php  require_once "application/blocks/sidebar.php"; ?>
    80.         </div>
    81.         <div class="clear"></div>
    82.   </div>
    83.   <?php  require_once "application/blocks/footer.php"; ?>
    84. </body>
    85. </html>
     
  2. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
  3. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.842
    Симпатии:
    652
    Как сделать вывод списка статей? Там же есть ссылка на отдельную статью про пагинацию.
    --- Добавлено ---
    С фильтрацией по категории или нет, пофиг. Просто получайте значение categorie_id, исходя из адреса. Слаг или числовой id в адресе, тоже в общем-то пофиг. В любом случае делайте предварительный запрос для проверки существования запрошенной категории.
    --- Добавлено ---
    Вот тут описано, как фильтровать по категории, автору и т.п., если вы в собственном коде не можете разобраться. Единственная тонкость, если для статей нужны метаданные категории, автора и т.п. при включенной фильтрации, их можно брать из предварительного запроса, а не присоединять одно и то же в основном запросе.
    --- Добавлено ---
    Но для единообразия результатов, если говорить о составе полей, фактические данные из предварительного запроса можете вставить непосредственно в основной запрос или его результат. Пример тут можно посмотреть (там есть демка, где прямо показываются тексты запросов).
     
  4. Arisov

    Arisov Новичок

    С нами с:
    9 май 2018
    Сообщения:
    5
    Симпатии:
    0
    мне не нужен пагинатор. Вопрос в том что нужно вывести статьи с определенной категорией. К примеру нажимаешь на категорию здоровье и выходят все статьи с категорией здоровье.
     
  5. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.842
    Симпатии:
    652
    Большая часть того, что я написал, как раз про это. Глаза разуй, Mля!
    --- Добавлено ---
    И нафиг надо было писать «постранично»? Чтобы потом эту хреновую предъяву запостить?
     
  6. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.115
    Симпатии:
    1.244
    Адрес:
    там-сям
    Спокойно, горячие парни! :) В интенете всегда кто-то неправ. Не надо выплескивать негатив, даже если тебе очень не нравится ответ. Это просто ничего не даёт, ни тебе, ни тому парню.
    --- Добавлено ---
    @Arisov когда совсем не врубаешся, решай проблему по частям. И не забывай благодарить тех, кто откликнулся. Даже если тебе почудилась ирония или упрек.

    Не мог бы ты пояснить конкретнее про категории. Без "нажимаешь на…", а в терминах таблиц и полей. Как у тебя заданы категории?

    Каков твой уровень в SQL. Умеешь ли ты соединять таблицы в запросе?
     
  7. Arisov

    Arisov Новичок

    С нами с:
    9 май 2018
    Сообщения:
    5
    Симпатии:
    0
    вот таблица
    -Таблица articles
    -id
    -title
    -text
    -pubdate
    -views
    -categorie_id

    -Таблица articles_categories
    -id
    -title
    нужно чтобы выводились статьи с заданной категорией
     
  8. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.842
    Симпатии:
    652
    Код (Text):
    1. WHERE `categorie_id`= 1
    Но с таким подходом к делу вы по-любому закопаетесь. Включайте соображалку, да побыстрее.
    --- Добавлено ---
    Нафиг тебе $category, если ты его все равно не используешь ;)
     
  9. Arisov

    Arisov Новичок

    С нами с:
    9 май 2018
    Сообщения:
    5
    Симпатии:
    0
    забыл поменять кода писал сюдано все роdно не работает если вместо 1 поставить $category
     
  10. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.842
    Симпатии:
    652
    Никогда так больше не отвечайте, а то постоянно посылать будут.
    --- Добавлено ---
    По поводу соunt($articles) и этого цикла вам же писали на киберфоруме. Нафиг вы эту хрень опять запостили?
    --- Добавлено ---
    Либо while с построчным извлечением записей из рез. выборки, либо foreach с использованием встроенного итератора или предварительного извлечения в массив всей выборки.
    --- Добавлено ---
    В случае всей выборки в массиве можете использовать и for. Только нафига?
     
  11. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    Допустим у тебя есть 3 категории у этих категорий свой id тебе всего лишь нужно по этому id вытягивать статьи.
    Получается если обращаться к id = 1 покажешь статьи со здоровьем, или к id = 2 покажешь статьи питания.
    Сделать запрос правильный, что от вас и требуется.
     
    #11 _ne_scaju_, 10 май 2018
    Последнее редактирование: 10 май 2018
  12. Arisov

    Arisov Новичок

    С нами с:
    9 май 2018
    Сообщения:
    5
    Симпатии:
    0
    а у меня не правильно разве ?

    PHP:
    1. $page = $_GET["page"];
    2.             if ($page < 1 or $page == "")
    3.             $page = 1;
    4.             $limit = 5;
    5.             $start = getStart($page, $limit);
    6.                 if (isset($_GET['category'])){
    7.                 $category = (int)$_GET['category'];
    8.                 $query = mysqli_query($connect,"SELECT * FROM `articles` WHERE `categorie_id`= $category ORDER BY `id`  DESC LIMIT $start, $limit ");
    9.                 while ($article = mysql_fetch_array($query,MYSQLI_ASSOC)) {
    10.            }
    11. }
    странно, но код все ровно не работа способный
     
    #12 Arisov, 10 май 2018
    Последнее редактирование: 10 май 2018
  13. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    а ошибку выводить хоть что-нибудь, сложно помочь без уточнений.
     
  14. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.842
    Симпатии:
    652
    @_ne_scaju_, это тролль. Он опять свою единицу зафигачил. И смешал mysqli- и mysql-функции.
    --- Добавлено ---
    @Arisov, результаты выполнения запросов нужно проверять. Значения всех переменных в процессе отлова ошибки отслеживать. Не использовать древнее расширение для работы с БД.
     
  15. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    если честно не увидел, в переменной $page единицу записал?
    А на счет расширения вроде нормальное mysqli но я им не пользуюсь, потому что не знаю :D учил сразу PDO.
     
  16. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.842
    Симпатии:
    652
    Да все там же. Уже исправил. Но оригинал остался в вашем цитировании :)
    --- Добавлено ---
    Речь не о том. Внимательно прочтите, что я написал.
     
  17. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    Спасибо, не хочу углубляться, ведь ошибки у всех бывают.
     
  18. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.842
    Симпатии:
    652