Странициране на блог

vinsbg

Registered
Здравейте,

може ли малко помощ с един скрипт за странициране, че нещо не се получава и не работи коректно. Имам една страница с различни постове. Когато избера конкретен пост ме прехвърля на post.php, където е съответния пост. На него имам линкове за следващ пост и предишен, но когато избера следващ или предишен показва бяла страница.

Това е на страницата на конкретен пост (post_id=1)

Код:
<?php
			// include database connection
			require_once 'database.inc.php';
			$pdo = Database::connect();
           if(isset($_GET['post_id']) && is_numeric($_GET['post_id'])){
                    $post_id = $_GET['post_id'];
			// page is the current page, if there's nothing set, default is page 1
			$page = isset($_GET['page']) ? $_GET['page'] : 1;
 
			// set records or rows of data per page
			$recordsPerPage = 1;
 
			// calculate for the query LIMIT clause
			$fromRecordNum = ($recordsPerPage * $page) - $recordsPerPage;
 
			// select all data
			$query = "SELECT * FROM posts WHERE post_id = $post_id LIMIT {$fromRecordNum}, {$recordsPerPage}";

			$stmt = $pdo->prepare( $query );
			$stmt->execute();
			 
			//this is how to get number of rows returned
			$num = $stmt->rowCount();

			//check if more than 0 record found
			if($num>0){                            
				    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)){               
		                    echo '
                                                 // текста на поста ';     
                    }
        }                                                 

			    // *************** <PAGING_SECTION> ***************

			        // ***** for 'first' and 'previous' pages
			        if($page>1){        
			            // ********** show the previous page
			            $prev_page = $page - 1;
			            echo "
                <div class='col-xs-6 col-sm-6 col-md-6 nopadding'>
                    <a href='" . $_SERVER['PHP_SELF'] . "?page={$prev_page}'>
                        <div class='prev-btn control-nav text-left'>
                            <i class='fa fa-angle-double-left fa-2x'></i>
                            <h5>Предишна</h5>
                        </div>
                    </a>
                </div>                          
			            ";     
			        } 
			        // find out total pages
			        $query = "SELECT COUNT(*) as total_rows FROM posts";
			        $stmt = $pdo->prepare( $query );
			        $stmt->execute();
			 
			        $row = $stmt->fetch(PDO::FETCH_ASSOC);
			        $total_rows = $row['total_rows'];
			 
			        $total_pages = ceil($total_rows / $recordsPerPage);
			 
			        if($page<$total_pages){
			            // ********** show the next page
			            $next_page = $page + 1;
			            echo "		
                
                <div class='col-xs-6 col-sm-6 col-md-6 nopadding'>
                    <a href='" . $_SERVER['PHP_SELF'] . "?page={$next_page}'>
                        <div class='next-btn control-nav text-right'>
                            <i class='fa fa-angle-double-right fa-2x'></i>
                            <h5>Следваща</h5>
                        </div>
                    </a>
                </div>                                 			            
                        ";
			        } 
}
	?>
 
Извинявай, но не те разбрах?
Ако питаш дали имам условие ако няма следваща или предишна страница да махам бутона примерно - да ... проверявам. Просто го махнах тук да стане малко по-къс основния код за темата.

Същото това странициране го ползвам в галерия и там си работи без проблем. Тук обаче не иска..
 
vinsbg каза:
Извинявай, но не те разбрах?

Същото това странициране го ползвам в галерия и там си работи без проблем. Тук обаче не иска..
Примерно си на страницата. ID-то +1 за следващата е изтрито примерно или не е записвано изобщо в базата. Имам предвид че ако имаш 3 записа с ид-та
1 2 3 и си на страница с ид 3+1 тоест 4 следващата не съществува или 1 -1 за предишната. Правиш една заявка да проверява дали в базата има такова ид и чак тогава да те пренасочва.
 
dakata__92 каза:
vinsbg каза:
Извинявай, но не те разбрах?

Същото това странициране го ползвам в галерия и там си работи без проблем. Тук обаче не иска..
Примерно си на страницата. ID-то +1 за следващата е изтрито примерно или не е записвано изобщо в базата. Имам предвид че ако имаш 3 записа с ид-та
1 2 3 и си на страница с ид 3+1 тоест 4 следващата не съществува или 1 -1 за предишната. Правиш една заявка да проверява дали в базата има такова ид и чак тогава да те пренасочва.

