Проверка за следващ и предишен елемент по ID

Hous

Registered
Как може да се направи скриптче което да сравнява id на новината на която се намирам и примерно ако е 1, да показва линк novina.php.2
а ако сме на 2 да показва и novina.php.1 и novina.php.3 ,тоест просто странициране за напред и назад но да има условия Ако сме на първта и Ако сме на последната да не показва такива който не съществува с проверка от база данни и сравнение на id

Малко объркано се получи описанието но ми е трудно да пиша в момента,дано ме разбрахте.
 
това ще ти свърши работа
Код:
    include 'pagination.php';
    $results    = mysql_num_rows(mysql_query("SELECT `id` FROM `users`")); // общия брой резултати
    $pagination = new pagination(5, $results); // първо въвеждате по колко резултата искате да показват на страница, а после общия брой на резултатите

    $query = mysql_query("SELECT * FROM `users` LIMIT {$pagination->limit['first']}, {$pagination->limit['second']}") or die(mysql_error());
    while (...) {
        ...
    }

    echo $pagination->output; // изкарване на страниците, може да ги изкарате и над цикъла

Код:
<?php

class pagination {
	var $output 	= '';
	var $limit 		= array();
	
	function __construct($per_page, $results) {
		$total_pages 	= ceil($results / $per_page);
		$current_page 	= (isset($_GET['page']) && $_GET['page'] > 1) ? $_GET['page'] : 1;
		$current_page 	= ($current_page > $total_pages) ? $total_pages : $current_page;
		
		$previous 	= $current_page - 1;
		$next 		= $current_page + 1;
		
		$this->limit['first'] 	= ($current_page - 1) * $per_page;
		$this->limit['second'] 	= $per_page;
		
		$this->output .= '<div class=\'pagination\'>';
		
		if ($current_page != 1) {
			$this->output .= '<a href=\'?page=1\' class=\'active\'>първа</a>';
			$this->output .= '<a href=\'?page='.$previous.'\' class=\'active\'>Предишна</a>';
		} else {
			$this->output .= '<span class=\'inactive\'>първа</span>';
			$this->output .= '<span class=\'inactive\'>‹</span>';
		}
		
	
		
	
		
		if ($current_page != $total_pages) {
			$this->output .= '<a href=\'?page='.$next.'\' class=\'active\'>Следваща</a>';
			$this->output .= '<a href=\'?page='.$total_pages.'\' class=\'active\'>последна</a>';
		} else {
			$this->output .= '<span class=\'inactive\'>›</span>';
			$this->output .= '<span class=\'inactive\'>последна</span>';
		}
		
		$this->output .= '</div>';
	}
}

?>
 
Няма ли как с една заявка просто първо взимам ID в променлива и просто със заявката проверява дали имапо-малко или по-голямо ид и показва линк за napred / nazad според това дали има,защото това тук ми е малко забъркано.
Защото аз не искам да брои страници и прочие а просто предишна следваща новина АКо съществуват. :)
 
намерих нещо подобно но явно има грешка в него ли не знам,изписва ми unexpected end of file on line 246 което се явява последния ?> таг...

Код:
$sql_prev = "SELECT * FROM news WHERE id < '$id' ORDER BY id DESC LIMIT 1";
$result_prev = mysql_query ($sql_prev) or die (mysql_error());

while ($row4e = mysql_fetch_array($result_prev)) {
    $prev = $row4e['id'];
}

if (isset($prev)) {
    // print a previous link
    echo "<a href=\"blablabla\"> < </a>";
}
else {
    // just print the word "previous"

    echo "No Previous news ";
}


$sql_next = "SELECT * FROM news WHERE id > '$id' ORDER BY id LIMIT 1";
$result_next = mysql_query ($sql_next) or die (mysql_error());

while ($row5e = mysql_fetch_array($result_next)) {
    $next = $row5e['id'];
}

if (isset($next)) {
    // print a next link
    echo "<a href=\"blablabla\">Next</a>";
}
else {
    // just print the word "next"

    echo "No Next news";
 
Код:
$sql_prev = "SELECT * FROM news WHERE id < '$id' ORDER BY id DESC LIMIT 1";
$result_prev = mysql_query ($sql_prev) or die (mysql_error());

while ($row4e = mysql_fetch_array($result_prev)) {
    $prev = $row4e['id'];
}

if (isset($prev)) {
    // print a previous link
    echo "<a href=\"blablabla\"> < </a>";
}
else {
    // just print the word "previous"

    echo "No Previous news ";
}


$sql_next = "SELECT * FROM news WHERE id > '$id' ORDER BY id LIMIT 1";
$result_next = mysql_query ($sql_next) or die (mysql_error());

while ($row5e = mysql_fetch_array($result_next)) {
    $next = $row5e['id'];
}

if (isset($next)) {
    // print a next link
    echo "<a href=\"blablabla\">Next</a>";
}
else {
    // just print the word "next"

    echo "No Next news";
	
	}
беше забравил една скоба }
 
намерих по-кратък вариянт
който сработи
Код:
$p=mysql_query("SELECT * FROM news where id < $picid ORDER BY id DESC LIMIT 1");
 while ($prev_page=mysql_fetch_array($p)){
 echo "Ima predishna stranica ".$prev_page['id']." ";
 }
 $n=mysql_query("SELECT * FROM news where id > $picid  LIMIT 1");
 while ($next_page=mysql_fetch_array($n)){
 echo "Ima sledvashta stranica ".$next_page['id']."";
 }
ЕДИТ:ORDER BY id DESC
защото ако го няма винаги показва 1 вместо предния резултат,заради подредбата. :)
 

Back
Горе