Zapisywanie danych
Dane możemy zapisywać do bazy kierując do niej
zapytanie insert.
Odpowiedni fragment kodu wpisującego do wcześniej przygotowanej
tabeli w bazie MySQL może wygladać następująco:
$tabela='nazwa_tabeli';
$zapytanie="INSERT INTO $tabela SET imie='$imie',
nazwisko='$nazwisko', data='$data', mail='$mail'";
mysql_query($zapytanie);
ćwiczenie 15_01 - Dopisanie rekordu do
wcześniej utworzonej tabeli
-
Należy umieścić na domowym serwerze WWW plik
15_01.php (do pobrania tutaj 15_01.zip)
-
Należy ustawić parametry połączenia z
serwerem baz (miejsca xxx) w pliku 15_01.php
-
Należy uruchomić plik 15_01.php (przez http)
i dopisać kilka danych.
-
Należy sprawdzić istnienie danych za pomocą
narzędzia PHPMyAdmin.
Odczyt danych przechowywanych w bazie
Aby odczytać dane z bazy skierujemy do niej
zapytanie select.
Odpowiedni fragment kodu może wyglądać następująco:
$tabela='nazwa_tabeli';
$zapytanie = "SELECT * FROM $tabela'";
$wynik=mysql_query($zapytanie);
$row = mysql_fetch_array($wynik);
$nazwisko=$row['nazwisko'];
$imie=$row['imie'];
Spowoduje to jednak odczytanie wartości tylko
jednego rekordu. Aby odczytać wszystkie rekordy, należy zastosować
pętlę, która obróci się tyle razy, ile istnieje rekordów w tabeli.
$tabela='nazwa_tabeli';
$zapytanie = "SELECT * FROM $tabela";
$wynik=mysql_query($zapytanie);
while($row = mysql_fetch_array($wynik))
{
$nazwisko=$row['nazwisko'];
$imie=$row['imie'];
};
mysql_select_db($nazwa_bazy);
ćwiczenie 15_02 - Odczyt wszystkich rekordów z
tabeli
-
Należy umieścić na domowym serwerze WWW plik
15_02.php (do pobrania tutaj 15_02.zip)
-
Należy ustawić parametry połączenia z
serwerem baz (miejsca xxx) w pliku 15_02.php
-
Należy uruchomić plik 15_02.php (przez http).
-
Należy przeanalizować kod podanego skryptu.
Sortowanie wybieranych danych
Dane odczytywane z bazy można sortować już w
samym procesie odczytu. Do zapytania select należy dodać parametr
order by oraz nazwę pola (ewentualnie
pól), według którego mają być sortowane dane.
$zapytanie = "SELECT * FROM
$tabela ORDER BY nazwisko";
Efektem będzie sortowanie rosnąco (wg alfabetu) według pola
nazwisko.
$zapytanie = "SELECT * FROM
$tabela ORDER BY nazwisko, imie";
Efektem będzie sortowanie rosnąco (wg alfabetu) według pola
nazwisko i imie. Czyli jeżeli powtórzą się takie same nazwiska,
zapytanie zwróci rekordy według imion.
Parametr desc służy
do sortowania malejącego (jeśli jest to pole tekstowe, sortowanie od
ż do a).
$zapytanie = "SELECT * FROM $tabela ORDER BY
nazwisko, imie DESC";
Selektywne wybieranie danych
Często interesują nas nie wszystkie dane, lecz
te, które spełniają jakiś warunek. W samym zapytaniu wybierającym z
bazy możemy dokonać filtrowania danych. W tym celu należy zastosować
parametr where.
$zapytanie = "SELECT * FROM
$tabela where data>'2007-01-01' ORDER BY nazwisko";
Efektem powyższego zapytania będzie wybranie rekordów, w
których pole data jest starsze (większe) od daty 1 styczeñ 2007 r.
$zapytanie = "SELECT * FROM
$tabela where data='2007-01-01' ORDER BY nazwisko";
Zapytanie to zwróci wynik w postaci rekordu (rekordów), które
dokładnie odpowiadają podanej wartości pola "data".
UWAGA - tym razem operatorem porównania jest jeden znak równości,
nie jak przy instrukcji warunkowej podwójny.
Zliczanie rekordów spełniających dany warunek
Zanim wyświetlimy dane, możemy policzyć, ile
rekordów spełnia dany warunek. Chcemy na przykład wyświetlić tabelę
pewnych danych. Możemy przed narysowaniem nagłówka tabeli sprawdzić,
czy są dane do wyświetlenia.
Zliczenie rekordów może wyglądać następująco:
$tabela='nazwa_tabeli';
$zapytanie = "SELECT * FROM $tabela where data='2007-03-05'";
$wynik=mysql_query($zapytanie);
$znaleziono=mysql_num_rows($wynik);
Zadanie 16 - Księga gości oparta na bazie
MySQL
-
Należy umieścić na swoim koncie WWW plik
zadanie16.php
-
Należy utworzyć tabelę o nazwie "ksiega" z następującymi polami:
id - pole z kluczem głównym o automatycznej numeracji,
autor - krótkie pole tekstowe (tinytext) przechowujące dane o
autorze wpisu,
tresc - pole tekstowe (text) przechowujące treść postu,
data - pole (datetime) przechowujące datę i czas umieszczenia
postu.
- Pierwsza część projektu powinna wyświetlić formularz, który
umożliwi wprowadzenie nazwy autora (nick) oraz treści postu.
- Druga część projektu powinna dopisać do bazy wprowadzone
przez użytkownika dane wraz z datą ich umieszczenia.
- Trzecia część projektu powinna wyświetlić wszystkie posty
wprowadzone do księgi gości (należy zadbać o przyjazny wygląd
graficzny).
- Podobny projekt był przygotowany w zadaniu 12. W obecnym
zadaniu różnica polega jedynie na sposobie przechowywania danych
- zamiast pliku tekstowego należy wykorzystać bazę MySQL.
Zadanie 17 - Sonda oparta na bazie MySQL
-
Należy umieścić na swoim koncie WWW plik
zadanie17.php
-
Należy utworzyć tabelę o nazwie "sonda" i
zaprojektować układ jej pól.
-
Sonda powinna działać podobnie, jak w ćwiczeniu 10_05.
-
System sondy powinien uniemożliwiać oddanie głosu przez
użytkownika posługującego się tym samym numerem IP w przeciągu
jednej minuty.
|