background image

30.08.2012

Ajax. Kurs od podstaw. Część 3: Ajax, PHP i pliki tekstowe

1/18

gajdaw.pl/ajax/ajax-php-pliki-tekstowe/print.html

Ajax. Kurs od podstaw. Część 3: Ajax, PHP i

pliki tekstowe

Włodzimierz Gajda

Najważniejszą cechą witryn wykorzystujących technologię Ajax jest dynamiczna wymiana fragmentu

strony bez przeładowania całego dokumentu. W celu opanowania takiej techniki programowania proponuję

wykonanie czterech prostych ćwiczeń, w których dane są przechowywane w plikach tekstowych. Użycie

plików tekstowych upraszcza skrypty PHP, co pozwala skupić całą uwagę na Ajax-ie.

Spis treści

1. Przykład pierwszy: menu z obsługą zdarzenia onmouseover

1.1 Ajax

1.2 Rozwiązanie

2. Przykład drugi: rozwijanie i zwijanie

2.1 Ajax

2.2 Rozwiązanie

3. Przykład trzeci: okno popup

3.1 Ajax

3.2 Rozwiązanie

4. Przykład czwarty: zakładki

4.1 Ajax

4.2 Rozwiązanie

1. Przykład pierwszy: menu z obsługą zdarzenia onmouseover

Witryna przedstawiona na rysunkach 1 oraz 2 zawiera menu pionowe z tytułami płyt zespołów

background image

30.08.2012

Ajax. Kurs od podstaw. Część 3: Ajax, PHP i pliki tekstowe

2/18

gajdaw.pl/ajax/ajax-php-pliki-tekstowe/print.html

rockowych. Po najechaniu wskaźnikiem myszki opcji menu, w treści strony pojawią się szczegółowe dane

wybranej płyty.

Rysunek 1. Pierwszy z przykładów po wskazaniu kursorem myszy płyty Super Truper zespołu ABBA

background image

30.08.2012

Ajax. Kurs od podstaw. Część 3: Ajax, PHP i pliki tekstowe

3/18

gajdaw.pl/ajax/ajax-php-pliki-tekstowe/print.html

Rysunek 2. Pierwszy z przykładów po wskazaniu kursorem myszy płyty Vol. 4 zespołu Black Sabbath

Przykład ten składa się z plików:

index.php

 — skrypt odpowiedzialny za drukowanie menu,

server.php

 — skrypt odpowiedzialny za zwracanie danych wybranej płyty,

xmlhttprequest.js

 — skrypt odpowiedzialny za utworzenie obiektu 

XMLHttpRequest

,

ajax.js

 — skrypt odpowiedzialny za przeładowanie treści po wskazaniu opcji menu kursorem

myszy.

Dane wyświetlane na stronie, a więc tytuły płyt oraz lista piosenek każdej płyty, są zapisane w plikach

tekstowych. Plik 

00lista.log

 zawiera listę wszystkich płyt, a szczegółowe dane każdej płyty są

zapisane w osobnym pliku w folderze 

plyty/

.

1.1 Ajax

W przykładzie tym Ajax jest wykorzystany do pobierania danych wskazanej płyty. Po najechaniu myszką

pozycji menu zostaje wysłane żądanie HTTP. Takie zachowanie jest możliwe dzięki zdefiniowaniu obsługi

zdarzenia 

onmouseover

 opcji menu. Żądanie HTTP jest wysyłane przez funkcję 

pobierz_dane()

background image

30.08.2012

Ajax. Kurs od podstaw. Część 3: Ajax, PHP i pliki tekstowe

4/18

gajdaw.pl/ajax/ajax-php-pliki-tekstowe/print.html

obsługującą zdarzenie 

onmouseover

. Funkcja ta jest zawarta w skrypcie 

ajax.js

.

Obsługą żądania HTTP zajmuje się skrypt 

server.php

. Skrypt ten musi otrzymać identyfikator wybranej

