We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 18793
    • 63 Posts
    Хочу написать сниппет вывода новостей из отдельной таблицы
    Но у меня не получается постраничная разбивка (брал из примера в сети)

    Fatal error: Unsupported operand types in E:\home\maupnew\manager\includes\document.parser.class.inc.php(769) : eval()’d code on line 12
    Помогите пожалуйста разобраться, думаю пригодиться многим
    Я думаю уже есть у кого-то готовые решения. Было бы неплохо поделиться с сообществом и для новичков будет полезно
    <?php
    $output = '';
    $tablenews = isset($tablenews) ? $tablenews : "news";
    $num = isset($num)? $num : 10;
    $newslistTpl = isset($newslistTpl) ? $newslistTpl : "NewsItem";
    
    $page =  isset($_GET['page']);
    
    $resultat = $modx->db->query('SELECT COUNT(*) FROM `'.$tablenews.'`');
    $posts = mysql_fetch_row($resultat);
    $output.=$posts.'<br />';
    $total = intval(($posts - 1) / $num) + 1;
    $output.=$total.'<br />';
    $page = intval($page);
    if(empty($page) or $page < 0) $page = 1;
      if($page > $total) $page = $total;
    $start = $page * $num - $num;
    
    $newssql = $modx->db->query('SELECT * FROM `'.$tablenews.'` LIMIT '.$start.', '.$num.'');
    while( $item = $modx->db->getRow( $newssql ) ) {
    $params['idn']=$item['idn'];
    $params['headline']=$item['headline'];
    $params['text']=$item['text'];
    $params['images']=$item['images'];
    $params['imagetext']=$item['imagetext'];
    $params['newsdata']=strftime("%d-%m-%Y",strtotime($item['insered']));
    $params['newstime']=strftime("%H:%M",strtotime($item['insered']));
    $output.=$modx->parseChunk("$newslistTpl", $params, '[+', '+]');
      } 
    
    // Проверяем нужны ли стрелки назад
    if ($page != 1) { $pervpage = ' <a href="'.$modx->makeURL($modx->documentObject['id'].'?page=1"><<</a> 
                                   <a href="'.$modx->makeURL($modx->documentObject['id'].'?page='. ($page - 1) .'"> < </a>';}
    // Проверяем нужны ли стрелки вперед
    if ($page != $total) { $nextpage = ' <a href="'.$modx->makeURL($modx->documentObject['id'].'?page='. ($page + 1) .'">></a>
                                       <a href="'.$modx->makeURL($modx->documentObject['id'].'?page=' .$total. '">>></a>'; }
    
    // Находим две ближайшие станицы с обоих краев, если они есть
    if($page - 2 > 0) { $page2left = ' <a href="'.$modx->makeURL($modx->documentObject['id'].'?page='. ($page - 2) .'">'. ($page - 2) .'</a> | ';}
    if($page - 1 > 0) { $page1left = '<a href="'.$modx->makeURL($modx->documentObject['id'].'?page='. ($page - 1) .'">'. ($page - 1) .'</a> | ';}
    if($page + 2 <= $total) { $page2right = ' | <a href="'.$modx->makeURL($modx->documentObject['id'].'?page='. ($page + 2) .'">'. ($page + 2) .'</a>';}
    if($page + 1 <= $total) { $page1right = ' | <a href="'.$modx->makeURL($modx->documentObject['id'].'?page='. ($page + 1) .'">'. ($page + 1) .'</a>';}
    
    
    $output.= $pervpage.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$nextpage; 
    
    return $output;
    ?>
    
      • 31268
      • 111 Posts
      $posts = mysql_fetch_row($resultat);
      $output.=$posts.'<br />';
      $total = intval(($posts - 1) / $num) + 1;
      


      Вы когда пишете - понимаете, ЧТО пишете?
      http://www.php.net/manual/en/function.mysql-fetch-row.php

      В $posts вернулся array
      И что потом с этой переменной вы делаете?
        Discere ne cesses
        • 18793
        • 63 Posts
        В общем разобрался что к чему и у меня все получилось! Хотя можно было уважаемым форумчанам подсказать.

        Я разбирал этот пример в котором так и указано
        http://www.softtime.ru/info/articlephp.php?id_article=33

        Если есть желающие могу выложить результат.

        Есть вопрос, как из этого http://site/site_page?page=5 сделать http://site/site_page/page5
        Что прописівать в .htaccess