Cytat(tomaszdurka @ 14.02.2007, 13:06:21 )

$current to nie jest id (twój primary_key), tylko jest to po prostu numer kolejności rekordu z rekordów zwróconcyh przez zapytanie.
wstawilem, ale nie dziala. pewnie dlatego ze nie rozumiem, jak zrozumiem to pewnie zadziala :-)
nie kumam zmiennej $_GET['photo_number'] - co to jest ? w tablicy GET jedyna wartoscia przekazywana jest $id, a skoro to nie jest photo_number to on (photo_number) zawsze bedzie rowny 1 (domyslna ustawiona wartosc). jesli $current jest numerem kolejnosci rekordu to chyba nie moze wystepowac w samym zapytaniu, bo wowczas (przed zapytaniem) ma wartosc nieokreslona. $current zostaje okreslony dopiero po zapytaniu, tak ?
pozdro
Hrehor
Cytat(bendi @ 14.02.2007, 14:38:52 )

<?php
$query1 = "SELECT * FROM `photos` WHERE `".$nav."` >= '".$value."' ORDER BY `".$nav."` ASC LIMIT 3";
$query1 = "SELECT * FROM `photos` WHERE `".$nav."` <= '".$value."' ORDER BY `".$nav."` ASC LIMIT 3";
?>
Takie rozwiązanie w sql'u mi pryzszło do głowy, moze trzeba troche pokombinowac, ale jezeli trzeba tylko pobrac rekord z tymi "dookola" to to moze byc dobra droga.
O to mi chodziło :-) mniej więcej, ale pchnęło na dobre tory. Po cały skrypt zapraszam do odp. dla tomaszadurka
dzięki i pozdro
Hrehor
nie wiem czemu odp dla usera bendi znalazla sie tutaj... niewazne
udalo mi sie w koncu napisac te funkcje. wyglada tak
<?
function navigation($nav,$value,$np,$id) {
$query_f = "SELECT * FROM `photos` WHERE `id` < ".$id." AND `".$nav."` = '".$value."' ORDER BY `id` ASC";
$query_p = "SELECT * FROM `photos` WHERE `id` < ".$id." AND `".$nav."` = '".$value."' ORDER BY `id` DESC";
$query_n = "SELECT * FROM `photos` WHERE `id` > ".$id." AND `".$nav."` = '".$value."' ORDER BY `id` ASC";
$query_l = "SELECT * FROM `photos` WHERE `id` > ".$id." AND `".$nav."` = '".$value."' ORDER BY `id` DESC";
$first = $firstrow[0];
$prev = $prevrow[0];
$next = $nextrow[0];
$last = $lastrow[0];
if($prev == $next){$next = $prev = $id;};
if (!$prev){$prev = $last;};
if (!$next){$next = $first;};
if ($np == "next"){
}
elseif ($np == "prev"){
}
else{
echo "np jest inny niz next lub prev"; }
}
?>
a w kodzie strony jest tak
<?php
navigation
(ee_date
,$row['ee_date'],prev,$id)navigation
(ee_date
,$row['ee_date'],next,$id)navigation
(category
,$row['category'],prev,$id)navigation
(category
,$row['category'],next,$id)?>
nie podoba mi sie w kodzie ze sa az 4 zapytania do bazy sql... pewnie da sie to uproscic. najwazniejsze ze dziala tak jak chcialem. chociaz musze przyznac ze popelnilem blad w zalozeniu - mianowicie teraz przegladanie zdjec wg $nav - ee_date, przeskakuje pomiedzy zdjeciami ktore maja te sama date. lepiej by bylo gdyby przeskakiwalo pomiedzy zdjeciami w calej bazie danych. ale teraz to pryszcz, tylko ze bedzie potrzebna nowa funkcja i zapytan do bazy bedzie 8.
dzieki za odpowiedzi
pozdro
Hrehor
naszla mnie jeszcze jedna rzecz, apropos zapytan sql z ktorych tu skorzystalem.
skoro zapytanie:
SELECT * FROM `photos` WHERE `id` < ".$id." AND `category` = 'arch' ORDER BY `id` ASC
zwraca wszystkie rzedy bazy danych z kategorii arch o id mniejszym od podanego, to powinna byc funkcja php pozwalajaca sie dostac zarowno do pierwszego jak i ostatniego rzedu.
wiem juz, ze funkcja mysql_fetch_row($query); zwroci pierwszy rzad. czy istnieje jakas ktora zwroci ostatni?
wtedy zapytan do bazy mialbym dwa razy mniej
pozdro
Hrehor