![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 13.02.2007 Ostrzeżenie: (0%) ![]() ![]() |
pewnie post powinien byc w "przedszkolu", niemniej potrzebuje pomocy.
tworze galerie fotograficzna, i mam problem z zapytaniem mysql. adres strony to: http://www.photography.kw.pl/ mam takie cos: $query = "SELECT * FROM `photos` WHERE `".$nav."` = '".$value."'"; //gdzie $nav to np "category" lub "date", a value to np "arch" lub "people" lub np "2007-02-12" $result = mysql_query($query); $ilosc_fotek = mysql_num_rows($result); //to wiem ze nr ostatniego rekordu :-) przy przegladaniu zdjec chcialbym zeby byly opcja ogladania zdjec nastepnego i poprzedniego wzgledem daty i kategorii. jak to najprosciej zrobic ? jako zmienne mam na stronie wyciagniete pole z bazy danych [id] biezacego zdjecia. jak znalezc zdjecie poprzednie i nastepne ? nie moge zrobic +1 i -1 bo id juz nie sa po kolei, a co dopiero pozniej. poza tym, chce zeby przy pierwszym "previous" przeskakiwal do ostatniego, a w ostatnim "next" do pierwszego. mam nadzieje ze pomozecie, pozdro Hrehor |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 32 Pomógł: 1 Dołączył: 12.02.2007 Ostrzeżenie: (0%) ![]() ![]() |
$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.
Do tego jest właśnie LIMIT. Wytłumaczę. Jeśli
zwraca np. 10 rekordów to
zwraca jeden i do tego pierwszy rekord.
zwraca 4 rekordy począwszy od drugiego. W tym przypadku pierwsza liczba to rekord od którego zaczynamy -1. Dlatego właśnie jest tam -1. [Po co jest zmienna $np?] Jeśli chcesz funkcję to zrób to tak.
Ale jako $_GET['photo'_number'] używasz liczby z przedziału od 1 do ilości twoich fotek spełniających podane kryteria wyszukiwania np. względem kategorii. PS. Dałem w HTML bo php escape'ował quote'y. Ten post edytował tomaszdurka 14.02.2007, 13:10:50 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 13.02.2007 Ostrzeżenie: (0%) ![]() ![]() |
$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
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
a w kodzie strony jest tak
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 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 3.10.2025 - 23:28 |