Bazy danych są zbiorem informacji dla aplikacji internetowych. Można z nich pobrać informacje, które są prezentowane użytkownikowi strony. Do obsługi baz danych są wykorzystywane systemy zarządzania bazami danych. Najpopularniejszym systemem współpracującym z PHP jest MySql. Aby współpraca PHP z MySql była możliwa, musi istnieć baza danych, z którą można się połączyć. Proces komunikacji składa się z kilku etapów:
Poniżej znajdują się przykłady wyświetlania informacji w postaci listy punktowanej z bazy danych “biblioteka”.
W zadaniu chcemy wyświetlić imie i nazwisko z tabeli autorzy z bazy danych biblioteka, w postaci listy punktowanej. W sposób analogiczny można stworzyć listę numerowaną, zamieniając znacznik <ul> na <ol>.
Na początek musimy wykonać połączenie z bazą danych o nazwie biblioteka, za pomocą funkcji mysqli_connect. Nasze połączenie oznaczone jest jako zmienna $con. Następnie wskazujemy parametry połączenia: nazwę serwera: localhost, użytkownika: root, hasło pozostawiamy puste, nazwę bazy danych z którą się łączymy: biblioteka. Wyrażenie wygląda następująco:
$con=mysqli_connect('localhost' , 'root', ' ', 'biblioteka');
Następnie wprowadzamy zapytanie do bazy, które wyświetli imię i nazwisko z tabeli autorzy. Zapytanie oznaczamy zmienną $zap. Funkcja php odpowiadająca za wprowadzanie zapytań do bazy, to mysqli_query. W nawiasie wskazujemy połączenie z którego będziemy korzystać ($con) i polecenie (zapytanie) w postaci sql do bazy danych. Wyrażenie wygląda następująco:
$zap=mysqli_query($con, "select imie, nazwisko from autorzy");
Przed określeniem pętli, która odczyta kolejne wiersze z bazy danych, wstawiamy znacznik języka html odpowiedzialny za tworzenie listy punktowanej.
echo"<ul>";
Teraz tworzymy pętlę, która ma za zadanie wczytanie wszystkich wierszy z bazy danych. Funkcja odpowiedzialna za wyświetlanie informacji z bazy to: mysqli_fetch_array.
while($row=mysqli_fetch_array($zap))
{
echo "<li>".$row['imie']." ".$row['nazwisko']."</li>";
}
W powyższym kodzie widzimy petlę while, której warunek mysqli_fetch_array($zap) oznaczony zmienną $row, sprawdza kolejne wiersze tabeli autorzy. Gdy wszystkie wiersze zostaną odczytane, funkcja zwróci wartość FALSE i zakończy działanie pętli.
Zmienna $row jest tablicą asocjacyjną przechowującą pobrane dane z zapytania. Elementami tej tablicy są: $row[‘imie’] oraz $row[‘nazwisko’]. Znacznik <li>, oznacza kolejny element listy w html. Pozostało już tylko zamknięcie znacznika listy punktowanej </ul> i zamknięcie połączenia z bazą danych: mysqli_close($con);.
Całe wyrażenie wygląda następująco:
<?php
$con=mysqli_connect('localhost','root','','biblioteka');
$zap=mysqli_query($con, "select imie, nazwisko from autorzy");
echo"<ol>";
while($row=mysqli_fetch_array($zap))
{
echo "<li>".$row['imie']." ".$row['nazwisko']."</li>";
}
echo"</ol>";
mysqli_close($con);
?>
Funkcja num_rows zwraca liczbę wierszy znajdujących się w wyniku zapytania. Wartość tę można użyć do zbudowania pętli FOR odczytującej kolejne wiersze zwrócone przez zapytanie.
<?php
$con=mysqli_connect('localhost','root','','biblioteka');
$zap=mysqli_query($con, "select imie, nazwisko from autorzy");
$ilosc=mysqli_num_rows($zap);
echo"<ul>";
for($i=0;$i<$ilosc;$i++)
{
$row=mysqli_fetch_array($zap);
echo "<li>".$row['imie'].' '.$row['nazwisko']."</li>";
}
echo"</ul>";
mysqli_close($con);
?>
Skrypt wyświetla te same wyniki co skrypt pierwszy. Tym razem została zastosowana funkcja mysqli_num_rows zliczająca rekordy, by wyznaczyć liczbę powtórzeń w pętli.
<?php
$con=mysqli_connect('localhost','root','','biblioteka');
$zap=mysqli_query($con, "select imie, nazwisko from autorzy");
echo'<table border="1">';
echo '<tr><th> Imię</th><th> Nazwisko</th></tr>';
while($row=mysqli_fetch_array($zap))
{
echo "<tr><td>" .$row['imie']."</td><td>".$row['nazwisko']."</td></tr>";
}
echo "</table>";
mysqli_close($con);
?>
Powyższy kod przedstawia imię i nazwisko autora, pobrane z bazy danych biblioteka, z tabeli autorzy. Znaczniki html odpowiedzialne za wyświetlanie informacji w formie tabeli zaznaczone są na zielono. Tabela zawarta jest w znacznikach <table> </table> (border=”1″ – oznacza obramowanie tabeli). Pojedynczy wiersz tabeli tworzymy tagami <tr></tr> (ang. table row), zaś wewnątrz wierszy definiować będziemy komórki tabeli <td></td> (ang. table drawer). Wiersz nagłówkowy utworzymy za pomocą znacznika <th></th> (table header).