9. Pętle i podrzędne bazy danych - strona główna

Transkrypt

9. Pętle i podrzędne bazy danych - strona główna
KURS PHP
9. PĘTLE I PODRZĘDNE BAZY DANYCH
Pętle, tak samo jak instrukcje warunkowe takŜe działają dopóki jakiś warunek jest
spełniony. Pętle, jak sama nazwa wskazuje wykonują coś wielokrotnie. W tej lekcji poznasz
takŜe metody, jak za pomocą tych ówŜe pętli pobrać dane z podrzędnych baz danych.
Mówiąc o podrzędnych, mam na myśli pliki tekstowe (nie MySQL itp.), które
przechowują tekst oddzielony separatorami.
Pętla "for"
Pierwszą pętlą, którą poznamy jest pętla for. Oczywiście zaczyna się od tego słowa, po
którym w nawiasie jest pewien warunek. Na poniŜszym przykładzie deklarowana jest tam
wartość zmiennej $liczba, warunkiem wykonania pętli jest to, Ŝe liczba jest mniejsza, w
naszym przypadku od 10. Na końcu wartość rośnie o jeden:
<?php
for ($liczba = 0; $liczba < 10; $liczba++)
{
echo "Powtórzenie numer $liczba<br />";
}
?>
Uwaga: korzystając z pętli for zmienna zawierająca licznik musi znajdować się wewnątrz
warunku.
Uwaga: tutaj nie deklarujemy ilości powtórzeń, jeŜeli zamiast zera w liczniku
przypiszemy liczbę ujemną np. -2 licznik wykona się nie dziesięć, tylko dwanaście razy.
Pętla "while"
Teraz przyjrzyjmy się pętli while, którą osobiście bardziej lubię. Z prostej przyczyny –
warunek jest normalny, gdyby tak dobrze przyjrzeć się pętli for licznik powinien być ciągle
zerowany, a powtórzenia ciągnąć się w nieskończoność. Na szczęście licznik pętli while
deklarowany jest poza samym warunkiem, w którym natomiast znajduje się prawdziwy
warunek (liczba mniejsza od jakiejś liczby), a inkrementacja wewnątrz działania pętli. Oto
przykład pętli while:
www.INFORMATYKA.cba.pl
KURS PHP
<?php
$liczba = 0;
while ($liczba < 10)
{
echo "Powtórzenie numer $liczba<br />";
$liczba++;
}
?>
Uwaga: jeŜeli inkrementacje umieścimy linijkę wyŜej – nad instrukcją echo (musi się
tylko znajdować w klamerce) wyników będzie tyle samo, ale w danym przypadku będą one
numerowane od jedynki, a nie od zera.
Tworzenie tablic za pomocą funkcji: explode()
Teoria pętli jest juŜ za nami, czas na praktykę. Stwórzmy teraz jakąś przykładową bazę
danych w pliku tekstowym. JeŜeli jesteśmy strasznie początkujący, pewnie nic nie przychodzi
nam do głowy, pozwolę sobie podrzucić Wam pewien pomysł. Zróbmy średnio
zaawansowany spis treści. Będzie on przechowywał takie dane jak adres danych podstron,
treść linku, na którą będziemy klikać, aby poruszać się po serwisie oraz tekstowy opis
wyświetlający się po zatrzymaniu kursora nad danym linkiem. Stwórzmy plik o nazwie
spis.txt, w którym umieszczamy:
index|Strona główna|Strona powitalna serwisu
artykuly|Artykuły|Nasza cięŜka praca
od_autora|Od autora|Wszystko o administraotrze
ksiega_gosci|Księga gości|Nie zapomnij się dopisać!
www.INFORMATYKA.cba.pl
KURS PHP
Następnie w miejscu naszego spisu umieszczamy taki kod:
<?php
echo("<B>Spis treści</B><br /><br />");
$plik = file("spis.txt");
for( $linia=0; $linia < count($plik); $linia++ )
{
$pozycja = explode("|", $plik[$linia]);
echo "<A HREF=\"$pozycja[0].php\" TITLE=\"$pozycja[2]\" >$pozycja[1]</A>
<br />";
}
?>
Skrypt na początku swojego działania wyświetla nagłówek – pogrubiony spis treści
oddzielony dwoma liniami od reszty skryptu. Następnie, zmienna $plik zawiera funkcję
odpowiedzialną za wybranie pliku (ale nie naleŜy tego mylić z otworzeniem pliku). Po
średniku widzimy pętle for, w której definiujemy zmienną $linia, która oznacza, od której
linijki mamy zacząć numerowanie – pamiętajmy, Ŝe pierwsza linijka to linijka zerowa, a nie
pierwsza.
Następnie prawdziwy warunek mówi, Ŝe zmienna $linia musi być mniejsza niŜ liczba
linijek danego skryptu (pamiętajmy, Ŝe ostatnia linijka teŜ zostanie wyświetlona, gdyŜ
pierwsza linijka, jak juŜ powiedziałem ma numer zero, czyli linia ostatnia jest tak naprawdę
przed ostatnia). Oczywiście zmienna $linia jest inkrementowana.
W kolejnej linii – juŜ w pętli pojawia się zmienna $pozycja, która jest dosłownie
odpowiedzialna za rozwalanie danej linii. Funkcja explode wyszukuje znaku, w naszym
przypadku | i linii, którą określa $plik[$linia] (uwaga: jest to pierwszy przypadek zmiennej w
zmiennej – zmienna $plik określa plik, z której wczytywana jest linia $linia).
Po funkcji explodującej, zmienna $pozycja takŜe dostała liczby w nawiasach
kwadratowych, które określają pozycje oddzielone od siebie określonym separatorem.
Następnie, moŜe pozycje są wyświetlane, a pętla się kończy.
www.INFORMATYKA.cba.pl
KURS PHP
Oto ten sam skrypt, tylko za pomocą funkcji while:
<?php
echo("<B>Spis treści</B><br /><br />");
$plik = file("spis.txt");
$linia=0;
while( $linia < count($plik) )
{
$pozycja = explode("|", $plik[$linia]);
echo "<A HREF=\"$pozycja[0].php\" TITLE=\"$pozycja[2]\" >$pozycja[1]</A>
<br />";
$linia++;
}
?>
www.INFORMATYKA.cba.pl