opcji menu. Identyfikator jest dołączany do adresu URL po znaku zapytania, np. adres 

server.php?

id=7

 będzie zwracał szczegółowe dane płyty o identyfikatorze 7. Na podstawie identyfikatora zawartego

w tablicy 

$_GET['id']

, skrypt 

server.php

 wysyła odpowiedź: kod HTML ze szczegółowymi danymi

wybranej płyty.

Odpowiedź HTTP jest odbierana przez funkcję 

odbierzDane()

 zawartą w skrypcie 

ajax.js

. Funkcja

ta przepisuje odebrany kod HTML do odpowiedniego elementu HTML zawartego w kodzie strony.

Oto, w jaki sposób przebiega dynamiczna wymiana treści dokumentu, bez przeładowania strony WWW:

1.  Akcja rozpoczyna się od wskazania opcji menu kursorem myszy.

2.  Zostaje uruchomiona funkcja obsługi zdarzenia 

onmouseover

. Jej parametrem jest numer

wskazanej opcji menu.

3.  Funkcja 

pobierzDane()

 rozpoczyna transakcję HTTP i ustala funkcję odpowiedzialną za odbiór

danych.

4.  Zapytanie HTTP jest wysyłane do skryptu 

server.php

. Do zapytania dołączamy identyfikator

wybranej opcji menu.

5.  Skrypt 

server.php

 na podstawie identyfikatora 

$_GET['id']

 dołączonego w adresie URL

wysyła kod HTML ze szczegółowymi danymi wybranej płyty.

6.  Funkcja 

odbierzDane()

 przepisuje dane zwrócone przez skrypt 

server.php

 do elementu 

div

o identyfikatorze 

content

.

Pliki tekstowe są odczytywane w dwóch miejscach:

najpierw w skrypcie 

index.php

, który drukuje menu,

następnie w skrypcie 

server.php

 w celu ustalenia szczegółowych danych wybranej płyty.

1.2 Rozwiązanie

Skrypt 

index.php

 kroi plik 

00lista.log

 i na jego podstawie drukuje menu:

<ol id="menu">
<?php
$p = file('00lista.log');

background image

30.08.2012

Ajax. Kurs od podstaw. Część 3: Ajax, PHP i pliki tekstowe

5/18

gajdaw.pl/ajax/ajax-php-pliki-tekstowe/print.html

$ile = count($p);

for ($i = 1; $i <= $ile; $i++) {
  $e = explode("\t", trim($p[$i - 1]));
  echo "
    <li
      onmouseover=\"podajDane('{$i}');\" 
      onmouseout=\"wyczyscDane();\" 
    >
      {$e[0]}: {$e[1]}
    </li>
  ";
}
?>
</ol>

Każda z opcji menu ma zdefiniowaną obsługę zdarzeń 

onmouseover

 oraz 

onmouseout

. Parametrem

zdarzenia 

onmouseover

 jest identyfikator wybranej płyty. Na przykład płyta Fly on the Wall ma numer

10, zatem opcja menu ma postać:

<li
  onmouseover="podajDane('10');" 
  onmouseout="wyczyscDane();">
AC/DC: Fly on the Wall</li>

Funkcja 

podajDane()

 zdefiniowana w pliku 

ajax.js

 odpowiada za utworzenie obiektu

XMLHttpRequest

, zainicjalizowanie żądania HTTP oraz ustalenie funkcji wywoływanej, gdy nadejdzie

odpowiedź HTTP:

function podajDane(id)
{
  if (r = getXMLHttpRequest()) {
    r.open('GET', 'server.php?id=' + id, true);
    r.onreadystatechange = odbierzDane;
    r.send(null);    
  }
}

Funkcja 

odbierzDane()

 sprawdza, czy transakcja HTTP została pomyślnie wykonana i jeśli tak

przepisuje odebrane dane do elementu HTML o identyfikatorze 

content

:

function odbierzDane()
{
  if (r.readyState == 4 && r.status == 200) {
    document.getElementById('content').innerHTML = r.responseText;
  }
}

