Ogłoszenie


Zapraszam serdecznie na strone DARMOWYCH FILMÓW I SERIALI. Każdy znajdzie coś dla siebie. Mam w bazie artykuły dot. webmasteringu, hackeringu i wiele wiele innych. Dodatkowo forum :) Nie czekaj zarejestruj się już dziś : www.Ogladamy.xorg.pl

  • Index
  •  » Kursy
  •  » Pętle i podrzędne bazy danych

#1 2008-09-28 15:11:21

RedEagle

Admin

status RedEagle
891470
Zarejestrowany: 2008-09-04
Posty: 1047
Komputer: Windows XP
Gra: GTA VC
Książka: Jim C.Hines-,,Zadanie Goblina"
Muzyka: Green Day

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:

<?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ć!

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.

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++;

}

?>


http://i37.tinypic.com/sbm42f.png
http://i38.tinypic.com/29x82na.png

Offline

 
  • Index
  •  » Kursy
  •  » Pętle i podrzędne bazy danych

Stopka forum

RSS
Powered by PunBB
© Copyright 2002–2008 PunBB
Polityka cookies - Wersja Lo-Fi


Darmowe Forum | Ciekawe Fora | Darmowe Fora