вземане на следващо и предишно ид

embaka

Registered
здравейте,

някой правил ли е нещо такова, значи в таблицата, където се записват снимките ид-тата са пръснати и трябва да направя бутони за напред и назад, но има и друго нещо, че освен следваща, предишна ми трябва и първа последна, за да махам стрелките, когато сана първа и последна

ако има вариянт, чрез смарти, ако някой е правил такова нещо още по-добре ще е, че няма да го правя на php
 
Следваща
Код:
$id++;
Предишна
Код:
$id--;
Последна
Код:
$query2 = mysql_query("SELECT * FROM `news` WHERE `cat_id` = '$catID' ORDER BY `news_id` DESC LIMIT 0,1");
Първа
Код:
$query2 = mysql_query("SELECT * FROM `news` WHERE `cat_id` = '$catID' ORDER BY `news_id` LIMIT 0,1");
 
по тоя начин малко трудно ще стане както сте го описали :D, правя проверки за текущата снимка, да вземе две позиции назад и 2 напред, за да е винаги в средата тая която се гледа, съответно трябва да взема стойността от последната, която се вижда в дясно и тая в ляво :D


значи имам мин и макс, остана да оправя само стрелките на галерийката

Код:
$this->_data_holder['min'] = $this->_dbh->GetOne("SELECT MIN(id) as min FROM `images` WHERE `type`='gallery' AND `parent`='".$this->_holder['parent']."'");
				
				$this->_data_holder['max'] = $this->_dbh->GetOne("SELECT MAX(id) as max  FROM `images` WHERE `type`='gallery' AND `parent`='".$this->_holder['parent']."'");


				$this->_data_holder['results'] = $this->_dbh->GetAll("SELECT `id`,`url` FROM `images` WHERE `type`='gallery' AND `id`!='".$this->_ad_id."' AND `parent`='".$this->_holder['parent']."'");
				
				foreach($this->_data_holder['results'] as &$gall)
				{
					
					$gall['left2'] = $this->_dbh->GetAll("SELECT `id`,`url` FROM `images` WHERE `id`!='".$this->_ad_id."' AND `id`>'".$this->_ad_id."' AND `parent`='".$this->_holder['parent']."' ORDER BY `sort_order` ASC, `id` ASC LIMIT 0,2");				
					if (sizeof($gall['left2']) == 0)
					{
						$gall['right2'] = $this->_dbh->GetAll("SELECT `id`,`url` FROM `images` WHERE `id`!='".$this->_ad_id."' AND `id`<'".$this->_ad_id."' AND `parent`='".$this->_holder['parent']."' ORDER BY `sort_order` DESC, `id` DESC LIMIT 0,4");
					}
					elseif (sizeof($gall['left2']) == 1)
					{
						$gall['right2'] = $this->_dbh->GetAll("SELECT `id`,`url` FROM `images` WHERE `id`!='".$this->_ad_id."' AND `id`<'".$this->_ad_id."' AND `parent`='".$this->_holder['parent']."' ORDER BY `sort_order` DESC, `id` DESC LIMIT 0,3");
					}
					elseif (sizeof($gall['left2']) == 2)
					{
						$gall['right2'] = $this->_dbh->GetAll("SELECT `id`,`url` FROM `images` WHERE `id`!='".$this->_ad_id."' AND `id`<'".$this->_ad_id."' AND `parent`='".$this->_holder['parent']."' ORDER BY `sort_order` DESC, `id` DESC LIMIT 0,2");

					}

				}
 
Всъщност нищо от това не помогна, което дадохте, аз го оправих. Глагодаря все пак за отделеното време :?:
 
Имах същия проблем скоро и мисля че намерих най-правилния начин.
SQL за предишно id:
Код:
SELECT `id`,COUNT(`id`) AS `num` FROM `table` WHERE `id`<'current_id' LIMIT 0,1
Като целта на `num` е да провериш дали има изобщо предишно или следващо id и съответно SQL за следващо id:
Код:
SELECT `id`,COUNT(`id`) AS `num` FROM `table` WHERE `id`>'current_id' LIMIT 0,1
Трябва да направиш сортиране по id също така.
 

Back
Горе