background image

30.08.2012

Ajax. Kurs od podstaw. Część 3: Ajax, PHP i pliki tekstowe

6/18

gajdaw.pl/ajax/ajax-php-pliki-tekstowe/print.html

Element 

div#content

 znajduje się w skrypcie 

index.php

 poniżej menu. Początkowo jest on pusty:

<div id="content"></div>

Ostatni ze skryptów, 

server.php

, odpowiada za wysyłanie danych konkretnej płyty. Skrypt ten należy

wywołać z parametrem 

id

 zawierającym identyfikator płyty. Na przykład adres:

server.php?id=10

będzie powodował wyświetlenie szczegółowych danych płyty Fly on the Wall. W skrypcie tym najpierw

sprawdzamy obecność i poprawność zmiennej 

$_GET['id']

, a następnie odczytujemy odpowiedni plik

tekstowy, odczytane informacje formatujemy w postaci tabeli HTML i instrukcją 

echo

 wysyłamy do

przeglądarki.

2. Przykład drugi: rozwijanie i zwijanie

Drugi przykład prezentuje działanie kontrolek, które mogą zostać rozwinięte lub zwinięte. Na rysunkach 3

oraz 4 widoczna jest seria kontrolek zawierających ikony 

+

 oraz 

-

. Każda kontrolka zawiera dane o jednej

książce Agaty Christie.

background image

30.08.2012

Ajax. Kurs od podstaw. Część 3: Ajax, PHP i pliki tekstowe

7/18

gajdaw.pl/ajax/ajax-php-pliki-tekstowe/print.html

Rysunek 3. Drugi przykład po rozwinięciu danych książki Endless Night

background image

30.08.2012

Ajax. Kurs od podstaw. Część 3: Ajax, PHP i pliki tekstowe

8/18

gajdaw.pl/ajax/ajax-php-pliki-tekstowe/print.html

Rysunek 4. Drugi przykład po rozwinięciu danych książek Endless Night oraz Hickory Dickory Dock

Rozwiązanie składa się z czterech skryptów: 

index.php

server.php

xmlhttprequest.js

,

ajax.js

. Dane pochodzą z plików tekstowych. Każda książka jest opisana w jednym pliku tekstowym.

Dodatkowo plik 

00lista.log

 zawiera listę wszystkich książek.

2.1 Ajax

Ajax jest w tym przykładzie wykorzystany do pobierania szczegółowych danych książki. Dynamiczna

wymiana treści przebiega następująco:

1.  Akcja rozpoczyna się po kliknięciu ikony 

+

.

2.  Ikona 

+

 obsługuje zdarzenie 

onclick

. Funkcja obsługi nazywa się 

plus_minus()

.

3.  Parametrami funkcji 

plus_minus()

 są identyfikator klikniętej książki oraz kliknięty obiekt DOM.

Dzięki parametrowi 

this

 każda kontrolka może zostać rozwinięta oraz zwinięta niezależnie od

pozostałych.

4.  Po wystąpieniu zdarzenia, funkcja 

plus_minus()

 na podstawie parametru 

this

 zmienia wygląd

background image

30.08.2012

Ajax. Kurs od podstaw. Część 3: Ajax, PHP i pliki tekstowe

9/18

gajdaw.pl/ajax/ajax-php-pliki-tekstowe/print.html

odpowiedniej kontrolki oraz na podstawie parametru 

id

 wysyła żądanie HTTP.

5.  Żądanie HTTP jest wysyłane do skryptu 

server.php

. W żądaniu dołączamy identyfikator

klikniętej książki.

6.  Skrypt 

server.php

 na podstawie identyfikatora 

$_GET['id']

 wysyła tabelę HTML ze

szczegółowymi danymi wybranej książki.

7.  Funkcja 

odbierzDane()

 odbiera dane od skryptu 

sever.php

. Odebrane informacje są

wstawiane do odpowiedniego elementu HTML.

Pliki tekstowe są odczytywane w dwóch miejscach:

