![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 372 Pomógł: 2 Dołączył: 10.05.2009 Ostrzeżenie: (0%) ![]() ![]() |
witam,
wykonuje proste zapytanie na bazie:
Teraz odczytuje dane i porównuje je z rekordem wczytanym z GET, a więc robię pętle która przebiega po wszystkich elementach i wyszukuje elementu o id takim samym jak to pobrane z GET
Jeśli ID istnieje to wyświetlam dane zdjęcie i teraz jak wyciągnąć następny element tego zapytania i poprzedni element tego zapytania (potrzebuje tego do zrobienia nawigacji zdjeć, back i next. Chciałem po id np id-1, oraz id+1 ale id mogą być różne, chciałem po pozycji ale pozycja może miec ten sam numerek albo też dwa numerki wiecej...Czy jest jakaś np. funkcja w PHP za pomocą której mogę wyciągnąć następny element zapytania (po tym jak spełniony został warunek: if($tworze_min['id'] == $_GET['id'])) oraz poprzedni element. |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 744 Pomógł: 118 Dołączył: 14.02.2009 Skąd: poziome Ostrzeżenie: (0%) ![]() ![]() |
1. sprawa, powinienes juz w zapytaniu ograniczyc liczbe elementow do tego z id z geta... ale to pozostawiam Tobie
tu znajdziesz opis problemu poprzedni i nastepny http://nospor.pl/mysql-faq-n25.html#faq-4 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 29.11.2009 Ostrzeżenie: (0%) ![]() ![]() |
Mordercze pytanie do serwera!
Zapytaj o konkretne id i o jeden większe
To Ci da aktualną oraz następną pozycję od ręki Potem o jeden mniejsze
i masz dwa zapytania pobierające 3 rekordy, a nie całą tabelę |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 372 Pomógł: 2 Dołączył: 10.05.2009 Ostrzeżenie: (0%) ![]() ![]() |
ale mi bardziej chodzi o funkcje w php, która sprawdzałaby jaki jest następny element po bierzącym, albo wyświetlała poprostu kolejny element. BO te zapytania SQL w przypadku mojego kodu nie będą miały raczej zastosowania;/
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Cytat BO te zapytania SQL w przypadku mojego kodu nie będą miały raczej zastosowania;/ Nie? A po czym wnosisz? Chyba, że po schodach... (IMG:style_emoticons/default/winksmiley.jpg) |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Również nie mogę zrozumieć dlaczego niby podane przez Istari zapytania nie mogły by być użyte, ale do cofnięcia się lub posunięcia do przodu możesz użyć http://pl.php.net/manual/en/function.mysql-data-seek.php
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 372 Pomógł: 2 Dołączył: 10.05.2009 Ostrzeżenie: (0%) ![]() ![]() |
już tłumacze na przykładzie swojego kodu dlaczego uważam że nie da rady u mnie użyć tych funkcji na przykładzie wycinka swojego kodu galerii zdjęć:
1) Miniaturki są wyświetlane na podstawie decyzji użytkownika, w menu mam około 30 pozycji, po wybraniu którejkolwiek z nich pojawiają się miniaturki wyfiltrowane za pomocą instrukcji WHERE zgodnie z daną pozycją Kod:
Daje tu tylko okrojony kod bo tych instrukcji jest duzo wiecej tylko w kazdej zmienia się zapytanie (dlatego mogą się tu nawiasy zamykające niezgadzać) Tak jak wspomniałem ten kod służy do tego by w zależnosci czy istnieją zmienne GET przesłane po nacisnieciu jakiejs pozycji menu wysłał zapytanie do bazy odnosnie jakiejs tam liczby zdjec. Jeśli jakieś zdjęcia są to wyświetlają się w formie miniaturek, znow w linku z GET,, w którym przesyłam nazwe zdjęcia, id oraz jego plik, który posłuzy mi do identyfikacji, która miniaturka ma się otworzyć jako duże zdjęcie. Podsumowując tą część: mam wielopoziomowe menu, oparte na wielu zapytaniach do bazy odpowiednio filtrowanych poprzez WHERE. W zależnosci od kliknięcia w daną pozycje menu, dane zostają odczytane z bazy i wyswietlone jako miniaturki. Teraz tworzenie dużych zdjęć. Ważne jest dla mnie aby zdjęcia otwierały się w tej samej stronie i w pojemniku (divie) tam gdzie tresc. Więc w głownym pliku index.php wpisuje kod:
I ok mam wyświetlone duże zdjęcie, ale chciałem tez do niego zrobić nawigacje. Tylko no wlasnie problemem jest to że jestem teraz w pliku index.php, a wszystkie zapytania do bazy są w pliku wyswietl_miniaturki.php. Można by było tutaj w tym pliku poprostu przepisać to samo zapytanie, które służyło do utworzenia miniaturek i na tej podstawie za pomocą zapytan SQL, które mi wyzej podaliscie utworzyć linki NEXT i PREW. Tyle że problem jest następujący..tych zapytan jest około 30..i kazde składniowo wygląda inaczej i generuje inne miniaturki. Dlatego sobie pomyslałem ze jeżeli teraz wkleje to jedno konkretne zapytanie, do tej konkretnej grupy miniaturek, to to samo będę musiał zrobić dla innych, a więc musiałbym przeklejac kazde zapytanie do tego pliku, sprawdzac jaki jest nastepny i poprzedni element i wtedy wyswietlac. Inna sprawa jak odróznić te zapytania, zeby wiedziec ktore miniaturki wyswietlic w pełnym oknie,jesli tak jak widać powyzej wszystko jest sprawdzane po jednej linice:if($_GET['wysw'] && $_GET['id'] && $_GET['plik']). Myślałem ze w tym przypadku najlepszym rozwiązaniem będzie.. przesłać samo zapytanie, które zostało utworzone do stworzenia miniaturek i juz dwa problemy rozwiązane, bo nie musze pisac zapytania, i nie musze wymyslac jakiegos sposobu na identyfikacje jakie zdjecia mają zostać wyswietlone. Jak pomyslałem tak też starałem sie zrobić. Za pomocą sesji przesyłałem same zapytania jako łancuch znaków np tak: w pliku w którym było odpowiednie zapytanie do tworzenia miniaturek tworzyłem zmienną sesyjną i przypisywałem jej własciwe zapytanie tworzące miniaturki np.
i miałem juz zapytanie w sesji. Następnie w pliku index.php odtwarzałem to zapytanie np. tak:
I w tym momencie własciwie stanęłem. a wlasciwie nawet udało mi sie stworzyć kod odpowiedzialny za przycisk "NEXT" i działał on poprawnie, ale przycisku "PREVIOUS" nie udało sie utworzyć, a kod wyglądał tak:
Tłumacząc go, jeśli pobrane za pomocą GET id ma tą samą wartość co w zapytaniu (pobranym z sesji) to wyswietlamy pełne zdjęcie, a kod ponizej(instrukcja if) jeśli wartosc 'id' pobrana z zapytania uzyskanego dzięki sesji jest większe niż id bierzącej miniaturki i nie pusta to tworzymi linka do tej wartosci i nadajemy mu wartość tego id. Co do linka "PREVIOUS" nie mozna tak za bardzo zrobic analogicznie bo wtedy będzie się wyswietlac tylko NEXT albo tylko PREVIOUS. Dlatego własnie pomyslałem sobie ze jesli miałbym funkcje która odczyta kolejny element zapytania, czyli tak jak w moim przypadku: mam załózmy za pomocą GETA odczytane id o wartosci 15, i teraz za pomocą jakieś funkcji szukam wartości o następnym id (bo wcale nie koniecznie musi miec 16) i przekazuje do linka, który bedzie słuzył jako przycisk "NEXT" przy przewijaniu zdjęcia, i analogicznie to samo dla funki PREVIOUS. Funkcje dostałem powyzej od Was, ale nie bardzo wiem jak ją uzyc. uff troche się napisałem, jesli ktos ma jakis pomysł to prosiłbym o pomoc:) |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 744 Pomógł: 118 Dołączył: 14.02.2009 Skąd: poziome Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 372 Pomógł: 2 Dołączył: 10.05.2009 Ostrzeżenie: (0%) ![]() ![]() |
no i własnie tu jest problem,
To zapytanie jest poprawne ale nie pasuje do mojego kodu: jest poprawne dlatego, że $_GET['id'] będzie istniał zawsze ponieważ jest pobierany z linku miniaturki, a nie pasuje do mojego kodu, ponieważ z racji tego że mam bardzo dużo zapytan na stronie, każdą treść zapytania pobieram w formie sesji, wstawiam ją do pliku index.php i na niej wykonuje zapytanie WHILE. a więć mająć już pobraną tresc zapytania, które moze wyglądac róznie, nie mogę go w pliku index.php zmodyfikować..mogę tylko wykorzystać np odczytując zawartość z mysqli_fetch_array. Stąd własnie uważam ze te dwa zapytania podane przez Was powyzej, no nie mam jak ich zastosować.;/ Nie wiem może ratunkiem było by przesyłanie z każdym zapytaniem np. tablicy, która zawierała by wyniki danego zapytania (w sensie np. przechowywała by wszystkie pola ID danego zapytania) i pozniej zrobić WHILE($cos =zapytanie odczytane z sesji) { tresc} i w tresci jakoś porównywać tą tablicę z ID otrzymanym z metody GET i jeśli $_GET['id'] == tablica['id'] to wyswietlamy zdjecie w pełnym ekranie jesli $_GET['id'] > tablica['id'] to przycisk wstecz i podany link do tego mający w sobie id=$_GET['id'] jesli $_GET['id'] < tablica['id' to przyisk dalej i podany link do tego mający w sobie id=$_GET['id'] tylko problem jest taki, że za bardzo nie wiem jak przenieść tą tablicę pomiedzy plikami z pliku 'wyswietl_miniaturki.php' do pliku 'index.php', moze by ją zrobić jako globalna? Prosiłbym o Wasze opinie, pomysły..jak można to rozwiązac i czy z tą tablicą to w miarę dobre rozwiązanie i czy mozna to ciągnąć? |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 06:29 |