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