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:
if(($nr == 'czwar') && ($id_kat) && ($id_miejsca)) //wyświetla 4 pozycje menu: kategoria -> miejsce
{
$wynik = mysqli_query($dbc,"SELECT zdjecie.id,nazwa,plik FROM zdjecie
WHERE id_kategorii=$id_kat AND id_miejsca=$id_miejsca LIMIT $start,$strona");
$num = mysqli_num_rows($wynik);
{
echo 'Brak zdjęć do wyświetlenia<br />'; }
else
{
while($res = mysqli_fetch_array($wynik))
{
if($size[0] > $size[1])
{
$wyswietlam = "<div id='zdjecie_poz'>";
if($counter == $number_of_thumbs_in_row)
{
$counter = 1;
}
else
$counter++;
echo $wyswietlam."<a href='index.php?wysw=yes&id=$res[0]&plik=$res[2]&nazwa=$res[1]"."' title='$bierzacy_adres'><img src='".$images_dir."/tb_".$res[2]."' border='0' alt='".$res[1]."' /></a>"."</div>"; }
else if($size[0] < $size[1])
{
$wyswietlam = "<div id='zdjecie_pion'>";
if($counter == $number_of_thumbs_in_row)
{
$counter = 1;
}
else
$counter++;
echo $wyswietlam."<a href='index.php?wysw=yes&id=$res[0]&plik=$res[2]&nazwa=$res[1]"."' title='$bierzacy_adres'><img src='".$images_dir."/tb_".$res[2]."' border='0' alt='".$res[1]."' /></a>"."</div>";
}
}
}
}
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:
if($_GET['wysw'] && $_GET['id'] && $_GET['plik'])
{
if($tworze_min['id'] == $_GET['id'])
{
echo "<a href='index.php?id={$_GET['id']}&wysw=yes'><img src='".$images_dir."/".$_GET['plik']."' border='0' alt='".$res[1]."' /></a>"; }
}
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.
$query = "SELECT * FROM costam WHERE jakiswarunek>ilus";
$_SESSION['co_wys'] = $query;
i miałem juz zapytanie w sesji. Następnie w pliku index.php odtwarzałem to zapytanie np. tak:
$do_wysw = $_SESSION['co_wys'];
$sprawdz = mysqli_query($dbc,"$do_wysw");
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:
while($tworze_min = mysqli_fetch_array($sprawdz))
{
if($tworze_min['id'] == $_GET['id'])
{
echo "<a href='index.php?id={$_GET['id']}&wysw=yes'><img src='".$images_dir."/".$tworze_min['plik']."' border='0' alt='".$res[1]."' /></a>"; }
if($tworze_min['id'] > $_GET['id'] && $_GET['id'] !='')
{
echo "<a href='index.php?wysw=yes&nav=next&id=".$tworze_min['id']."'>Następne</a>"; }
}
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:)