|
Instructiuni conditionale
a) - instructiunea IF permitea luarea de decizii privind executia unei alte instructiuni sau a unui bloc de instructiuni;
if (expr1) instructiune_1
elseif (expr2) instructiune_2
ex. 1
<? $num=7;
if ($num>5)
echo ' textul acesta se afiseaza tot timpul'; ?>
ex. 2
<? $varsta=32;
if ($varsta>20 && $varsta<40)
?>
ex. 3
<? $varsta=32;
if (!($varsta>20))
?>
b) - instructiunea SWITCH este similara cu o serie de instructiuni if care testeaza mai multe valori posibile pentru o anumita expresie;
switch (expr)
ex. 4
<? $num=5;
switch ($num) ?>
Instructiuni repetitive
a) - instructiunea WHILE se foloseste pentru a implementa o bucla repetitiva cu test initial;
while (expr)
instructiune
ex. 6
<? $i=0;
while ($i<6) ?>
b) - instructiunea DO-WHILE este asemanatoare cu instructiunea while dar se foloseste pentru a implementa o bucla repetitiva cu test final;
do
instructiune
while (expr)
ex. 7
<? $i = 0;
do while ($i < 6);
?>
c) - instructiunea FOR este utilizata pentru a implementa bucle repetitive cu numar fix de pasi;
for (expr1; expr2; expr3)
instructiune
ex. 8
<? for ($i=0; $i<6; $i++)
?>
d) -BREAK & EXIT
ex. 8
<? for ($i=0; $i<20; $i++)
echo 'bucla oprita la '.$i;
?>
ex. 9
<?
echo 'acest text este afisat ';
exit;
echo 'acest text nu va fi afisat';
?>
Tablouri
Declararea unui tablou se face la fel ca declararea oricarei variabile.
-tablou indexat numeric
$tablou = array('element_1', 'element_2', 'element_3', 'element_4', 'element_5');
ex. 9 -parcurgere cu FOR:
<?
for($i=0; $i<5; $i++)
?>
count($tablou)
sort($tablou) -sortare ascendenta
rsort($tablou) -sortare descendenta
-tablou asociativ
$tablou = array('en'=>'Hi there', 'fr'=>'Salut', 'es'=>'Digame');
echo $tablou['fr'];
ex. 10
<?
$tablou = array('en'=>'Hi there', 'fr'=>'Salut', 'es'=>'Digame');
foreach($tablou as $value)
?>
ex. 11
<?$i=0;
$tablou = array('en'=>'Hi there', 'fr'=>'Salut', 'es'=>'Digame');
foreach($tablou as $key => $value)
?>
-tablou multidimensional
ex. 12
<?
$tablou = array( array ('1', '2', '3', '4'),
array ('a', 'b', 'c', 'd'));
echo $tablou[0][1];
?>
ex. 13
<?
$a[0][0]
= 'a';
$a[0][1]
= 'b';
$a[1][0]
= 'y';
$a[1][1]
= 'z';
foreach ($a as $v1)
?>
Functii
Sunt utilizate pentru a grupa instructiunile care executa un anumit algoritm. Permit refolosirea codului ori de cate ori este mevoie de acel algoritm intr-un program.
-declareare functie:
function nume_functie()
Accesarea unei baze de date din PHP
Conectarea la o baza de date
Pentru a putea interoga o baza de date , o pagina PHP trebuie sa stabileasca in prealabil o conexiune cu serverul mySQL. Conexiunea poate fi privita ca un canal de comunicatie prin care programul transmite cereri SQL iar serverul returneaza raspunsurile corespunzatoare.
Functia care realizeaza conectarea persistenta la serverul de baza de date este
mysq_pconnect()
In general trebuiesc introduse host-ul server-ului mySQL, numele cu care utilizatorul se conecteaza si parola folosita de acesta. Toate acestea sunt optionale, iar daca nu sunt specificate functia foloseste setarile default - localhost pentru host, numele utilizatorului cu care procesul PHP ruleaza si o parola vida.
Functia returneaza o legatura catre baza de date sau eroare in caz de nereusita.
O alta functie care realizeaza conectarea - conexiune nepersistenta - la serverul de baza de date este mysq_connect()
O conexiune va fi inchisa cand se incheie executia unui script - terminare pagina - sau cand se apeleaza functia mysq_close(). O conexiune persistenta ramane deschisa si dupa ce executia scriptului s-a terminat si nu poate fi inchisa folosind functia mysql_close().
ex. 1
<?
@$link = mysql_connect('multimedia', 'stud10', 'stud10');
if (!$link)
die('Nu se poate realiza conexiunea');
else
die('Conexiunea s-a realizat cu succes');
?>
Cand se realizeaza conectarea la serverul de baza de date trebuie stabilita si baza de date cu care se va lucra. Acest lucru se face din PHP utilizand functia
mysql_select_db()
ex. 2
<?
@$link = mysql_connect('multimedia ', 'stud10', 'stud10');
@$bd = mysql_select_db('banca');
if (!$bd)
die('Nu se poate realiza selecta baza de date');
else
die('Baza de date a fost selectata');
?>
Rularea interogarilor
Pentru realizarea unei interogari pe server se utilizeaza functia
mysql_query()
Functia presupune existenta unei conexiuni deschise spre server, selectia prealabila a bazei de date si existenta unor drepturi suficiente pentru rularea interogarii. Functia returneaza false daca interogarea nu a putut fi executata pe server.
ex. 3
<?
@$link = mysql_connect('multimedia ', 'stud10', 'stud10');
@$bd = mysql_select_db('banca');
@$query = mysql_query('select * from deponenti');
if (!$query)
die('Interogarea nu a putut fi rulata');
else
die('Interogarea s-a rulat cu succes');
?>
Obs: die() - afiseaza un mesaj si termina executia scriptului;
Obtinerea si afisarea datelor
Pentru a afla numarul inregistrarilor afectate de o interogare actiune (insert , delete , update) se poate folosi functia:
mysql_affected_rows().
ex. 4
<?
@$link = mysql_connect('multimedia ', 'stud10', 'stud10');
@$bd = mysql_select_db('banca');
@$query = mysql_query('insert into deponenti(nr_buletin,CNP,nume,prenume) values
('342674', '73463726', 'pop', 'sebastian')')
or die('Interogarea nu a putut fi rulata');
$rows = mysql_affected_rows();
echo $rows;
?>
In urma rularii unei interogari select se poate folosi functia mysql_num_rows() pentru a afla numarul inregistrarilor din rezultat.
ex. 5
<?
@$link = mysql_connect('multimedia ', 'stud10', 'stud10');
@$bd = mysql_select_db('banca');
@$query = mysql_query('select * from deponenti') or die('Interogarea nu a putut fi rulata');
$rows = mysql_num_rows($query);
echo $rows;
?>
Exista trei metode diferite de a interpreta si prelucra rezultatul unei interogari select:
a) rezultatul este preluat prin functia mysql_fetch_array si interpretat ca un tablou asociativ; acest tablou are ca si chei numele coloanelor selectate iar ca si valori, valorile corespondente din rezultat; fiecare apel succesiv al functiei va returna urmatoarea inregistrare din rezultat.
ex. 6
<?
@$link = mysql_connect('multimedia ', 'stud10', 'stud10');
@$bd = mysql_select_db('banca');
@$query = mysql_query('select * from deponenti') or die('Interogarea nu a putut fi rulata');
echo '<b>Nume</b><br>';
while ($row = mysql_fetch_array($query)) ?>
ex. 7
<?
@$link = mysql_connect('multimedia ', 'stud10', 'stud10');
@$bd = mysql_select_db('banca');
@$query = mysql_query('select * from deponenti') or die('Interogarea nu a putut fi rulata');
echo '<b>Nume</b><br>';
while ($row = mysql_fetch_array($query)) ?>
b) rezultatul este preluat prin functia mysql_fetch_rows si interpretat ca un tabel indexat numeric; acest tablou are ca si indexi numerele 0,1,2 etc. iar ca si valori, valorile corespondente coloanelor de pe pozitiile respective din rezultat; fiecare apel succesiv al functiei va returna urmatoarea inregistrare din rezultat.
ex. 8
<?
@$link = mysql_connect('multimedia ', 'stud10', 'stud10');
@$bd = mysql_select_db('banca');
@$query = mysql_query('select * from deponenti') or die('Interogarea nu a putut fi rulata');
echo '<b>Nume</b><br>';
while ($row = mysql_fetch_row($query)) ?>
c) rezultatul este preluat prin functia mysql_fetch_object si interpretat ca un obiect.
ex. 9
<?
@$link = mysql_connect('multimedia ', 'stud10', 'stud10');
@$bd = mysql_select_db('banca');
@$query = mysql_query('select * from deponenti') or die('Interogarea nu a putut fi rulata');
echo '<b>Nume</b><br>';
while ($row = mysql_fetch_object($query)) ?>
Fiecare apel succesiv al functiei mysql_fetch_object va returna urmatoarea interogare din rezultat.
ex. 10
<?
@$link = mysql_connect('multimedia ', 'stud10', 'stud10');
@$bd = mysql_select_db('banca');
@$query = mysql_query('select * from deponenti') or die('Interogarea nu a putut fi rulata');
$rows = mysql_num_rows($query);
echo '<b>Nume</b><br>';
for ($i=0; $i<$rows; $i++)
?>
Adaugarea, stergerea si modificarea datelor
Adaugarea datelor
Pentru a adauga date dintr-o pagina web se realizeaza o interogare INSERT pe server utilizand functia mysql_query().
Aceasta functie presupune existenta unei conexiuni deschise spre server, selectia prealabila a bazei de date si existenta unor drepturi suficiente pentru rularea interogarii.
Urmatorul script implementeaza un mecanism de introducere (adaugare) de noi inregistrari in tabela deponent din baza de date banca.
ex. 1
<? @$link = mysql_connect('multimedia ', 'stud10', 'stud10') or die('Conexiunea nu poate fi stabilita');
@$bd = mysql_select_db('banca') or die('Baza de date nu poate fi selectata');
if ($action=='insert')
@$query = mysql_query('insert into deponenti(nr_buletin, cnp, nume, prenume, oras)
values ('$nr_buletin', '$cnp', '$nume', '$prenume', '$oras')')
or die('Interogarea nu a putut fi rulata');
@$query1 = mysql_query('select * from deponent') or die('Interogarea nu a putut fi rulata');
echo '<table border=1>
<tr><td> Nr. buletin</td>
<td> Nume</td>
<td> Prenume</td>
<td> Oras</td>
<td> CNP</td></tr>';
while ($row = mysql_fetch_array($query1))
echo '</table>'; ?>
<html>
<head>
<title>insert</title>
</head>
<body>
<form action='<? echo $PHP_SELF;?>?action=insert' method='post' name='form'>
<table border='0'>
<tr><td>Nr. buletin:</td>
<td><input type='text' name='nr_buletin' value='<? echo @$nr_buletin;?>'></td></tr>
<tr><td>CNP:</td>
<td><input type='text' name='cnp' value='<? echo @$cnp;?>'></td></tr>
<tr><td>Nume:</td>
<td><input type='text' name='nume' value='<? echo @$nume;?>'></td></tr>
<tr><td>Prenume:</td>
<td><input name='prenume' type='text' value='<? echo @$prenume;?>'></td></tr>
<tr><td>Oras:</td>
<td>
<? $orase = array ('Timisoara','Resita','Caransebes','Cluj');
$curent = current($orase);?>
<select name='oras'>
<? while ($curent) ?>
</select>
</td></tr>
<tr><td colspan='2'><div align='center'>
<input type='submit' name='Submit' value='Submit'></div></td></tr>
</table>
</form>
</body>
</html>
Stergerea datelor
Pentru a sterge date de pe server se ruleaza o interogare DELETE utilizand functia mysql_query().
Scriptul din exemplul 2 realizeaza stergerea individuala a inregistrarilor.
Inregistrarile din deponenti sunt afisate in urma rularii unei interogari SELECT. Se orserva ca alegerea inregistrarii ce urmeaza a fi stearsa se face prin intermediul unui link in care este transmisa variabila $delete, ce pastreaza nr_buletin al persoanei. Interogarea DELETE se ruleaza doar daca este transmisa o variabila de tipul $delete.
ex. 2
<? @$link = mysql_connect('multimedia ', 'stud10', 'stud10') or die('Conexiunea nu poate fi
stabilita');
@$bd = mysql_select_db('banca') or die('Baza de date nu poate fi selectata');
if (@$delete)
@$query = mysql_query('delete from deponenti where nr_buletin='$delete'')
or die('Interogarea nu a putut fi rulata_');
@$query1 = mysql_query('select * from deponent') or die('Interogarea nu a putut fi rulata');
echo '<table border=1>
<tr><td> Nr. buletin</td>
<td> Nume</td>
<td> Prenume</td>
<td> Oras</td>
<td> CNP</td></tr>';
while ($row = mysql_fetch_array($query1))
echo '</table>';
?>
Modificarea datelor
Modificarea datelor presupune rularea unei interogari UPDATE. Si in acest caz se utilizeaza tot functia mysql_query().