Escolar Documentos
Profissional Documentos
Cultura Documentos
NOTE DE CURS
- PROGRAMARE WEB -
Tehnologia client/server.
Evoluţia arhitecturii client/sever
4
Server de fişiere
Server de baze de date
Server de aplicaţii
Server Web
Dezavantaje
complexitatea, nefiind simplu de configurat şi de administrat;
vizualizează rezultatele.
Sintaxa şi semantica limbajului
29
<?php
phpinfo();
?>
• http://localhost/director/pagina
• calculatorul hazdă (localhost)
• adresa IP 127.0.0.1 poate înlocui numele calculatorului
gazdă
• phpinfo() - oferă o serie de informaţii despre PHP
• liniile de cod în limbajul PHP sunt finalizate cu ;
Funcţionarea script-urilor PHP
32
Tipuri de date în PHP
33
Tipuri scalare
Boolean
Întreg –stocate pe 32 de biţi.
Număr real –reprezentate pe 64 biţi
Şir de caractere –trebuiesc incluse între ghilimele.
Tipuri compuse
2 – număr întreg
-3 – număr întreg
- 4 – este eroare deoarece are spaţiu
5.0 – nu este număr întreg
2.3e4 – este număr real
2 – nu este număr real
“4” – nu este număr întreg
‘şir de caractere’
$clasa[1] = „ limbaj”
Caractere speciale
35
$nume=”Popa”;
$nume_persoana=”nume”;
echo $$nume_persoana;
Conversia automată de tip a variabilelor
38
Reguli:
Dacă şirul începe cu o valoare numerică, valoarea şirului
$x = 1; $x = 1;
$y = $x+ „1 se aduna”; $y = 2.5;
echo $y $z = $x + (integer) $y;
echo $z
Conversie automată
Conversie manuală
Exemple de variabile şi constante
41
$a
$1a – nu este variabilă
$_1a – nu este variabilă
$A
$a+b – nu este variabilă
define(“constanta”,”Programare web”)
define(“constanta”,”Programare web”, true)
Operatori aritmetici
42
/ - împărţire zecimală
% - modulo returnând restul
. – concatenare
Operatori de concatenare
43
=== - identic
== - egal
!== - nu este identic
<> sau != - diferit
Operatori logici
44
$x=$y--
$x=++$y
Funcţii
46
if(expresie)
{secventa de instructiuni1}
[else{secventa de instructiuni2}]
Structura altenativă (condiţională) 2
49
Switch–este folosită atunci când trebuie ca valoarea unei variabile sau expresii să fie
comparată cu diferite valori.
switch($variabila) switch($variabila)
{case valoare1: {case valoare1:
secvenţa instrucţiuni1 secvenţa instrucţiuni1
break; break;
case valoare2: case valoare2:
secvenţa instrucţiuni2 secvenţa instrucţiuni2
break; break;
................................................. .................................................
case valoaren: default:
secvenţa instrucţiunin secvenţa instrucţiuni
break; break;
} }
Structura repetitivă 1
51
while(expresie) while(expresie):
{ secv_instrucţiuni
secv_instrucţiuni endwhile;
}
Structura repetitivă 2
52
do
secvenţă de instrucţiuni
while(expresie);
Structura repetitivă 3
53
Matrice
foreach($tablou as $valoare)
foreach($valoare as $valoare1)
{secvenţă de instrucţiuni}
Alte instrucţiuni
55
$limbaje[“PHP”] = „Ridicat”;
$limbaje[“Pascal”]=„Mediu”;
$limbaje[“C”] =”Redus”;
Crearea unui tablou prin funcţia array()
59
$date= array("PHP"=>array("simplu","popular"),
"Pascal"=>array("dificil","nepopular"),
"C"=>array("dificil", "popular"));
Parcurgerea unui tablou
61
<?php
$limbaje = array(0=>"C", 1=>"PHP", 2 =>"Pascal");
$limita = count($limbaje);
for ($i = 0; $i < $limita; $i++)
{
echo "<BR>".$i."=>".$limbaje[$i];
}
?>
Precizarea unui element dintr-un tablou multi-
dimensional
62
<?php
$a = array(array(2, 5), array(1, 4), array(4,5));
$b = $a[1][1] + $a[2][0];
echo $b;
?>
Afişarea unui caracter dintr-un şir de
caractere
63
<?php
$a = 'Programare WEB';
$b = $a{11};
echo $b;
?>
64
function nume_functie(nume_argument)
// aici se insereaza corpul functiei
<?php
function impozit_vanzari($cantitate ,$rata = 0.0725)
{ echo "<BR>cantitate=".$cantitate;
echo "<BR>rata=".$rata;
return $cantitate*$rata;}
$cumparaturi = 123.45;
echo "<BR>cumparaturi = ".$cumparaturi;
$impozit = impozit_vanzari($cumparaturi,0.08);
echo "<BR>impozit = ".$impozit;
echo "<BR>";
$cumparaturi = 123.45;
echo "<BR>cumparaturi = ".$cumparaturi;
$impozit = impozit_vanzari($cumparaturi);
echo "<BR>impozit = ".$impozit;
?>
Variabile şi referinţe
68
<?php
$pret= 13.5;
$cantitate= 250;
function cumpara()
{ return $pret * $cantitate;}
echo "Suma pe care trebuie sa o platiti este ".
cumpara();
?>
Exemplu variabilă globală - bun
70
<?php
$pret= 13.5;
$cantitate= 250;
function cumpara()
{ GLOBAL $pret, $cantitate;
return $pret * $cantitate;}
echo "Suma pe care trebuie sa o platiti este ".
cumpara();
?>
Exemplu variabile locale
71
<?php
function local()
{ $x = 5;
echo "<br>In corpul functiei x = ".$x;
}
$x = 2;
echo "<br>In rest x = ".$x;
local();
echo "<br>In rest x = ".$x;
?>
Exemplu variabilă statică
72
<?php
function locala() {
$x = $x + 1;
echo "<br> x = ".$x;}
function statica()
{ STATIC $x;
$x = $x + 1;
echo "<br> x = ".$x;}
locala();
locala();
echo "<br>";
statica();
statica();
?>
Utilizarea referinţelor 1
73
<?php
if(isset($_POST['adresa']='a'))
{echo 'Mesaj';}
else
{echo 'Mesaj 1';}
?>
Current, next, prev
77
Fie tabloul: 10 a c
f 34 abc
def 435 1ad
Care va fi rezultatul execuţiei secvenţei:
<?php
$matrice=array(array(10,'a','c'),array('f',34,'abc'),array('def',43, '1ad'));
$prim_element=current($matrice[0]);
$urmat_element=next($matrice[2]);
$anterior_element=prev($matrice[2]);
echo 'Primul element este: '.$prim_element.'<br>';
echo 'Urmatorul element este: '.$urmat_element.'<br>';
echo 'Elementul anterior este: '.$anterior_element.'<br>';
?>
EXPLODE
78
<?php
$factura='GL-567';
$separare=explode('-',$factura);
$serie_factura=$separare[0];
$nr_factura=$separare[1];
echo 'Seria facturii este '.$serie_factura.' si numarul este '.$nr_factura;?>
<?php
$factura='GLX-56567';
list($serie_factura,$nr_factura)=explode('-',$factura);
echo 'Seria facturii este '.$serie_factura.' si numarul este '.$nr_factura;
?>
IMPLODE
80
<?php
$serie_f='GLX';
$nr_f=456;
$factura=$serie_f.' '.$nr_f;
echo 'Factura are seria si numarul '.$factura;
?>
<?php
$serie_f='GL';
$nr_f=45786;
$matrice_factura=array($serie_f,$nr_f);
$factura=implode(' ',$matrice_factura);
echo 'Factura are seria si numarul '.$factura;
?>
82
LUCRUL CU FORMULARE
Formular – definiţie şi definire
83
butoane “radio”;
casete de validare;
câmpuri ascunse
Controale de tip câmp de editare
89
<label>
<input type="radio" name="Nume_grup"
value="o2">Optiunea2
</label>
validare
Controlul de tip listă
93
<?php
echo "Numele si prenumele dvs. este: <strong>".
$_POST[date_personale] ."</strong> si sunteti
<strong>".$_POST[tip_persoana]."</strong>.";
?>
Exemple
96
Lucrul cu butoane radio-dinamic
<?php
mysql_connect('localhost','root','');
mysql_select_db('curs');
$selectie=mysql_query('select * from grad_didactic');
while($rand=mysql_fetch_array($selectie))
{$grad=$rand['denumire_grad'];
echo'<label>';
echo'<input type="radio" name="grad_didactic"
value="'.$grad.'">'.$grad.'</label>';
echo'<br>';
} ?>
Exemple
Lucrul cu casete de validare-static/ HTML
97
se realizează cu ajutorul:
funcţiei header()
Tag-ului HTML meta
Exemplu – header()
102
<?php
$mesaj="Numele si prenumele dvs. este: <strong>". $_POST[date_personale]
."</strong> si ati ales: ";
if(isset($_POST[Samsung]) and isset($_POST[Panasonic]))
{$mesaj=$mesaj."Samsung si Panasonic";}
else if (isset($_POST[Samsung])) {$mesaj=$mesaj."Samsung";}
else if (isset($_POST[Panasonic])){$mesaj=$mesaj."Panasonic";}
else {header("location:Selectie.html");}
echo $mesaj;
?>
<html>
</html>
• se va apela funcţia header() doar în cazul în care utilizatorul nu selectează nici o
casetă de validare din cele prezetate
•Rezultatul obţinut în urma apelului acestei funcţii este deschiderea unei noi pagini,
Selectie.html, care poate include orice element
Tag-ul HTML META
103
SELECT cod_produs,den_produs,pret_produs
FROM produs
ORDER BY den_produs DESC,pret_produs ASC
SELECT cod_produs,den_produs, pret_produs
FROM produs
ORDER BY den_produs, pret_produs ASC
SELECT cod_produs,den_produs, pret_produs
FROM produs
ORDER BY den_produs, pret_produs
SELECT cod_produs,den_produs, pret_produs
FROM produs
ORDER BY 2,3
Comanda SELECT-filtrarea datelor
114
SELECT nume_câmpuri
FROM tabel
WHERE camp op val AND/OR camp1 op val1
SELECT nume_câmpuri
FROM tabel
WHERE nume_camp LIKE “%sircaractere%”
SELECT nume_câmpuri
FROM tabel
WHERE nume_camp LIKE “_şircaractere_”
SELECT nume, prenume
FROM student
WHERE nume LIKE “[PT]%”
Comanda SELECT-gruparea datelor
123
SELECT nume_câmpuri
FROM tabel
GROUP BY camp
Comanda SELECT-gruparea datelor
124
SELECT cod_prod,nume_prod,pret_prod,
cantitate*pret_prod AS valoare
FROM produse_comandate
WHERE serie_f=“GL” AND nr_f=123
Concluzii comanda SELECT
126
SELECT cod_produs,den_produs,pret_produs
FROM produs
ORDER BY den_produs DESC,pret_produs ASC
SELECT cod_produs,den_produs, pret_produs
FROM produs
ORDER BY den_produs, pret_produs ASC
SELECT cod_produs,den_produs, pret_produs
FROM produs
ORDER BY den_produs, pret_produs
SELECT cod_produs,den_produs, pret_produs
FROM produs
ORDER BY 2,3
Comanda SELECT-filtrarea datelor
132
UPDATE nume_tabel
SET coloana1=valoare1, coloana2=valoare2,...
WHERE coloana= valoare
Dacă lipseşte clauza WHERE se vor actualiza toate
SELECT den_produs,pret_produs,den_producator
FROM produs, producator
WHERE producator.id_producator=produs.id_producator
SELECT den_produs,pret_produs,den_producator
FROM produs, producator
UNIUNEA tabelelor-uniunea interioară
143
SELECT den_produs,pret_produs,den_producator
FROM produs INNER JOIN producator
ON produs.id_producator=producator.id_producator
UNIUNEA între mai multe tabele
144
INTERACŢIUNEA ÎNTRE
SCRIPTURILE PHP ŞI MYSQL
MySQL – server de baze de date
146
Parola
mysql_connect(‘server’,’user’,’parola’)
mysql_select_db(‘bd’)
Interacţiune PHP şi MySQL
147
mysql_connect(’nume_server’,’nume_utilizator’,’parola’)
mysql_close($conexiune)
<?php
$legatura=mysql_connect('localhost', ‘root', '');
if (!$legatura)
{
die('Eşec la conectare: ' . mysql_error());
}
echo 'Conectare cu succes';
mysql_close($legatura);
?>
Exemplu
149
<?php
mysql_connect(‘localhost’,’root’,’’);
mysql_select_db(‘bd_ie’);
mysql_query(‘INSERT INTO student(nume,prenume,CNP)
VALUES(“’.$_POST[‘nume’].’”, “’.$_POST[‘prenume’].’”,
“’.$_POST[‘CNP’].’”)’);
echo ’Ultima inregistrare introdusa are codul ’.mysql_insert_id();
$selectie=mysql_query(‘SELECT * FROM student’);
while($rand=mysql_fetch_array($selectie))
{$nume_student=$rand[‘nume’];
$prenume_student=$rand[‘prenume’];
$CNP_student=$rand[‘CNP’];
echo ‘Numele dvs. este ’.$nume_student.’ si prenumele ’
.$prenume_student.’ si aveti CNP-ul ’.$CNP_student;}
?>
150
<?php
var_dump(checkdate(2, 29, 2001));
?>
<?php
echo date(„l,j F, Y”);
?>
Getdate
155
timestamp Valoare
„seconds” secunde
„minutes” minute
„hours” ore
„mday” ziua din lună sub formă de număr
„wday” Ziua din săptămână sub formă de număr
„mon” Luna sub formă de număr
„year” anul
„yday” Ziua din an, sub formă de număr
„weekday” Ziua, (Friday)
„month” Luna, (May)
Getdate
156
<?php
$data=getdate();
echo $data[’mday’].”.”.
$data[’month’].”.”.$data[’year’]
?>
Gettimeofday
157
Cheie Valoare
„sec” secunde
„usec” microsecunde
„minuteswest” Minute vest faţă de Greenwich
<?php
echo gettimeofday();
?>
Funcţii pe şiruri de caractere
158
<?php
$variabila='programare1';
if(md5($variabila)=='be394f7907863ddf6edfacecdf476aa8')
echo 'S-a scris Programare';
else exit('Nu este ceea ce trebuie');
?>
Funcţia exit($mesaj)-afişează mesajul şi întrerupe
execuţia script-ului curent
Str_ireplace
162
str_ireplace ($search,$replace,$subject)
înlocuieşte un şir de caractere cu un alt şir de caractere,
fără a face diferenţă între litere mari şi litere mici
<?php
$sir='Joi avem cursul de PW';
$modificare = str_ireplace("PW", "Programare Web",$sir);
echo $modificare;
?>
<?php
$sir='Joi avem cursul de PW';
$modificare = str_ireplace(“pw", "Programare Web",$sir);
echo $modificare;
?>
Str_repeat
163
<?php
$sir='Joi avem cursul de PW';
$modificare = str_replace("pw", "Programare Web",$sir);
echo $modificare;?>
<?php
$sir='Joi avem cursul de PW';
$modificare = str_replace("pw", "Programare Web",$sir);
echo $modificare;?>
<?php
$sir='Joi avem cursul de Programare Web';
$vocale=array("a", "e", "i", "o", "u", "A", "E", "I", "O", "U");
$modificare=str_replace($vocale,"",$sir);
echo $modificare;?>
<?php
$sir='Joi avem cursul de PW';
$vocale=array("a", "e", "i", "o", "u", "A", "E", "I", "O", "U");
$modificare=str_replace($vocale,"",$sir,$aparitii);
echo $modificare.'<br>'.$aparitii;?>
Strcasecmp
166
<?php
$var1="sir";
$var2="SIR";
if(strcasecmp($var1,$var2)==0)
{echo 'Sirurile sunt la fel';}
else echo 'Sirurile nu sunt la fel';
?>
Stripos
168
<?php
$cauta='a';
$sir='Joi la ora 10 avem PW';
$pozitie=stripos($sir,$cauta);
if($pozitie!==false)
{echo "Pozitia este ".$pozitie;}
else echo "Nu s-a gasit caracterul cautat";
?>
Substr
169
<?php
$rest=substr("abcdef",-1);
$rest=substr("abcdef",-2);
$rest=substr("abcdef",-3,1);
$rest=substr("abcdef",0,-1);
$rest=substr("abcdef",2,-1);
$rest=substr("abcdef",4,-4);
$rest=substr("abcdef",-3,-1);
?>
Strlen
170
<?php
$sir='Am de cautat litera a';
$numar=strlen($sir);
echo $numar
?>
Alte tipuri de funcţii-funcţii matematice
171
<?php <?php
$abs=abs(-4.2); echo exp(5.7);
?> ?>
<?php <?php
$a=ceil(7.9); echo floor(4.3);
$b=ceil(-7.5); echo floor(9.999);
echo $a; echo floor(-3.14);
echo $b;?> ?>
<?php
echo round(3.4);
echo round(3.5);
echo round(1.95583,2);
?>
Exemplu max/min
173
<?php
echo max(1, 3, 5, 6, 7);
echo max(array(2, 4, 5));
echo max(0, 'hello');
echo max('hello', 0);
echo max(-1, 'hello');
$val = max(array(2,4,8),array(2,5,7));
$val = max('string',array(2,5,7),42);
?>
175
LUCRUL CU SESIUNI DE
UTILIZATOR
Definire
176
.:/director1/director2/htdocs/director3/director4/
Includerea fişierelor - exemplu
182
<?php
for ($i=1;$i<=3;$i++)
{$includefisier="fisier$i".".txt";
echo 'Se include fisierul $includefisier: <br>';
include(„$includefisier”);
echo '<br>‘; }
?>
<?php
for ($i=1;$i<=2;$i++)
{ echo 'Se include continutul fisierului cu numele
<strong> fisier1.txt</strong>: <br>';
$fisier_inclus=include_once ("fisier1.txt");
echo '<br>‘; }
?>
Returnarea unei valori
183
dintr-un fişier inclus
Întreruperea execuţiei codului din cadrul fişierului inclus
se face cu ajutorul instrucţiunii return. Tot codul aflat
după această instrucţiune nu mai este executat.
Returnarea unei valori
184
dintr-un fişier inclus - exemplu
<?php
$fisier=include("fisier_return.php");
echo 'Fisierul inclus are ca rezultat valoarea: '. $fisier.'.';
?>
<?php
$a=56;
$b=34;
$c=20;
return $c;
$c=$a+$b;
?>
Verificarea fişierelor
185
is_dir(“/director”)
is_writable(“nume_fisier”)
is_executable(“nume_fisier”)
<?php
$deschidere_fisier=@fopen("index.txt","r") or die("Nu s-a putut deschide fisierul");
while(!feof($deschidere_fisier))
{$citeste_fisier_linie=fgets($deschidere_fisier, 1024);
echo "$citeste_fisier_linie<br>";
}
fclose($deschidere_fisier);
?>
<?php
$deschidere_fisier=@fopen("index.txt","r") or die("Nu s-a putut deschide fisierul");
while(!feof($deschidere_fisier))
{$citeste_fisier_octet=fread($deschidere_fisier, 26);
echo "$citeste_fisier_octet<br>";
}
fclose($deschidere_fisier);
?>
Operaţii cu fişiere - citirea
190
<?php
$deschidere_fisier=@fopen("index.txt","r") or die("Nu s-a putut
deschide fisierul");
$marime_fisier=filesize("index.txt");
$valoare=(int)($marime_fisier/3);
fseek($deschidere_fisier,$valoare);
$citeste_fisier_punct=fread($deschidere_fisier,($marime_fisier-
$valoare));
echo $citeste_fisier_punct;
fclose($deschidere_fisier);
?>
Operaţii cu fişiere – scrierea
192
<?php
$deschidere_fisier=@fopen("index.txt","w") or die(“mesaj");
fwrite($deschidere_fisier,"Fwrite scrie peste ceea ce deja exista.
<br>La sfarsitul sirului care este scris se va adauga terminatorul de linie.\n");
fclose($deschidere_fisier);
$deschidere_fisier=@fopen("index.txt","r") or die("Nu s-a putut deschide fisierul");
$citire=fgets($deschidere_fisier,1024);
echo $citire;
fclose($deschidere_fisier);?>
<?php
$deschidere_fisier=@fopen("index.txt","a") or die(“mesaj");
fputs($deschidere_fisier,"Fputs adauga textul la sfarsitul fisierului.\n");
fclose($deschidere_fisier);
$deschidere=@fopen("index.txt","r") or die("Nu s-a putut deschide fisierul");
while(!feof($deschidere))
{$citire=fgets($deschidere);
echo $citire;
echo '<br>';}
fclose($deschidere);?>
Exemplu contor vizitatori
194
<?php
$fisier_contor="contor.txt";
if(file_exists($fisier_contor))
{$deschide_fisier=@fopen($fisier_contor,"r+");
$contor=@fgetc($deschide_fisier);
$contor=$contor+1;
fclose($deschide_fisier);
$deschide_fisier=@fopen($fisier_contor,"w");
fputs($deschide_fisier,$contor);
}
else
{$creeaza_fisier=@fopen($fisier_contor,"w");
$contor="1";
fwrite($creeaza_fisier,$contor);
fclose($creeaza_fisier);
echo $count;
}?>
Manipularea dosarelor
195