podczas tworzenia strony z listą wszystkich książek (w skrypcie 

index.php

),

podczas przygotowywania tabeli ze szczegółowymi danymi wybranej książki (w skrypcie

server.php

).

2.2 Rozwiązanie

Najpierw na podstawie pliku 

00lista.log

 skrypt 

index.php

 drukuje serię elementów 

div

 klasy

tresc

:

<?php
$p = file('00lista.log');
$ile = count($p);
for ($i = 1; $i <= $ile; $i++) {
  $e = explode('*', trim($p[$i - 1]));
  echo "
        <div class=\"tresc\">...</div>
    ";
}
?>

Wszystkie elementy 

div class="tresc"

 mają identyczną strukturę. Każdy z nich zawiera tytuł

powieści (element 

h3

), ikonę 

+/-

 (element 

a

) oraz miejsce na opis powieści (pusty element 

div

):

<div class="tresc">
  <h3>
    <a href="#" onclick="plus_minus(this, 1);">+</a>
    4.50 from Paddington
  </h3>
  <div></div>
</div>    

background image

30.08.2012

Ajax. Kurs od podstaw. Część 3: Ajax, PHP i pliki tekstowe

10/18

gajdaw.pl/ajax/ajax-php-pliki-tekstowe/print.html

Elementy 

a

 z ikoną 

+/-

 obsługują zdarzenie 

onclick

. Po wystąpieniu zdarzenia wywoływana jest

funkcja 

plus_minus()

, której parametrami są kliknięty element 

a

 (obiekt 

this

 modelu DOM) oraz

numer identyfikujący powieść.

Funkcja 

plus_minus()

 odpowiada za dwie czynności: rozwinięcie/zwinięcie kontrolki oraz

uruchomienie transakcji HTTP mającej na celu pobranie danych wybranej książki. Rozwijanie i zwijanie

kontrolki sprowadza się do modyfikacji właściwości 

display

 odpowiedniego elementu DOM. Natomiast

pobranie z serwera danych wybranej książki odbywa się w identyczny sposób, jak w poprzednim

przykładzie. Po utworzeniu obiektu 

XMLHttpRequest

 ustalamy dane zapytania HTTP, do właściwości

onreadystatechange

 przypisujemy funkcję zajmującą się odbiorem danych, po czym wysyłamy

żądanie HTTP:

function plus_minus(id, nr)
{
  element = id.parentNode.parentNode.childNodes[1];
  if (element.style.display == 'block') {
    element.style.display = 'none';        
    id.innerHTML = '+';
  } else {
    element.style.display = 'block';                
    id.innerHTML = '-';                
    if (r = getXMLHttpRequest()) {
      r.open('GET', 'server.php?id=' + nr, true);
      r.onreadystatechange = odbierzDane;
      r.send(null);                
    }
  }
}   

Funkcja 

odbierzDane()

 przepisuje dane odebrane od skryptu 

server.php

 do pustej kontrolki 

div

przeznaczonej na opis powieści.

Skrypt 

server.php

 należy wywołać podając identyfikator powieści, np.:

server.php?id=13

Wynikiem działania skryptu jest tabela HTML zawierająca szczegółowe dane wybranej książki.

3. Przykład trzeci: okno popup

Kolejny przykład prezentuje wyskakujące okienka (tzw. popup). Tabela widoczna na rysunkach 5 oraz 6

zawiera dane meczów piłkarskich. Po wskazaniu wybranego meczu, obok kursora myszy wyskakuje

background image

30.08.2012

Ajax. Kurs od podstaw. Część 3: Ajax, PHP i pliki tekstowe

11/18

gajdaw.pl/ajax/ajax-php-pliki-tekstowe/print.html

okienko popup zawierające szczegółowe dane meczu.

Rysunek 5. Trzeci przykład po wskazaniu meczu Dospel Katowice - Groclin Dyskobolia

background image

30.08.2012

