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 » » Вопросы новичков » Постраничный вывод новостной ленты

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

1. razor1511 - 05 Июля, 2017 - 16:18:38 - перейти к сообщению
Господа программисты прошу помочь, моей тупой душе ... суть в том что есть кусок кода который отображает новости из BD ... и есть кусок кода который создает постраничный просмотр, но 3 дня мучений и 2 полушария моего мозга не смогли сделать постраничный просмотр статей из BD. П.с разделил все на блоки из который собрал, да бы каши была ... но в ней хоть разобраться было можно

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.         $pdo = null;
  4.         function connect_to_db()
  5.         {
  6.             $dbengine   = 'mysql';
  7.             $dbhost     = 'localhost';
  8.             $dbuser     = 'root';
  9.             $dbpassword = '';
  10.             $dbname     = 'news';
  11.  
  12.             try{
  13.                 $pdo = new PDO("".$dbengine.":host=$dbhost; dbname=$dbname", $dbuser,$dbpassword);
  14.                 $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
  15.                 return $pdo;
  16.             }  
  17.             catch (PDOException $e){
  18.                 $e->getMessage();
  19.             }
  20.         } ?>
  21.  
  22.                
  23.                
  24.                 <?PHP
  25.  
  26.  
  27.     function fetchNews( $conn )
  28.     {
  29.  
  30.         $request = $conn->prepare(" SELECT news_id, news_title, news_img_short, news_short_description, news_author, news_published_on FROM info_news ORDER BY news_published_on DESC ");
  31.         return $request->execute() ? $request->fetchAll() : false;
  32.     }
  33.  
  34.  
  35.     function getAnArticle( $id_article, $conn )
  36.     {
  37.  
  38.         $request =  $conn->prepare(" SELECT news_id,  news_title, news_img_short, news_full_content, news_author, news_published_on FROM info_news  WHERE news_id = ? ");
  39.         return $request->execute(array($id_article)) ? $request->fetchAll() : false;
  40.     }
  41.  
  42.  
  43.     function getOtherArticles( $differ_id, $conn )
  44.     {
  45.         $request =  $conn->prepare(" SELECT news_id,  news_title, news_img_short, news_short_description, news_full_content, news_author, news_published_on FROM info_news  WHERE news_id != ? ");
  46.         return $request->execute(array($differ_id)) ? $request->fetchAll() : false;
  47.     }
  48.         ?>
  49.                
  50.                
  51.                
  52.                
  53.                
  54.                
  55.  
  56. CODE (html):
    скопировать код в буфер обмена
    1. <html>
    2. <head>
    3. <title>Welcome to news channel</title>
    4.  
    5.     <link rel="stylesheet" type="text/css" href="design/style.css">
    6. </head>
    7. <body>
    8.  
    9.  
    10.        
    11.        
    12.         <div class="news">
    13.         <?php
    14.    // get the database handler
    15.    $dbh = connect_to_db();
    16.    // Fecth news
    17.    $news = fetchNews($dbh);
    18. ?>
    19.  
    20. <?php if ( $news && !empty($news) ) :?>
    21.  
    22. <?php foreach ($news as $key => $article) :?>
    23. <h2><a href="read-news.php?newsid=<?= $article->news_id ?>"><?= stripslashes($article->news_title) ?></a></h2>
    24. <p><?= stripslashes($article->news_short_description) ?><img src="<?= stripslashes($article->news_img_short) ?>"></p>
    25.  
    26. <?php endforeach?>
    27.  
    28. <?php endif?>
    29.  
    30. </div>
    31.  
    32. </body>
    33. </html>
  •  
  •  
  •  
  •  
  • <?PHP
  • $total_articles_number = 5;   //общее количество статей
  • $articles_per_page=2; // количество статей на странице
  • //получаем количество страниц
  • $total_pages = ceil($total_articles_number/$articles_per_page);
  •  
  •  
  • // запускаем цикл - количество итераций равно количеству страниц
  • for ($i=0; $i<$total_pages; $i++)
  • {
  • // получаем значение $from (как $page_number) для использования в формировании ссылки
  • $page_number=$i*$articles_per_page;
  • // если $page_number (фактически это проверка того является ли $from текущим) не соответствует
  • // текущей странице,
  • // выводим ссылку на страницу со значением $from равным $page_number
  • if ($page_number!=$from) echo "<a href='".$PHP_SELF."?from=".$page_number."'> ".($i+1).
  •     " </a>";
  • // иначе просто выводим номер страницы - данная строка необязательна,
  • // пропустив ее вы просто получите линк на текущую страницу
  • else echo $i+1; // если page_number - текущая страница - ничего не выводим (ссылку не делаем)
  • }
  • ?>
  •  
  •  
  •  
  •  
  • 2. andrewkard - 07 Июля, 2017 - 07:04:51 - перейти к сообщению
    Не увидел у Вас смещение в запросе в зависимости от страницы, которую просматривает пользователь
    PHP:
    скопировать код в буфер обмена
    1.  
    2. //SELECT * FROM tbl LIMIT 5,10;  # Retrieve rows 6-15
    3.  
    4. $page = (int)$_GET['p'];
    5. $total = 5;
    6.  
    7. $offset = $page * $total;
    8. $sql = "SELECT * FROM tbl LIMIT $total,$offset";
    9.  

     

    Powered by ExBB FM 1.0 RC1