Język PHP.
Wybrane elementy oraz funkcje do operowania na bazie danych
I. Podstawy PHP, wersja 5
Jeśli w kodzie HTML używany jest kod PHP, plik musi mieć rozszerzenie PHP. Plik zawierający obraz strony należy umieścić w katalogu public_html. Dostęp do pliku z poziomu przeglądarki:
serwer/~użytkownik/plik.php
Wszyscy użytkownicy muszą mieć prawo czytania pliku (chmod 644).
W pliku zawierającym opis strony internetowej można umieścić instrukcje PHP. Kod PHP musi się wtedy znajdować między znacznikami:
<?php
?>
lub
<?
?>
Przykład:
<HTML>
Tu jest kod w HTML
<?
Tu jest kod w PHP
?>
Tu jest kod w HTML
</HTML>
Każda instrukcja PHP kończy się średnikiem
Wielkość liter w nazwach zmiennych ma znaczenie:
$abc i $Abc oznaczają różne zmienne
Zmienne nie muszą być deklarowane. O tym, że ciąg znaków jest zmienną decyduje znak dolara ($) umieszczony przed tym ciągiem. Aby przypisać zmiennej wartość należy użyć znaku równości
Przykład:
$abc=”Dowolne znaki”;
$x=34.8;
Zmiennej $abc zostaje przypisany ciąg znaków, a zmiennej $x - liczba.
Aby z poziomu PHP umieścić tekst na stronie internetowej, należy użyć funkcji print lub echo:
Przykład:
print ”Wartość zmiennej jest równa $x”;
echo ”Wartość zmiennej jest równa $x”;
W przeglądarce pojawi się tekst umieszczony w cudzysłowie, zakończony wartością znajdującą się w zmiennej $x
UWAGA:
Ciąg znaków będący parametrem instrukcji print i zawierający nazwę zmiennej, której zawartość ma zostać wyświetlona musi być ujęty w cudzysłów (nie w apostrofy).
Parametrem instrukcji print może być kod HTML
Przykład:
print(”<TABLE>”);
print(”<INPUT type='text' name='nazwa' size='30' maxlength='50'>”);
Składnia instrukcji IF:
if (warunek)
{
ciąg instrukcji
}
else
{
ciąg instrukcji
};
Przykład:
if ($x==23)
print(”Zmienna x jest równa 23”);
else
print(”Zmienna x jest różna od 23 i wynosi $x”);
Składnia instrukcji FOR:
FOR (zmiennaSterująca=wartośćPoczątkowa; warunekZakończenia; krok)
{
ciąg instrukcji;
};
Przykład:
FOR ($i=0; $i<5; $i++)
{
...
};
Pętla jest kończona, gdy warunekZakończenia przyjmie wartość fałszu (pętla z powyższego przykładu wykona się pięciokrotnie, dla $i=0, 1, 2, 3, 4).
Składnia pętli WHILE:
while (warunek)
{
...
};
Pętla jest kończona, gdy warunek przyjmie wartość fałszu.
Składnia funkcji:
function nazwa (lista parametrów formalnych)
{
instrukcje wchodzące w skład funkcji
return wyrażenie;
}
gdzie wyrażenie to dowolne wyrażenie zwracane przez funkcję.
Dołączanie kodu z pliku
Instrukcja include służy do dołączenia zawartości innego pliku:
<?php
...
include `abc.php';
...
?>
UWAGA:
Instrukcja include ma zasięg lokalny. Oznacza to, że musi być dołączona wewnątrz funkcji która z niej korzysta.
Przykład:
Załóżmy, że w pliku abc.php jest zdefiniowana funkcja fx().
Poniższa kombinacja dołączenia pliku abc.php i wywołania funkcji jest błędna:
<?php
include “abc.php”;
function xxx()
{
fx();
…
}
Poniższa jest poprawna (plik jest dołączany wewnątrz funkcji):
<?php
function xxx()
{
include `abc.php';
fx();
…
}
?>
Łańcuchy znakowe łączone są przy pomocy kropki
Komentarze wielowierszowe tworzy się przy pomocy znaków /* oraz */
Tekst w wierszu poprzedzony dwoma znakami slash // jest komentarzem
II. Funkcje PHP do operowania na bazie danych PostgreSQL
UWAGA:
W celu uniknięcia niejednoznaczności, tabela bazy danych lub tabela będąca wynikiem zapytania będzie w opisie nazywana tabelą, a tabela jako typ danych w języku PHP będzie określana jako tablica.
Połączenie z bazą danych
$conn=pg_connect(`dbname=nazwa_bazy user=nazwa_użytkownika password=hasło');
Od tego momentu odwołania do bazy danych następują za pośrednictwem zmiennej $conn.
Hasło podawane jest tu jawnie, jednak nie jest przesyłane przez sieć (kod PHP jest wykonywany na serwerze). Aby zwiększyć bezpieczeństwo i uniknąć możliwości podejrzenia hasła przez osoby niepowołane w trakcie tworzenia kodu, można ukryć hasło w pliku w następujący sposób.
- utworzyć plik (np. o nazwie haslo.php) i wpisać w nim kod:
<?php
$h='xxx'
?>
w miejsce xxx wpisując hasło dostępu do bazy danych,
- dołączyć plik haslo.php do tworzonego programu przed połączeniem z bazą danych (instrukcją include - patrz wyżej),
- instrukcja służąca do połączenia z bazą danych ma wtedy następującą postać:
$conn=pg_connect(“dbname=xxxCy user=xxxCy password=$h”);
Wykonanie zapytania zapisanego w zmiennej $query:
$result=pg_query($conn, $query);
Przykład:
$query=”select * from tabela”;
$result=pg_query($conn, $query);
Jeśli kwerenda jest wybierająca, dostęp do danych wybranych z bazy następuje za pośrednictwem zmiennej $result. Korzystając z niej można m.in.:
sprawdzić, ile wierszy i kolumn zostało zwróconych przez zapytanie:
$liczbaWierszy=pg_numrows($result);$liczbaKolumn=pg_numfields($result);
odczytać pojedynczą wartość z tabeli zwróconej przez zapytanie (pierwsza wartość w pierwszym wierszu ma numer 0,0):
pg_result($result, wiersz, kolumna)
pobrać nazwę kolumny z tabeli wynikowej zapytania:
pg_field_name($result, nr_kolumny)
nr_kolumny to liczba całkowita oznaczająca numer kolumny w tabeli wynikowej zapytania (kolumny numerowane są od 0)
pobrać jeden wiersz z tabeli wynikowej (wiersze numerowane są od 0):
$wiersz=pg_fetch_array($result,$numerWiersza [,typIndeksu]);
typIndeksu jest opcjonalny i może być równy:
PGSQL_ASSOC - indeksami tablicy $wiersz są nazwy kolumn tabeli zwróconej przez zapytanie SQL,
PGSQL_NUM - indeksami tablicy $wiersz są liczby całkowite (począwszy od 0),
PGSQL_BOTH (wartość domyślna) - tablica $wiersz jest indeksowana zarówno liczbami jak i nazwami kolumn.
Jeśli typem indeksu jest PGSQL_ASSOC, $wiersz jest tablicą asocjacyjną. Aby uzyskać nazwę indeksu (czyli w naszym przypadku nazwę kolumny tabeli zwróconej przez zapytanie), należy użyć funkcji key:
key($wiersz);
Dostęp do elementów tablicy następuje po podaniu jej nazwy i indeksu w nawiasach kwadratowych (elementy tablicy są numerowane od 0):
$wiersz[0]
lub, gdy tablica jest asocjacyjna:
$wiersz[`nazwaPola']
Podczas wykonywania operacji na tablicach można m.in. wykorzystać funkcje:
current($tablica)
zwraca wartość aktualnego elementu tablicy, jeśli aktualny element nie istnieje, funkcja zwraca FALSE,
next($tablica)
uaktywnia następny element tablicy i zwraca jego wartość, jeśli następny element nie istnieje funkcja zwraca FALSE,
reset($tablica)
uaktywnia pierwszy element tablicy,
Jeśli kwerenda jest funkcjonalna, można skorzystać z funkcji
pg_affected_rows, która zwraca liczbę zmodyfikowanych wierszy w bazie danych:
Przykład:
$liczbaWierszy=pg_affected_rows($result);