Ajax. Kurs od podstaw. Część 3: Ajax, PHP i pliki tekstowe

12/18

gajdaw.pl/ajax/ajax-php-pliki-tekstowe/print.html

Rysunek 6. Trzeci przykład po wskazaniu meczu Amica Wronki - Wisła Kraków

Tym razem wszystkie dane pochodzą z jednego pliku tekstowego 

mecze.txt

.

3.1 Ajax

W tym ćwiczeniu Ajax odpowiada za pobieranie szczegółowych danych meczu. Oto, w jaki sposób

przebiega dynamiczna wymiana treści:

1.  Akcja rozpoczyna się od wskazania kursorem myszy wybranego wiersza tabeli meczów.

2.  Każdy wiersz tabeli obsługuje zdarzenia 

onmouseover

onmousemove

onmouseout

.

Przesunięcie okna popup w odpowiednie miejsce ekranu wymaga parametru 

event

 (współrzędne

myszki). Wypełnienie elementu danymi wymaga identyfikatora meczu.

1.  Po wystąpieniu zdarzenia 

onmouseover

 wyświetlane jest okno popup. Okno wypełniamy

danymi pobieranymi od skryptu 

server.php

.

2.  Zdarzenie 

onmousemove

 powoduje przesunięcie okna popup.

3.  Wynikiem wystąpienia zdarzenia 

onmouseout

 jest ukrycie okna popup.

background image

30.08.2012

Ajax. Kurs od podstaw. Część 3: Ajax, PHP i pliki tekstowe

13/18

gajdaw.pl/ajax/ajax-php-pliki-tekstowe/print.html

3.  Funkcja 

show_popup()

 obsługująca zdarzenie 

onmouseover

 wysyła żądanie HTTP dołączając

do niego identyfikator meczu. Dodatkowo w celu umieszczenia okna popup w odpowiednim

miejscu ekranu wywoływana jest funkcja 

move_popup()

.

4.  Żądanie HTTP jest wysyłane do skryptu 

server.php

, który na podstawie identyfikatora wysyła

tabelę HTML ze szczegółowymi danymi wybranego meczu.

5.  Funkcja 

odbierzDane()

 przepisuje informacje odebrane od skryptu 

server.php

 do okienka

popup.

Plik tekstowy 

mecze.txt

, podobnie jak poprzednio, jest odczytywany w dwóch miejscach:

w skrypcie 

index.php

 służy do wydrukowania tabeli meczów,

w skrypcie 

server.php

 służy do wydrukowania szczegółowych danych meczu.

3.2 Rozwiązanie

Strona WWW z tabelą meczów rozpoczyna się od elementu:

<div id="popup"></div>

który dzięki stylom:

#popup {
  display: none;
  position: absolute;
}

jest niewidoczny. Po włączeniu widoczności, element ten będzie pozycjonowany bezwzględnie, co ułatwi

umieszczenie go w odpowiednim miejscu ekranu.

Zadanie rozpoczynamy od wydrukowania tabeli HTML. Zadanie to realizuje skrypt 

index.php

, który

„kroi” plik 

mecze.txt

:

<?php
$p = file('mecze.txt');
$ile = count($p);
for ($i = 1; $i <= $ile; $i++) {
  $e = explode('*', trim($p[$i - 1]));
  echo "
    <tr 
      onmouseover=\"show_popup(event, {$i});\" 
      onmousemove=\"move_popup(event);\" 

background image

30.08.2012

Ajax. Kurs od podstaw. Część 3: Ajax, PHP i pliki tekstowe

14/18

gajdaw.pl/ajax/ajax-php-pliki-tekstowe/print.html

      onmouseout=\"hide_popup();\">
        <td>{$i}.</td>
        <td>{$e[1]} - {$e[2]}</td>
    </tr>
  ";
}
?>

Wynikiem pracy skryptu 

index.php

 jest tabela HTML, której wiersze posiadają zdefiniowaną obsługę

zdarzeń 

onmouseover

onmousemove

 oraz 