Както споменах :
"
Ако питаш дали имам условие ако няма следваща или предишна страница да махам бутона примерно - да ... проверявам. Просто го махнах тук да стане малко по-къс основния код за темата."

Но не това е проблема, защото съм сигурен, че имам следващ пост :)
 
Да не е защото ползваш {} къдравите скоби вместо стринга така ?
echo "
<div class='col-xs-6 col-sm-6 col-md-6 nopadding'>
<a href='" . $_SERVER['PHP_SELF'] . "?page=".$prev_page."'>
<div class='prev-btn control-nav text-left'>
<i class='fa fa-angle-double-left fa-2x'></i>
<h5>Предишна</h5>
</div>
</a>
</div>
";

вместо <a href='" . $_SERVER['PHP_SELF'] . "?page={$prev_page}'>

Пробвай да не подаваш на линка си горе стойност да видиш дали реално е от това проблема:
post.php?page=
 
Проблема е че аз търся следваща страница май, а не следващо ID

Поне така си мисля.
 
vinsbg каза:
Проблема е че аз търся следваща страница май, а не следващо ID

Поне така си мисля.
Незнам. Честно казано ако локализираш какъв е проблема поне в коя част от кода не е и го изкараш може да го мислим повече.
 
dakata__92 каза:
vinsbg каза:
Проблема е че аз търся следваща страница май, а не следващо ID

Поне така си мисля.
Незнам. Честно казано ако локализираш какъв е проблема поне в коя част от кода не е и го изкараш може да го мислим повече.
Да, но това е проблема. Предполагам ако знаех къде е проблема може и да успея да го оправя, но уви...
 
vinsbg каза:
dakata__92 каза:
vinsbg каза:
Проблема е че аз търся следваща страница май, а не следващо ID

Поне така си мисля.
Незнам. Честно казано ако локализираш какъв е проблема поне в коя част от кода не е и го изкараш може да го мислим повече.
Да, но това е проблема. Предполагам ако знаех къде е проблема може и да успея да го оправя, но уви...
Добре ще я карам малко на последователни посоки и вероятно ще ти задавам глупави въпроси за да установим какъв е проблема. Та казваш че не извежда нищо. Да не е заради този код?
PHP:
//check if more than 0 record found
         if($num>0){                           
                while ($row = $stmt->fetch(PDO::FETCH_ASSOC)){               
                          echo '
                                                 // текста на поста ';     
                    }
        }
Вероятно греша за него но да си попитам.
Второ горе от линка ти взимаш $_GET['post_id'] пост айди докато в линка за некст и прев ти подаваш като гет параметър ?page=. Направи го така:
<a href='" . $_SERVER['PHP_SELF'] . "?post_id=".$prev_page."'>
<a href='" . $_SERVER['PHP_SELF'] . "?post_id=".$next_page."'>

За предишна и следваща и виш дали се получава. :?:

Другият ти варянт е да подаваш post_id и page като параметри защото спрямо тях правиш заявки а когато си подал примерно само page както в твоят случая параметъра post_id не е сетнат и не влизаш в проверката if(isset($_GET['post_id']) && is_numeric($_GET['post_id'])){ при което изобщо нищо не се изпълнява било то заявка или код. Според мен проблема е че не подаваш параметъра в линка за прев и некст пейдж примерно:
http://example.com/post.php?post_id=10&page=2 или http://example.com/post.php?post_id=2
или незнам. Принципно за прев трябва да поставиш долният лимит от заявката на ID - то а за некст горният. Но това е друго като цяло де. Първо виж как ще се развият нещата при теб. :)
 
dakata__92 каза:

Благодаря за отговора!
По този начин

<a href='" . $_SERVER['PHP_SELF'] . "?post_id=".$prev_page."'>
<a href='" . $_SERVER['PHP_SELF'] . "?post_id=".$next_page."'>
И след промяна от

Код:
$page = isset($_GET['page']) ? $_GET['page'] : 1;
на
Код:
$page = isset($_GET['post_id']) ? $_GET['post_id'] : 1;
Работите се оправиха и проработи, както трябва вече!
Отново благодаря! :?:
 

Back
Горе