menu główne:   Kurs PHP #7

 
W
itam wszystkich! Od dziś jestem nowym redaktorem na Strefie WWW. Będę tutaj pisał o PHP, bo do tego zostałem tutaj przydzielony :> W pierwszym (tym) moim tekście dla Strefy postaram się nauczyć was pracy z bazą danych (ang. Database) mySQL... O tym, czy nadal będziemy kontynuować to zależy od was... ;)

W takiej bazie można przechowywać informacje... (logiczne :>) Współpraca z nią jest o tyle wygodna, że - w przeciwieństwie do pracy z plikami tekstowymi - aby zmienić wygląd wystarczy zmienić wpis w pliku, a nie zmieniać od nowa układ pliku tekstowego... Aby wyobrazić sobie taką bazę nie trzeba wielkiej wyobraźni... każda baza to folder. W tym folderze mieszczą się pliki - a w bazie tabele.... W każdym z plików / tabel są zawarte dane. ;) Myślę, że dosyć przejrzyście Wam to wytłumaczyłem :>

MySQL jest rozpowszechniany jako freeware, tak więc można za darmo go pobrać z jakiejś strony (polecam: http://php.jest-ok.pl/ > szybko). Instalacji nie muszę chyba tłumaczyć... Wszystko sprowadza się do kilku kliknięć ;>

Ważne!!

Po zainstalowaniu mySQL`a należy znaleźć plik konfiguracyjny PHP (ex. C:\win\php.ini) i odnaleźć tam linię:
;extension=php4_mysql.dll
I skasować ; (średnik) na początku linii

Język SQL jest bardzo rozbudowany. Nie będę Wam go tutaj tłumaczyć, gdyż zajęłoby to bardzo dużo miejsca. Radzę w np. WP (www.wp.pl) wpisać `mysql` i tam się pouczyć :>

Aby sprawdzić, czy mySQL jest poprawnie zainstalowany należy skorzystać z poniższego skryptu:

<?

If(extension_loaded('mysql')) { // funkcja extension_loaded sprawdza, czy do php zostało załadowane dane rozszerzenie
$mysql_version_q = mysql_query("select version() as wersja_mysql");
$mysql_version = mysql_result($mysql_version_q, 0, "wersja_mysql");
Echo "jest mySQL w wersji: $mysql_version";
}
else {
echo "Niestety... Nie ma mySQL :(";
}

?>

Jeśli instalacja przebiegła pomyślnie skrypt wypisze nam wersję mySQL... przy okazji `nauczyliście` się kilku poleceń :), ale o nich później. Teraz - jeśli mySQL został zainstalowany możemy się z nią połączyć. Do tego celu wykorzystamy poniższy skrypt.

<?

// dla serwerów windowsowych :
mysql_connect();
mysql_select_db("kurs"); // wybieramy bazę, którą wcześniej stworzyliśmy (pamiętaj: mysql_create_db("kurs");)

// serwery nix czyli wszelkie dystrybucje linuxa n` stuff :>
mysql_connect("localhost", "login", "pass");
/*
przydatna porada :

czasem niektóre serwery mogą wymagać dodatkowego portu, np.. 65534. W takim wypadku po localhost wpisujemy ":" i wpisujemy później nr portu.

Example:
mysql_connect("localhost:65534", "costam", "niemampojecia");
*/
mysql_select_db("kurs"); // wybieramy bazę, którą wcześniej stworzyliśmy (pamiętaj: mysql_create_db("kurs");)

/*
hint:

jeśli tworzysz skrypt komercyjny pamiętaj, że każdy będzie chciał skonfigurować skrypt do działania na własnym serwerze (inny pass/login/a może nawet i host) toteż zaleca się włączyć (include) plik, który nawiązuje połączenie, np.

include("connect_db.php");

I w pliku connect_db.php wpisać polecenia połączenia i wybrania bazy.
*/

?>

Jeśli skrypt nic nie pokaże - success !! Mamy pomyślnie w 100% zainstalowane mySQL !! I teraz do dyspozycji mamy wiele nowych poleceń. Podstawową jest zapytanie (query) bazy. Zapytanie powinno wyglądać tak (pomijając łączenie, etc.)

<?

$zapytanko = mysql_query("select * from ksiega where autoryzacja = 'tak'");

?>

Powyższy skrypt pobierze wszystkie kolumny (*) z bazy danych księga (która znajduje się w bazie danych kurs), których kolumna autoryzacja będzie równa tak. Myślę, że wyjaśniłem to dosyć logicznie :> Pozycję where można pominąć, aby pobrać wszystkie rekordy. Można także wykorzystać funkcję mysql_db_query:

<?

$zapytanko = mysql_db_query("kurs", "select * from ksiega where autoryzacja = 'tak'");

?>

W tym przykładzie nie trzeba wybierać bazy (mysql_select_db()). Zrobi to za nas ta funkcja.

UWAGA!!

Gdy wybierzesz bazę w mysql_db_query() później ta baza będzie aktywna, czyli później nie musisz korzystać z mysql_db_query, tylko z mysql_query.

No ok... Wiem, jak już pobierać dane, ale jak je `wstawiać`? Za to także odpowiada funkcja mysql_query

<?

mysql_query("insert into ksiega(nick, email, tresc) values('$nick', '$email', '$tresc')");

?>

OK. Wybieranie i wstawianie mamy za sobą, a jak je odczytać i wypisać ? Do tego mogą posłużyć kilka funkcji... Najpopularniejszą jest mysql_fetch_array(), alternatywą dla niej jest mysql_fetch_object lub mysql_fetch_row. Zupełnie inaczej działa, ale służy do prawie tego samego mysql_result. Oto przykłady, które działają na tym samym zapytaniu

<?

$q = mysql_query("select * from ksiega");

// polecenie mysql_fetch_array

while($row = mysql_fetch_array($q)) {
echo "<p><a href=\"mailto:$row[email]\">$row[nick]</a> twierdzi, że:<br>$row[tresc]</p>";
}

// polecenie mysql_fetch_object

while($obj=mysql_fetch_row($q)) {
echo "<p><a href=\"mailto:$obj->email\">$obj->nick</a> twierdzi, że:<br>$obj->tresc</p>";
}

// polecenie mysql_fetch_row

while($row=mysql_fetch_row($q)) {
echo "<p><a href=\"mailto:$row[1]\">$row[0]</a> twierdzi, że:<br>$row[2]</p>";
}

// polecenie mysql_result jest nieco inne - pozwala pobrac tylko jeden rekord, np.

$query = mysql_query("select * from ksiega where id = '$id'");

$nick = mysql_result($query, 0, "nick");
$email = mysql_result($query, 0, "email");
$tresc = mysql_result($query, 0, "tresc");

echo "<P><a href=\"mailto:$email\">$nick</a> twierdzi, że<br>$tresc</p>";

?>

Więcej poleceń, m.in. jak skasować rekord(y) jak ilczyć ilość rekordów, pokazać ilość wszystkich baz, naprawiać je i optymalizować, etc. już w kolejnym numerze ;)...