onmouseout

:

<tr
  onmouseover="show_popup(event, 1);" 
  onmousemove="move_popup(event);" 
  onmouseout="hide_popup();">
    <td>1.</td>
    <td>Widzew Łódź - Świt Nowy Dwór Mazowiecki</td>
</tr>

Funkcja 

show_popup()

 odpowiada za wyświetlenie okna popup. Jej parametrami są zdarzenie 

event

,

które zawiera współrzędne myszki oraz identyfikator wskazanego meczu. Głównym zadaniem funkcji

show_popup()

 jest pobranie danych wybranego meczu. Odbywa się to identycznie jak w poprzednich

przykładach, przy użyciu obiektu 

XMLHttpRequest

 oraz metody 

odbierzDane()

, która przepisze

dane pobrane z serwera do okna popup. Po zainicjalizowaniu transakcji HTTP wywołujemy funkcję

move_opoup()

. Spowoduje ona wyświetlenie okna popup w odpowiednim miejscu ekranu:

function show_popup(event, id)
{
  if (!event) {
    var event = window.event;
  }
  if (r = getXMLHttpRequest()) {
    r.open('GET', 'server.php?id=' + id, true);
    r.onreadystatechange = odbierzDane;
    r.send(null);    
    move_popup(event)    
  }
}

Funkcja move_popup()

 włącza widoczność okna popup oraz przesuwa je do odpowiedniego

położenia. Nowa pozycja okna popup jest ustalana na podstawie współrzędnych kursora myszki,

zawartych w parametrze 

event

 oraz informacjach o przewijaniu dokumentu pochodzących z obiektu

document

:

background image

30.08.2012

Ajax. Kurs od podstaw. Część 3: Ajax, PHP i pliki tekstowe

15/18

gajdaw.pl/ajax/ajax-php-pliki-tekstowe/print.html

function move_popup(event)
{
  if (!event) {
    var event = window.event;
  }
  el = document.getElementById('popup');
  el.style.display = 'block';
  el.style.left = 
    document.documentElement.scrollLeft + 
    event.clientX + 10 +  'px';
  el.style.top = 
    document.documentElement.scrollTop + 
    event.clientY  + 10 + 'px';
}

Skrypt 

server.php

 pobiera identyfikator wybranego meczu, zaś funkcja 

odbierzDane()

 działa

identycznie jak w poprzednich przykładach. Jej zadanie sprowadza się do przepisania danych odebranych

od skryptu 

server.php

 do odpowiedniej kontrolki HTML.

Ukrycie okna popup polega na zmianie właściwości 

display

:

function hide_popup()
{
    e = document.getElementById('popup');
    e.style.display = 'none';
}

4. Przykład czwarty: zakładki

W przykładzie tym występują zakładki reagujące na kliknięcie. Rysunki 7 oraz 8 przedstawiają tę samą

stronę WWW po wybraniu dwóch różnych zakładek. Wygląd zakładek jest oczywiście określany przy

użyciu stylów CSS. Kodem HTML zakładek jest zwykła lista 

ol

 lub 

ul

.

Rysunek 7. Czwarty przykład po wybraniu zakładki medycyna z roku 1924

background image

30.08.2012

Ajax. Kurs od podstaw. Część 3: Ajax, PHP i pliki tekstowe

16/18

gajdaw.pl/ajax/ajax-php-pliki-tekstowe/print.html

Rysunek 8. Czwarty przykład po wybraniu zakładki literatura z roku 1924

Dane dostępne na stronie pochodzą z jednego pliku 

nagrodynobla.txt

.

4.1 Ajax

Od strony implementacyjnej zakładki są zwykłym menu, które reaguje na kliknięcie. Jest to więc przykład

niemal identyczny jak przykład pierwszy. Różnica polega na tym, że tym razem reagujemy na kliknięcie

(obsługa zdarzenia 

onclick

), a nie na wskazanie (zdarzenie 

onmouseover

). Ponadto dane pochodzą z

