Как да направя диинамични линкове предишна/следваща?

streleca_stz

Registered
Здравейте! Искам да ви попитам как може да се направи следното: имам една галерийка която има:
Категории -> Под категории -> Снимки

И как може да се направи когато преглеждам снимката да има "Предишна" и "Следваща" и да сменя само тези които са в под категорията и примерно ако сме на последната снимка в определена под категория да не излиза "Следваща"..

:idea:
 
Използвай начина за писане на странициране. Идентичен е с твоя случай. Използвай unique полета(id) като провераваш дали съответства на броя на записите, ако е така не показваш линк следваща. По този начин направи и за първата снимка. Не е лошо сам да се опиташ и ако има грешки да пишеш за помощ.
 
Ами.. пробвах и уж проработи, но има един проблем..
Когато имам да речем 4 резултата които са с id- 1,2,3,4 работи, но когато са например 1,25,33,65 не работи.. Просто не мога да се седя как да го оправя
PHP:
	$pp = 1;
	$start = ($pic*$pp) - $pp;
	$rs = mysql_query('SELECT pic_id FROM `gallery_pic`') or die (mysql_error());
	$n = mysql_num_rows($rs);
	$total = ceil($n/$pp);

		if($pic==1)
		{
			echo 'Предишна';
		}
		else
		{
			echo '<a href="?photo='.($pic-1).'">Предишна</a>';
		}
		echo ' | ';
		if($pic>=$total)
		{
			echo 'Следваща';
		}
		else
		{
			echo '<a href="?photo='.($pic+1).'">Следваща</a>';
		}
$pic е id-то на снимката, която се преглежда. :idea:
 
В никакъв случай не би трябвало да използваш id номера за да се ориентираш дали има още снимки за показване, нито пък да го използваш в изчисленията.

1. Преброй колко снимки имаш. Ако показваш по една снимка на страница, това са общия брой страници:

PHP:
$category_id = (int) $_GET['category_id'];

$rs = mysql_query("select COUNT(pic_id) from gallery_pic where category_id = '$category_id' ") or die (mysql_error());
$total = mysql_fetch_field($rs);

Линковете за предишна/следваща ще съдържат номера на страницата, която искаш да покажеш. Винаги трябва да знаеш на коя страница си, в първия момент си на първа страница

PHP:
$page_id = (int) $_GET['page_id'];

if($page_id == 0) $page_id = 1;

//предишна страница
if($page_id > 1){
    echo "<a href=\"show.php?page_id=".($page_id - 1)."&category_id=$category_id\">Предишна</a>";
}

//следваща страница
if($page_id < $total){
    echo "<a href=\"show.php?page_id=".($page_id + 1)."&category_id=$category_id\">Следваща</a>";
}


Съответно пък заявката с която изкарваш снимката за контретната страница, също ще взима впредвид номера на страницата:

PHP:
$res = "select * from gallery_pic where category_id = '$category_id' limit ".($page_id - 1).", 1";
 
exec каза:
В никакъв случай не би трябвало да използваш id номера за да се ориентираш дали има още снимки за показване, нито пък да го използваш в изчисленията.

1. Преброй колко снимки имаш. Ако показваш по една снимка на страница, това са общия брой страници:

PHP:
$category_id = (int) $_GET['category_id'];

$rs = mysql_query("select COUNT(pic_id) from gallery_pic where category_id = '$category_id' ") or die (mysql_error());
$total = mysql_fetch_field($rs);

Линковете за предишна/следваща ще съдържат номера на страницата, която искаш да покажеш. Винаги трябва да знаеш на коя страница си, в първия момент си на първа страница

PHP:
$page_id = (int) $_GET['page_id'];

if($page_id == 0) $page_id = 1;

//предишна страница
if($page_id > 1){
    echo "<a href="show.php?page_id=".($page_id - 1)."&category_id=$category_id">Предишна</a>";
}

//следваща страница
if($page_id < $total){
    echo "<a href="show.php?page_id=".($page_id + 1)."&category_id=$category_id">Следваща</a>";
}


Съответно пък заявката с която изкарваш снимката за контретната страница, също ще взима впредвид номера на страницата:

PHP:
$res = "select * from gallery_pic where category_id = '$category_id' limit ".($page_id - 1).", 1";

Мм не знам, но пак не става.. Даже като е с id>1 не изкарва информацията за снимката, а знам, че я има
 

Back
Горе