jednego pliku, a skrypt 

server.php

 pobiera dwa parametry: identyfikator roku oraz identyfikator

kolumny.

Przeładowanie fragmentu treści strony przebiega w następujących krokach:

1.  Zakładkami są odpowiednio sformatowane elementy listy numerowanej 

ol/li/a

.

2.  Elementy listy obsługują zdarzenie 

onclick

. Po wystąpieniu zdarzenia wywoływana jest funkcja

pokaz_dane()

.

3.  Funkcja 

pokaz_dane()

 pobiera dwa parametry: identyfikator roku oraz numer kolumny (1 -

fizyka, 2 - chemia, itd.).

4.  Funkcja 

pokaz_dane()

 tworzy obiekt 

XMLHttpRequest

 i wysyła do skryptu 

server.php

żądanie HTTP.

5.  Do żądania dołączane są dwie dane: identyfikator roku oraz numer kolumny.

6.  Skrypt 

server.php

 na podstawie odebranych parametrów wysyła nazwiska wybranych

laureatów.

7.  Funkcja 

odbierzDane()

 przepisuje wyniki odebrane od skryptu 

server.php

 do odpowiedniej

kontrolki HTML.

background image

30.08.2012

Ajax. Kurs od podstaw. Część 3: Ajax, PHP i pliki tekstowe

17/18

gajdaw.pl/ajax/ajax-php-pliki-tekstowe/print.html

4.2 Rozwiązanie

Skrypt 

index.php

 rozpoczynamy od wydrukowania menu zawierającego roczniki. Menu generowane na

bazie pliku 

nagrodynobla.txt

:

<ul id="menu">
<?php
$plik = file('nagrodynobla.txt');
$plik_count = count($plik);
for ($i = 1; $i <= $plik_count; $i++) {
    echo '<li>';
    $linia = explode('|', trim($plik[$i - 1])); 
    echo '<a href="index.php?id=';
    echo $i;
    echo '">' . $linia[0] . '</a>';
    echo '</li>' . "\n";
}
?>
</ul>

Następnie w zmiennej 

$nr

 ustalamy bieżąco wybrany rocznik:

$nr = 1;
if (
    isset($_GET['id']) && 
    str_ievpifr($_GET['id'], 1, $plik_count)
) {
    $nr = $_GET['id'];
}

Po czym drukujemy zakładki pamiętając o dwóch parametrach funkcji 

pokaz_dane()

: identyfikatorze

rocznika (zmienna 

$nr

) oraz identyfikatorze kolumny:

$wynik = "
  <ol>
    <li><a href=\"#\" 
      onclick=\"pokaz_dane({$nr}, 1);\">fizyka</a></li>
    <li><a href=\"#\" 
      onclick=\"pokaz_dane({$nr}, 2);\">chemia</a></li>
    ...
  </ol>    
";  

Wydrukowane zakładki przyjmą postać:

<ol>
  <li><a href="#" onclick="pokaz_dane(14, 1);">fizyka</a></li>
  <li><a href="#" onclick="pokaz_dane(14, 2);">chemia</a></li>

background image

30.08.2012

Ajax. Kurs od podstaw. Część 3: Ajax, PHP i pliki tekstowe

18/18

gajdaw.pl/ajax/ajax-php-pliki-tekstowe/print.html

  ...
</ol>   

Funkcje 

pokaz_dane()

 oraz 

odbierzDane()

 są niemal identyczne jak w pierwszym przykładzie.

Różnica wynika stąd, że do skryptu 

server.php

 należy przekazać dwa parametry. Stosowane zmienne

URL nazywają się 

rocznik

 oraz 

kolumna

:

server.php?rocznik=13&kolumna=2

lp.

Przykład

1.

Przykład pierwszy: menu rollover

2.

Przykład drugi: rozwijanie/zwijanie kontrolek

3.

Przykład trzeci: okno popup

4.

Przykład czwarty: zakładki

Tabela 1. Przykłady do pobrania

Reklama