Sunteți pe pagina 1din 43

PAII

CSS (Cascading Style Sheets)


Limbajul HTML este orientat n special spre definirea coninutului unui document online, i mai
puin spre formatarea acestuia. Exist unele modaliti de stilizare a coninutului unui fiier HTML
utilizarea para!rafelor, utilizarea atributelor fonturilor, a bac"!round#urilor, etc.$ dar acestea
n!reuneaz manipularea fiierelor HTML deoarece comaseaz datele cu elementele stilistice lucru
%izibil mai ales pentru proiecte mari$.
&ropunerea '() este de a separa partea de desi!n de cea de date. *stfel, elementele ce definesc
formatarea pa!inii aspect, aezare n pa!in$ sunt stocate ntr#un fiier )++ separat, uor de accesat
dac este ne%oie.
Sintaxa CSS
,n fiier %a conine un set de instruciuni )++. -iecare instruciune este alctuit dintr#un selector
i un bloc de declaraii.
p / selector
0
color.red1 / propietate2.%aloare21
text#ali!n.center1 / propietate3.%aloare31
font#size.23px1 / propietate(.%aloare(1
4
+electorul indic selecteaz$ CE element
2
se dorete a fi formatat, proprietile indic care sunt
caracteristicile ce %or fi modificate n ce %aloare$. Toate elementele HTML de acel timp n cazul
exemplului %orbim de para!rafele delimitate de ta!urile 5p6 i 57p6$ %or fi afectate de respecti%a
instruciune )++.
8ac se dorete introducerea unor explicaii7comentarii, acest lucru se poate face cu ajutorul
ta!urilor 79 : 97. )omentariile sunt multilinie.
Selecia dup identificatorul elementului
+e poate utiliza un identificator atunci c;nd %rem s formatm un element unic identificabil,
identificator prefixat de simbolul <=>. ?nstruciunea )++ re!ulile de formatare definite n blocul de
declaraii$ poate arta astfel.
=para2
0
color.red1
text#ali!n.center1
font#size.23px1
4
Selecia dup clasa elementului
+e utilizeaz pentru identificarea i formatarea elementelor ce aparin unei anumite clase. *tributul
ce %a fi formatat este prefixat de simbolul < . >. ?nstruciunea )++ re!ulile de formatare definite n
blocul de declaraii$ poate arta astfel.
2 ?dentificarea se poate face dup multe criterii, cel mai des utilizat fiind c@iar numele elementului.
2
PAII
.center
0
color.red1
text#ali!n.center1
font#size.23px1
4
+e pot selecta i doar anumite elemente asupra crora se aplic respecti%a clas.
p.center
0
color.red1
text#ali!n.center1
font#size.23px1
4
Aruparea selectorilor
8ac o sec%en este comun mai multor elemente care accept respecti%ele declaraii, aceste
elemente pot fi !rupate.
p,@2,@3
0
color.red1
text#ali!n.center1
font#size.23px1
4
Utilizarea instruciunilor CSS
Exist ( moduri de utilizare a instruciunilor )++, !rupate ca foi de stil stylesheets$.
2. +tiluri inte!rate inline$. inte!rate n ta!urile elementelor HTML.
5p stBleCDcolor.red1text#ali!n.center1font#size.23px1D6Hello EorldF57p6
Gu este recomandat utilizarea acestei metode nu rezol% problema separrii datelor de
elementele de formatare$.
3. -oi de stil interne. instruciunile )++ sunt inte!rate n fiierul HTML, fiind declarate n
seciunea 5@ead6 57@ead6 a documentului cu ajutorul ta!urilor 5stBle6 57stBle6.
5@tml6
5@ead6
5stBle6
@2
0
color.red1
text#ali!n.center1
4
p
0
color.red1
text#ali!n.center1
font#size.23px1
3
PAII
4
57stBle6
57@ead6
5bodB6
:
57bodB6
57@tml6
,tilizarea acestei metode este recomandat atunci c;nd se aplic un sin!ur stil ntre!ului
document.
(. -oi de stil externe. instruciunile )++ sunt incluse n fiiere externe extensia .css$ i apelate din
fiierul HTML cu ajutorul ta!ului 5lin"6 n interiorul seciunii 5@ead6 57@ead6.
5@tml6
5@ead6
5lin" relCDstBles@eetD tBpeCDtext7cssD @refCDstBle.cssD6
57@ead6
5bodB6
...
57bodB6
57@tml6
-iierele de stil conin instruciuni )++ care se aplic elementelor rele%ante din documentele
HTML. *stfel se poate modifica aspectul ntre!ului site manipul;nd doar fiierul )++ asociat.
,n fiier HTML poate apela mai multe fiiere de stil externe acestea se pot !rupa, de exemplu,
dup tipul lor, dup funcionalitate, dup elementele manipulate, etc.$.
8ac se utilizeaz instruciuni diferite pentru acelai selector n di%erse foi de stiluri, %alorile
asociate proprietilor %or fi cele preluate din ultimele instruciuni rele%ante atunci c;nd exist
conflicte$.
p
0
color.red1
text#ali!n.left1
font#size.2Hpx1
4
p
0
color.red1
text#ali!n.center1
font#size.23px1
4
In exemplul de mai sus pa!ina rezultat para!rafele %or fi setate conform proprietilor.
color:red;
text-align:center;
font-size:12px;
&entru proprietile <text-align> i <font-size> ultimele declaraii considerate cronolo!ic %orbind$
(
PAII
au fost cele utilizate pentru formatare. -oile de stil se citesc n ordinea n care sunt apelate i lu;ndu#se
n considerare prioritatea la execuie / inline, external, internalF$, rezultatul execuiei fiind un sin!ur
fiier !lobal care este apoi executat.
Proprieti specifice CSS
&entru proprieti specifice )++ urmrii pa!inile de la adresa.
@ttp.77EEE.E(sc@ools.com7css7cssJbac"!round.asp i urmtoarele$.
K
P.A.I.I. - Formulare HTML
Formulare HTML
Obiective
Dezvoltarea formularelor HTML
Formularele HTML reprezint o modalitate de comunicare ntre utilizatori i
server; prezint o utilitate deosebit atunci cnd sunt folosite n combinaie cu scripturi ce
se execut pe server ex! "H"# "erl# $%" !&'T ect(! )n cadrul unei aplicaii *eb#
formularele HTML i scripturile de validare +ava%cript sunt referite ca i client,side iar
scripturile executate pe server ca server,side! -atele introduse ntr,un formular sunt de
re.ul trimise ctre un server *eb sau prin pot electronic spre un cont de e,mail!
)ntr,un document HTML# formularele sunt introduse prin marca/ul
<form>...</form>! 0n document HTML poate s conin mai multe formulare# ns
numai informaiile dintr,un sin.ur formular pot fi trimise la un anumit moment dat ctre
server! )n .eneral# cmpurile unui formular destinate introducerii datelor cmpuri text#
butoane de comand# casete de validare# butoane radio etc(# se specific prin intermediul
marca/ului <input>!
'lementul <FORM>
Atribute:
name permite specificarea unui nume unic! $cest atribut este util atunci cnd un
document HTML conine mai multe formulare!
ation specific 01L,ul pro.ramului server care va prelua datele din formular!
met!o" specific metoda prin care bro*ser,ul transmite informaiile ctre
server!
#$emple:
<html>
<head><title>Primul formular</title></head>
<body>
<form name=formular1 method=post action=http://apollo.eed.usv.ro
/~tudor_c/prim.php>
</form>
</body>
</html>
<html>
<head><title>Formular mail</title></head>
<body>
<form NAME=formularMail METH!D=POST EN"T#$E=tet/plai!
A"T%!N=mailto:"e#master$site.com%Su#&ect'Pro(ram co!feri!ta>
</form>
</body>
</html>
P.A.I.I. - Formulare HTML
'lementul <I%P&T>
Atribute:
t'pe specific tipul controlului!
o button 2 buton de comand! La un clic3 de mouse# se poate declana o
aciune prin intermediul unui script ex! +ava%cript(
o checkbox 2 caset de validare! 4ptiunea checked poate fi utilizat pentru a
specifica daca o caset este 5marcat5 sau nu!
o file 2 permite utilizatorului s selecteze un fiier din computerul propriu#
pentru a,l ncrca pe server
o hidden 2 un control 5invizibil5 utilizatorului! "streaz o perec6e
variabil7valoare care nu este vizibil utilizatorului!
o submit 2 buton de comand utilizat pentru trimiterea datelor din formular#
ctre server
o image 2 un buton pe suprafaa cruia este afiat o ima.ine i care are o
funcie asemntoare cu submit!
o password 2 un cmp de tip text# care nlocuiete fiecare caracter tastat cu
un asterix 8(!
o radio 2 buton cu interblocare; un .rup de elemente radio au acelai nume#
ns numai un sin.ur element poate fi selectat
o text 2 permite introducerea de text
o reset 2 5cur5 ntre.ul formular# revenind la valorile implicite
name , numele controlului elementului(
(alue , valoarea atribuit elementului
)i*e , numrul de caractere care vor fi vizibile ntr,un cmp de tip text sau
password
ma$len+t! , numrul maxim de caractere ce pot fi introduse ntr,un cmp de tip
text sau password
"i)able" , dezactiveaz un element
rea"onl' , un element ce poate fi citit# dar nu i fi modificat
'lementul <T#,TAR#A> - permite introducerea de text pe mai multe rnduri!
<te$tarea -ol).$/ -ro0).'/
-name.nume/ -0rap/ -rea"onl'/
...
</te$tarea>
'lementul <1#L#2T> - implementeaz o list de opiuni cu derulare
<)elet -name.nume/ -)i*e."imen)iune/ -multiple/ >
<option -(alue.(aloare34/> 5 </option>
P.A.I.I. - Formulare HTML
<option -(alue.(aloare36/> 5 </option>
5
<option -(alue.(aloare3n/> 5 </option>
</)elet>
Atribute:
name specific numele controlului
)i*e specific numrul de opiuni din list
multiple prezena acestui atribut specific faptul c lista permite selectarea mai
multor elemente cu a/utorul tastei 2trl!
#$emplu!
<html>
<head><title>Primul formular</title></head>
<body>
<form name')formular)>
P.A.I.I. - Formulare HTML
<table b&color'li(ht(ra* border'+>
<tr>
<td>,ume:</td>
<td> <in'ut ty'e'-tet- name'-!ume- ma(len&th'+.> </td>
</tr>
<tr>
<td>/dresa:</td>
<td> <in'ut ty'e'-tet- name'-!ume- ma(len&th'0.> </td>
</tr>
<tr>
<td>Telefo!:</td>
<td> <in'ut ty'e'-tet- name'-!ume- ma(len&th'0.> </td>
</tr>
<tr>
<td>1arsta:</td>
<td>
<in'ut ty'e'-radio- name'-cat_varsta->1.210
<in'ut ty'e'-radio- name'-cat_varsta- chec)ed>102+.
<in'ut ty'e'-radio- name'-cat_varsta->peste +.
</td>
</tr>
<tr>
<td vali&n'top>Pasiu!i:</td>
<td>
<table border'.>
<tr>
<td>
<in'ut ty'e'-chec3#o- name'-mu4ica->Mu4ia
</td>
</tr>
<tr>
<td>
<in'ut ty'e'-chec3#o- name'-literatura->5iteratura
</td>
</tr>
<tr>
<td>
<in'ut ty'e'-chec3#o- name'-sportul->Sportul
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>6o!tact:</td>
<td>
<*elect name'-co!tact->
<o'tion>7M</o'tion>
<o'tion>MS,</o'tion>
<o'tion>8oo(le Tal3</o'tion>
</*elect>
</td>
</tr>
<tr>
<td vali&n'top>6ome!tarii:</td>
<td>
<te(tarea name'-come!tarii- col*'+. ro+*'9>6ome!tariile dv.</te(tarea>
P.A.I.I. - Formulare HTML
</td>
</tr>
<tr>
<td></td>
<td ali&n'ce!ter>
<in'ut ty'e'-su#mit- name'-trimite- value'-Trimite->
<in'ut ty'e'-reset- name'-reset- value'-:eset->
</td>
</tr>
</table>
</form>
</body>
</html>
Tem9 %criei formularul HTML corespunztor fi.urii de mai /os9
P.A.I. Prezentare generala a limbajului PHP
1. Introducere

PHP este in momentul de fata cel mai utilizat limbaj script pentru programare pe
internet datorita simplitatii sale precum si a multitudinii de functii oferite de acesta. Spre
deosebire de CGI-urile realizate in limbaj C sau Perl, bucatile de cod PHP pot fi inserate
direct in codul HTML al paginii web fara a afecta functionalitatea acesteia. Tagul specific
pentru PHP este : <?PHP .... ?> .

Ceea ce deosebeste PHP de limbajele script de tipul JavaScript este faptul ca PHP
este executat pe serverul de internet, iar utilizatorul va vedea in browser doar rezultatul
executiei codului, fara a putea avea acces la codul propriu zis. Insa cel mai mare avantaj
al PHP-ului este faptul ca este extrem de usor de invatat de cei fara experienta in
programare, de asemeni oferind foarte multe avantaje programatorilor experimentati
dintre care cel mai important este acela ca PHP-ul respecta in mare sintaxa limbajului de
programare C.

Datorita faptului ca PHP este un limbaj orientat pe executarea la nivelul
serverului, cu ajutorul lui se poate realiza tot ceea ce ofera celelalte tipuri de CGI-uri,
adica colectarea datelor din formularele HTTP sau generarea dinamica de pagini de
internet. Pe linga aceste caracteritici ale tuturor CGI-urilor, PHP poate comunica cu
majoritatea tipurilor de baze de date intr-un mod deosebit de simplu, poate genera
dinamic imagini, fisiere de tip PDF sau poate folosi majoritatea protocoalelor internet:
SNMP, POP3, HTTP si FTP.

2. Primul script PHP

In cele ce urmeaza, vom prezenta cel mai simplu script PHP, ce afiseaza mesajul
Hello World cu ajutorul functiei echo ce are rolul de a tipari variabila sau sirul de
caractere ce-i urmeaza cu observatia ca un sir de caractere poate fi definit in doua moduri
in PHP: intre ghilimele sau intre apostroafe.

2.1 Primul script PHP:
<?php
echo "Hello World";
?>

2.1 Primul script PHP inclus intr-o pagina HTML:
<html>
<head>
<title>PHP Test</title>
</head>
<body>
<?php echo "<hr>Hello World<hr>"; ?>
</body>
</html>

I
P.A.I. Prezentare generala a limbajului PHP

2.3 Rezultatul executiei acestui script (ceea ce vede utilizatorul drept sursa) este:
<html>
<head>
<title>PHP Test</title>
</head>
<body>
<hr>Hello World<hr>";
</body>
</html>



3. Variabile predefinite in PHP

Variabila Explicatii
$SERVER_NAME numele serverului pe care este esecutat scriptul PHP
$REQUEST_METHOD tipul metodei folosite de formular (GET, HEAD, POST, PUT)
$QUERY_STRING sirul de caractere trimis de formular
$REMOTE_ADDR adresa de internet a celui ce acceseaza scriptul
$HTTP_GET_VARS un tablou ce contine datele daca a fost folosita metoda GET
$HTTP_POST_VARS un tablou ce contine datele daca a fost folosita metoda POST


3.1 Exemplu de program ce foloseste variabilele predefinite


<html>
<head>
<title>PHP Test</title>
</head>
<body>
<?php
echo Serverul este : ;
echo $_SERVER[SERVER_NAME];
echo <br>;
echo Adresa d-voastra de IP este : ;
echo $_SERVER[REMOTE_ADDR];
?>
</body>
</html>


P.A.I. Prezentare generala a limbajului PHP
4. Tipuri de date

In PHP exista 5 tipuri de date importante, dintre care doar trei vor fi prezentate la
acest moment:
numere intregi
numere reale
siruri de caractere
matrici
obiecte

Numere intregi pot lua oricare din urmatoarele forme, avind semnificatiile
corespunzatoare:

1254 numar intreg pozitiv in baza 10
-1963 numar intreg negativ in baza 10
02376 numar intreg in baza 8
0xFF - numar intreg in baza 16

Dimensiunea numerelor reale depinde de sistemul de operare unde se afla
interpretorul de PHP, dar de obicei, numarul real maxim este 1.8e308 cu o precizie de 14
zecimale dupa virgula. In PHP se foloseste numerotatia engleza a numerelor reale cu
punct (.) in loc de virgula (,) : 3.14 sau 1.71, etc.

Dupa cum a fost prezentat anterior, pentru a reprezenta sirurile de caractere, se
folosesc doua notatii diferite: intre apostroafe Sir de caractere sau intre ghilimele
Sir de caractere cu deosebirea ca cel de-al doilea mod de folosire va expanda sirul la
valorile variabilelor incluse intre ele (vezi exemplul de la variabile). In interiorul sirurilor
de caractere se pot folosi si urmatoarele secvente escape:

Secventa escape Semnificatie
\n trecerea la un rind nou LF (Line Feed)
\r - || -
\t tab orizontal (are efectul tiparii a 4 sau uneori a 8 spatii)
\\ backslash
\$ semnul $
\ ghilimele introduse intr-un sir

Exemplu : Daca dorim afisarea pe ecran a textului Compilatorul vede toate erorile. si
vom incerca afisarea cu urmatoarea instructiune:
echo Compilatorul vede toate erorile.;
interpretorul de PHP va semnala eroare imediat dupa primele ghilimele inchise (inainte
de vede). Solutia corecta este folosirea secventei escape \ dupa cum urmeaza:
echo Compilatorul \vede\ toate erorile.;
in acest fel evitindu-se aparitia de erori nedorite.
P.A.I. Prezentare generala a limbajului PHP
5. Variabile

In PHP, variabilele sunt definite prin plasarea semnului $ in fata unui nume de
identificator ce trebuie sa respecte urmatoarele conditii:
sa inceapa cu o litera sau underscore (_) ce este urmata de o insiruire de litere
sau cifre
sa nu contina caracterele speciale: @, #, %, ^, &, etc.

5.1 Concatenarea sirurilor

In PHP concatenarea sirurilor se realizeaza cu ajutorul operatorului . (punct). Exemple:
1. Hello .World! va genera sirul Hello World
2. $s1=AB; $s2=CD; $s3=$s1.$s2 va genera sirul $s3=ABCD

5.2 Variabile al caror nume este generat din PHP. Exemplu:

<?php
$s = n;
$$s = 123; /* se va genera variabila $n=123 */
echo $n; /* va afisa 123*/
?>

5.3 Exemplu de expandare a unui sir de caractere atunci cind se folosesc

<?php
$s1=ABCD;
$s2=EFGH;
$s_ghilimele=$s1$s2;
$s_apostroafe=$s1$s2;

echo Sir expandat cu ghilimele :;
echo $s_ghilimele;
echo <br>;
echo Sir expandat cu apostroafe ;
echo $s_apostroafe;
?>

Explicati rezultatul programului.

Tema de laborator
Sa se modifice scriptul PHP prezentat anterior cu ajutorul operatorului de
concatenare a sirurilor de caractere.
P.A.I. Lab.2 Constante. Operatori. Functii

Constante

Limbajul PHP defineste citeva constante predefinite si ofera un mecanism simplu
de definire a altor constante utilizator. Constantele se aseamana oarecum cu variabilele
PHP cu deosebirea ca se definesc cu ajutorul functiei define() si nu pot fi modificate in
timp ce programul ruleaza.

Constantele PHP predefinite sunt:
__FILE__ - numele scriptului PHP ce este interpretat
__LINE__ - linia curenta din scriptul interpretat
PHP_VERSION versiunea curenta de PHP
PHP_OS sistemul de operare pe care ruleaza scriptul PHP

Exemple de folosire si definire a constantelor PHP:

Ex. 1
<?php
define("msg", "Hello world.");
echo msg; // afiseaza mesajul "Hello world."
?>

Ex. 2
<?php
echo Fisierul curent: ;
echo __FILE__;
echo <br>;
echo linia in executie :;
echo __LINE__;
?>

2. Operatori

2.1 Operatori aritmetici

Exemplu Rezultat
$a + $b suma variabilelor $a si $b
$a - $b diferenta variabilelor $a si $b
$a * $b inmultirea dintre variabilele $a si $b
$a / $b raportul variabilelor $a si $b
$a % $b $a modulo $b (restul impartirii)

I
P.A.I. Lab.2 Constante. Operatori. Functii

2.2 Operatori de atribuire


Operator Exemplu Explicatii
= $a = 5 $a va lua valorea 5
+= $a+=3 $a va fi incrementat cu 3
-= $a-=2 $a va fi decrementat cu 2



2.3 Operatori de comparatie

Exemplu Nume Rezultat
$a == $b egalitate adevarat, daca $a este egal cu $b
$a === $b identic adevarat, daca Sa==$b si sunt acelasi tip de date
$a != $b sunt diferite adevarat, daca $a diferit de $b
$a !== $b NOT identic sunt diferite sau nu sunt de acelasi tip
$a < $b mai mic
$a > $b mai mare
$a <= $b mai mic sau egal
$a >= $b mai mare sau egal





2.4 Operatori de incrementare/decrementare


Exemplu Nume Explicatii
++$a incrementare prefixata intai se incrementeaza, dupa aceea se evalueaza
--$a decrementare prefixata intai se decrementeaza, dupa aceea se evalueaza
$a++ incrementare postfixata evaluare urmata de incrementare
$a-- decrementare postfixata evaluare urmata de decrementare

P.A.I. Lab.2 Constante. Operatori. Functii

Exemplu:

<?php
echo "<h3>Postincrement</h3>";
$a = 5;
echo "Should be 5: " . $a++ . "<br>\n";
echo "Should be 6: " . $a . "<br>\n";

echo "<h3>Preincrement</h3>";
$a = 5;
echo "Should be 6: " . ++$a . "<br>\n";
echo "Should be 6: " . $a . "<br>\n";

echo "<h3>Postdecrement</h3>";
$a = 5;
echo "Should be 5: " . $a-- . "<br>\n";
echo "Should be 4: " . $a . "<br>\n";

echo "<h3>Predecrement</h3>";
$a = 5;
echo "Should be 4: " . --$a . "<br>\n";
echo "Should be 4: " . $a . "<br>\n";
?>

2.5 Operatori logici

Exemplu Nume Rezultat
$a and $b SI adevarat, daca si $a si $b sunt adevarate
$a or $b SAU adevarat, daca una din variabile este adevarata
!$a NOT adevarat, daca $a este fals
$a && $b SI idem $a and $b
$a || $b SAU idem $a or $b

3. Functii in PHP

Un exemplu de sintaxa a unei functii in PHP este:

function nume_functie ($arg_1, $arg_2, ..., $arg_n)
{
echo "Example function.\n";
return $retval;
}

P.A.I. Lab.2 Constante. Operatori. Functii

Unde:
$arg_1, ... , $arg_n sunt argumentele functiei
$retval este valoarea returnata de functie

Exemplu de program:

<?php

function Minim($x, $y)
{
if($x<$y) return $x;
else return $y;
}

function Maxim($x, $y)
{
if($x>$y) return $x;
else return $y;
}

$a = 3;
$b = 5;

echo "a este ".$a." , b este ".$b."<br>";
echo "Minimul este : ".Minim($a,$b)."<br>";
echo "Maximul este : ".Maxim($a,$b)."<br>";

?>

Tema de laborator :

Sa se scrie scriptul PHP care afiseaza numele fisierului curent executat, numarul
fiecarei linii de program, versiunea de PHP si sistemul de operare unde este executat, cu
functii.
P.A.I. Lab. 3,4 Constante. Operatori. Functii

1.Instruciuni repetitive

n limbajul PHP avem urmtoarele instruciuni repetitive:
while - se va executa corpul acesteia ct timp condiia este adevrat
do ... while - se va executa cel puin odat, i se va repeta atta timp ct
condiia este adevrat
for - se va executa de un numr de ori specificat
foreach - se va executa cte odat pentru fiecare element din tablou

1.1 Instruciunea while
Sintax:
while (condition)
code to be executed;

Exemplu:
<html>
<body>
<?php
$i=1;
while($i<=5)
{
echo "The number is " . $i . "<br />";
$i++;
}
?>
</body>
</html>

1.2 Instruciunea do ... while
Sintax:
do
{
code to be executed;
}
while (condition);

Exemplu:
<html>
<body>
<?php
$i=0;
do
{
$i++;
echo "The number is " . $i . "<br />";
}
while ($i<5);
?>
</body>
</html>


P.A.I. Lab. 3,4 Constante. Operatori. Functii

1.3 Instruciunea for
Sintax:
for (initialization; condition; increment)
{
code to be executed;
}

Exemplu:
<html>
<body>
<?php
for ($i=1; $i<=5; $i++)
{
echo "Hello World!<br />";
}
?>
</body>
</html>

1.3 Instruciunea foreach
Sintax:
foreach (array as value)
{
code to be executed;
}

Exemplu:
<html>
<body>
<?php
$arr=array("one", "two", "three");
foreach ($arr as $value)
{
echo "Value: " . $value . "<br />";
}
?>
</body>
</html>


2. Lucrul cu fiiere

PHP ofer o gam complet de funcii pentru citirea / scrierea datelor n fiiere de
tip text sau fiiere binare. n cele ce urmeaz vom prezenta funciile pentru lucrul cu
fiierele de tip text.

2.1 Funcia fopen()
- se folosete pentru deschiderea unui fiier pentru citire, scriere sau append
- funcia are doi parametrii: numele fiierului i modul de deschidere
P.A.I. Lab. 3,4 Constante. Operatori. Functii

Moduri de deschidere:
File Modes Description
r Citire
r+ Citire/Scriere
w Scriere, dac fiierul exist deja, va fi recreat, dac nu, va fi creat.
w+ Scriere/Citire, dac fiierul exist deja, va fi recreat, dac nu, va fi creat.
a Citire/Adugare. Dac fiierul nu exist, va fi creat.
a+
Read/Append. File pointer at the end of the file. If the file doesn't exist, fopen()
will try to create the file
x Va crea un fiier doar pentru scriere. Dac acesta exist, funcia va ntoarce
eroare. Dac nu exist, va fi creat.
x+ Va crea un fiier doar pentru scriere/citire. Dac acesta exist, funcia va
ntoarce eroare. Dac nu exist, va fi creat.

Exemplu:
<html>
<body>
<?php
$f=fopen("welcome.txt","r")
if (!$f)
exit("Unable to open file!");
?>
</body>
</html>

2.2 Funcia fclose()
- se va folosi pentru a nchide un fiier, dup ce s-au terminat de efectuat toate
operaiile (citire, scriere sau append)
- fiierul trebuie s fie n prealabil deschis utiliznd funcia fopen()
- funcia fclose() are un singur parametru: fiierului

Exemplu:
<html>
<body>
<?php
$file_name = "welcome.txt";
$f=fopen($file_name,"r");
if (!$f)
exit("Unable to open file!");

echo "fisierul a fost deschis cu succes";
fclose($f);
echo "fisierul a fost inchis ";
?>
</body>
</html>


P.A.I. Lab. 3,4 Constante. Operatori. Functii

2.2 Funcia feof()
- este folosit pentru a testa sfritul de fiier
- ntoarce valoarea de adevr TRUE dac pointerul de fiier a ajuns la sfritul
acestuia
- primete un singur parametru: fiierul


2.3 Funcii de citire dintr-un fiier

Funciile de citire dintr-un fiier sunt:
fgetc - citete un caracter
fgets - citete un ir de caractere
fscanf - citete date formatate

Exemplu pentru 2.2 i 2.3:
<?php
if (!($f=fopen("welcome.txt","r")))
exit("Unable to open file.");
while (!feof($f))
{
$x=fgetc($f);
echo $x;
}
fclose($f);
?>

Modificai programul n aa fel nct s citeasc fiierul linie cu linie.

2.4 Funii de scriere n fiier:
Funciile de citire dintr-un fiier sunt:
fputc - scrie un caracter
fputs - scrie un ir de caractere
fprintf - scrie date formatate

Un exemplu de scriere a datelor n fiier va fi prezentat la seciunea formulare.


3. Formulare HTML

Formularele HTML ncep i se termin cu tag-ul form:
<form>
.
.
.
</form>

P.A.I. Lab. 3,4 Constante. Operatori. Functii

3.1 Cmpuri de tip text

Exemplu:
<form>
First name:
<input type="text" name="firstname">
<br>
Last name:
<input type="text" name="lastname">
</form>

Browser-ul va afia:
First name:
Last name:

3.2 Butoane radio

Exemplu:
<form>
<input type="radio" name="sex" value="male"> Male
<br>
<input type="radio" name="sex" value="female"> Female
</form>

Browser-ul va afia:
Male
Female

Observaii:
doar unul dintre butoane poate fi selectat la un anumit dat
butoanele sunt grupate dup valoarea name = " "

Exemplu:
<form>
<input type="radio" name="sex" value="male"> Male
<br>
<input type="radio" name="sex" value="female"> Female
<hr>
<input type="radio" name="age" value="< 18"> < 18
<br>
<input type="radio" name="age" value="mature"> Mature
</form>

3.3 Checkbox - uri
Exemplu:
<form>
<input type="checkbox" name="bike">
I have a bike
<br>
I
P.A.I. Lab. 3,4 Constante. Operatori. Functii

<input type="checkbox" name="car">
I have a car
</form>

Browser-ul va afia:
I have a bike
I have a car

Observaie: checkbox-urile pot fi selectate individual

3.4 Atributele formularelor i butonul de trimitere

Atribute pentru un formular:
name - numele formularului
action - inta datelor acestuia

Exemplu:
<form name="input" action="html_form_action.asp"
method="get">
Username:
<input type="text" name="user">
<input type="submit" value="Submit">
</form>

Browser-ul va afia:
Username:
Submit



3.5 Alte Exemple:

DropDown:
<html>
<body>
<form>
<select name="cars">
<option value="volvo">Volvo
<option value="saab">Saab
<option value="fiat">Fiat
<option value="audi">Audi
</select>
</form>
</body>
</html>

P.A.I. Lab. 3,4 Constante. Operatori. Functii

Textarea:
<html>
<body>

<p>
This example cannot be edited
because our editor uses a textarea
for input,
and your browser does not allow
a textarea inside a textarea.
</p>

<textarea rows="10" cols="30">
The cat was playing in the garden.
</textarea>

</body>
</html>



4. Formulare i PHP

Prezentm n continuare cteva exemple de formulare ce utilizeaz drept int script-uri
PHP:

Exemplul 1:
Cod HTML:
<html>
<body>
<form action="welcome.php" method="POST">
Enter your name: <input type="text" name="name" />
Enter your age: <input type="text" name="age" />
<input type="submit" />
</form>
</body>
</html>

Cod PHP:
<html>
<body>
Welcome <?php echo $_POST["name"]; ?>.<br />
You are <?php echo $_POST["age"]; ?> years old!
</body>
</html>

Observaii:
dac metoda de transmitere folosit este GET, vom folosi $_GET[""]
dac nu dorim s depindem de metoda de transmitere a datelor folosit, vom
folosi numele variabilelor aa cum sunt descrise n fiierul HTML (Ex: $name,
$age)
P.A.I. Lab. 3,4 Constante. Operatori. Functii

Teme de laborator:
1. Creai un formular ce va cere numele, prenumele, vrsta i preferinele culinare
ale vizitatorului paginii.
2. Datele vor fi transmise spre un script PHP care le va aduga ntr-un fiier text.
3. Completai primul formular cu o opiune ce va afia datele din fiier (va trebui
creat un nou formular n cadrul aceluiai fiier HTML, precum i un nou script
PHP).
4. Creai un formular (i scriptul PHP adiacent) ce va afia persoanele care au vizitat
pagina cel puin de dou ori.




MySQL

Introducere
MySQL este un sistem de gestiune a bazelor de date relaional, produs de compania
suedez MySQL AB i distribuit sub Licena Public General GNU. Este cel mai
popular SGBD open-source la ora actual, fiind o component cheie a stivei LAMP
(Linux, Apache, MySQL, PHP).
Dei este folosit foarte des mpreun cu limbajul de programare PHP, cu MySQL se pot
construi aplicaii n orice limbaj major. Exist multe scheme API disponibile pentru
MySQL ce permit scrierea aplicaiilor n numeroase limbaje de programare pentru
accesarea bazelor de date MySQL, cum are fi: C, C++, C#, Borland Delphi, Java, Perl,
PHP, Python, FreeBasic, etc., fiecare dintre acestea folosind un tip spefic API. O interfa
de tip ODBC denumit MyODBC permite altor limbaje de programare ce folosesc
aceast interfa, s interacioneze cu bazele de date MySQL cum ar fi ASP sau Visual
Basic. n sprijinul acestor limbaje de programare, unele companii produc componente de
tip COM/COM+ sau .NET (pentru Windows) prin intermediul crora respectivele
limbaje s poat folosi acest SGBD mult mai uor dect prin intermediul sistemului
ODBC. Aceste componente pot fi gratuite (ca de exemplu MyVBQL) sau comerciale.
Licena GNU GPL nu permite ncorporarea MySQL n softuri comerciale; cei care doresc
s fac acest lucru pot achiziiona, contra cost, o licen comercial de la compania
productoare, MySQL AB.
MySQL este component integrat a platformelor LAMP sau WAMP (Linux/Windows-
Apache-MySQL-PHP/Perl/Python). Popularitatea sa ca aplicaie web este strns legat de
cea a PHP-ului care este adesea combinat cu MySQL i denumit Duo-ul Dinamic. n
multe cri de specialitate este precizat faptul ca MySQL este mult mai uor de invat i
folosit dect multe din aplicaiile de gestiune a bazelor de date, ca exemplu comanda de
ieire fiind una simpl i evident: exit sau quit.
Pentru a administra bazele de date MySQL se poate folosi modul linie de comand sau,
prin descrcare de pe internet, o interfa grafic: MySQL Administrator i MySQL
Query Browser. Un alt instrument de management al acestor baze de date este aplicaia
gratuit, scris n PHP, phpMyAdmin.
MySQL poate fi rulat pe multe dintre platformele software existente: AIX, FreeBSD,
GNU/Linux, Mac OS X, NetBSD, Solaris, SunOS, Windows 9x/NT/2000/XP/Vista.

Tipuri de date in MySQL

TIP NUME INTERVAL VALORI ATRIBUTE
Numeric
{1 byte}
TINYINT[(M)]
-128 ,127
[0,255 pentru UNSIGNED]
AUTO_INCREMENT
UNSIGNED, ZEROFILL,
SERIAL DEFAULT VALUE
P.A.I.I - MYSQL - introducere
Numeric
{2 bytes}
SMALLINT[(M)]
-32,768, 32,767
[0, 65,535]
AUTO_INCREMENT,
UNSIGNED, ZEROFILL,
SERIAL DEFAULT VALUE
Numeric
{3 bytes}
MEDIUMINT[(M)]
-8,388,608 to 8,388,607
[0 ,16,777,215]
AUTO_INCREMENT,
UNSIGNED, ZEROFILL,
SERIAL DEFAULT VALUE
Numeric
{4 bytes}
INT[(M)]
-/+2.147E+9
[0, 4.294E+9]
AUTO_INCREMENT,
UNSIGNED, ZEROFILL,
SERIAL DEFAULT VALUE
Numeric
{8 bytes}
BIGINT[(M)]
-/+9.223E+18
[0,18.45E+18]
AUTO_INCREMENT,
UNSIGNED, ZEROFILL,
SERIAL DEFAULT VALUE
Numeric
{4 or 8}
FLOAT(p)
p=0-24 --> "FLOAT"
p=25-53 --> "DOUBLE"
UNSIGNED, ZEROFILL
Numeric
{4 bytes}
FLOAT[(M,D)]
Min=+/-1.175E-38
Max=+/-3.403E+38
UNSIGNED, ZEROFILL
Numeric
{8 bytes}
DOUBLE[(M,D)]
Min=+/-2.225E-308
Max=+/-1.798E+308
UNSIGNED, ZEROFILL
Numeric
{M+2}
DECIMAL[(M,[D])]
Stored as string
Max Range = DOUBLE
range
Fixed point vs. DOUBLE
float
UNSIGNED, ZEROFILL
Bit
{8 bytes}
BIT[(M)]
Binary. Display by [add zero
|converting with BIN()].
M=1-64
Prior to 5.03
TINYINT(1) Synonym
String
{M char's}
CHAR[(M)]
M=0-255 Characters,
FIXED.
Right padded with spaces.
BINARY,
CHARACTER SET
String
{M
char's
1
}
VARCHAR(M)
M=0-65,535 Characters
M=0-255 <v5.0.3
BINARY,
CHARACTER SET
String
{#char's
1
}
TINYTEXT
2
0-255 Characters
BINARY,
CHARACTER SET
String
{#char's
1
}
TEXT
2
0-65,535 Char's
BINARY,
CHARACTER SET
String
{#char's
1
}
MEDIUMTEXT
2
0-16,777,215 Char's
BINARY,
CHARACTER SET
String
{#char's
1
}
LONGTEXT
2
0-4,294,967,295 Char's
BINARY,
CHARACTER SET
String
{M bytes}
BINARY[(M)] M=0-255 bytes, FIXED.
Global Only
(case sensitive)
String
{M bytes}
VARBINARY(M)
0-65,535 bytes
M=0-255 <v5.0.3
Global Only
(case sensitive)
String
{#bytes
1
}
TINYBLOB 0-255 bytes
Global Only
(case sensitive)
String
{#bytes
1
}
BLOB 0-65,535 bytes
Global Only
(case sensitive)
String
{#bytes
1
}
MEDIUMBLOB 0-16,777,215 bytes
Global Only
(case sensitive)
String
{#bytes
1
}
LONGBLOB 0-4,294,967,295 bytes
Global Only
(case sensitive)
String
{1-2
bytes}
ENUM
2

("A1","A2",...)
Column is exactly 1 of 1-
65,535 values
CHARACTER SET
String
{1-8
bytes}
SET
2

("A1","A2",...)
Column is 0 or more values
in list of 1-64 members
CHARACTER SET
Date &
Time
{3 bytes}
DATE
"1000-01-01" - "9999-12-
31"
Global Only
(YYYY-MM-DD)
Date &
Time
{8 bytes}
DATETIME
"1000-01-01 00:00:00" -
"9999-12-31 23:59:59"
Global Only
(YYYY-MM-DD hh:mm:ss)
Date &
Time
{3 bytes}
TIME "-838:59:59" - "838:59:59"
Global Only
(hh:mm:ss)
Date &
Time
{4 bytes}
TIMESTAMP
19700101000000 -
2037+
Global Only
(YYYYMMDDhhmmss)
Date &
Time
{1 bytes}
YEAR 1900 - 2155
Global Only
(YYYY)


Comenzi MySQL comenzile MySQL pot fi scrise pe unul sau mai multe rnduri i se
termina cu ;.

1. CREARE DATABASE pentru crearea unei noi baze de date
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
[create_specification ...]

create_specification:
[DEFAULT] CHARACTER SET charset_name
| [DEFAULT] COLLATE collation_name

Ex.: CREATE DATABASE mydb;

2. DROP DATABASE pentru tergerea unei baze de date
DROP {DATABASE | SCHEMA} [IF EXISTS] db_name
Ex.: DROP DATABASE mydb;

3. SHOW DATABASES afieaz toate bazele de date de pe server.

4. USE schimbarea bazei de date
USE db_name
Ex.: USE mydb;

5. SHOW TABLES afieaz toate tabelele din baza de date curent

6. CREATE TABLE pentru crearea unei noi tabele
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
{ LIKE old_tbl_name | (LIKE old_tbl_name) }

create_definition:
col_name column_definition
| [CONSTRAINT [symbol]] PRIMARY KEY [index_type]
(index_col_name,...)
| {INDEX|KEY} [index_name] [index_type] (index_col_name,...)
| [CONSTRAINT [symbol]] UNIQUE [INDEX|KEY]
[index_name] [index_type] (index_col_name,...)
| {FULLTEXT|SPATIAL} [INDEX|KEY] [index_name] (index_col_name,...)
| [CONSTRAINT [symbol]] FOREIGN KEY
[index_name] (index_col_name,...) reference_definition
| CHECK (expr)

column_definition:
data_type [NOT NULL | NULL] [DEFAULT default_value]
[AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY]
[COMMENT 'string'] [reference_definition]

data_type:
BIT[(length)]
| TINYINT[(length)] [UNSIGNED] [ZEROFILL]
| SMALLINT[(length)] [UNSIGNED] [ZEROFILL]
| MEDIUMINT[(length)] [UNSIGNED] [ZEROFILL]
| INT[(length)] [UNSIGNED] [ZEROFILL]
| INTEGER[(length)] [UNSIGNED] [ZEROFILL]
| BIGINT[(length)] [UNSIGNED] [ZEROFILL]
| REAL[(length,decimals)] [UNSIGNED] [ZEROFILL]
| DOUBLE[(length,decimals)] [UNSIGNED] [ZEROFILL]
| FLOAT[(length,decimals)] [UNSIGNED] [ZEROFILL]
| DECIMAL(length,decimals) [UNSIGNED] [ZEROFILL]
| NUMERIC(length,decimals) [UNSIGNED] [ZEROFILL]
| DATE
| TIME
| TIMESTAMP
| DATETIME
| YEAR
| CHAR(length)
[CHARACTER SET charset_name] [COLLATE collation_name]
| VARCHAR(length)
[CHARACTER SET charset_name] [COLLATE collation_name]
| BINARY(length)
| VARBINARY(length)
| TINYBLOB
| BLOB
| MEDIUMBLOB
| LONGBLOB
| TINYTEXT [BINARY]
[CHARACTER SET charset_name] [COLLATE collation_name]
| TEXT [BINARY]
[CHARACTER SET charset_name] [COLLATE collation_name]
| MEDIUMTEXT [BINARY]
[CHARACTER SET charset_name] [COLLATE collation_name]
| LONGTEXT [BINARY]
[CHARACTER SET charset_name] [COLLATE collation_name]
| ENUM(value1,value2,value3,...)
[CHARACTER SET charset_name] [COLLATE collation_name]
| SET(value1,value2,value3,...)
[CHARACTER SET charset_name] [COLLATE collation_name]
| spatial_type

index_col_name:
col_name [(length)] [ASC | DESC]

index_type:
USING {BTREE | HASH | RTREE}

reference_definition:
REFERENCES tbl_name [(index_col_name,...)]
[MATCH FULL | MATCH PARTIAL | MATCH SIMPLE]
[ON DELETE reference_option]
[ON UPDATE reference_option]

reference_option:
RESTRICT | CASCADE | SET NULL | NO ACTION

table_option:
{ENGINE|TYPE} [=] engine_name
| AUTO_INCREMENT [=] value
| AVG_ROW_LENGTH [=] value
| [DEFAULT] CHARACTER SET charset_name
| CHECKSUM [=] {0 | 1}
| COLLATE collation_name
| COMMENT [=] 'string'
| CONNECTION [=] 'connect_string'
| DATA DIRECTORY [=] 'absolute path to directory'
| DELAY_KEY_WRITE [=] {0 | 1}
| INDEX DIRECTORY [=] 'absolute path to directory'
| INSERT_METHOD [=] { NO | FIRST | LAST }
| MAX_ROWS [=] value
| MIN_ROWS [=] value
| PACK_KEYS [=] {0 | 1 | DEFAULT}
| PASSWORD [=] 'string'
| ROW_FORMAT [=] {DEFAULT|DYNAMIC|FIXED|COMPRESSED|REDUNDANT|COMPACT}
| UNION [=] (tbl_name[,tbl_name]...)

select_statement:
[IGNORE | REPLACE] [AS] SELECT ... (Some legal select
statement)

Ex.:
CREATE TABLE example1 (
id INT,
data VARCHAR(100)
);

CREATE TABLE STUDENTI (
nrmat INT,
nume VARCHAR(200),
datanasterii DATE,
specializarea VARCHAR(100),
anstudiu INT,
grupa VARCHAR(10)
);

7. DROP TABLE pentru tergerea unei tabele
DROP [TEMPORARY] TABLE [IF EXISTS]
tbl_name [, tbl_name] ...
[RESTRICT | CASCADE]
Ex.: DROP TABLE STUDENTI;

8. ALTER TABLE modificarea structurii unei tabele dintr-o baz de date MySQL
ALTER [IGNORE] TABLE tbl_name
alter_specification [, alter_specification] ...

alter_specification:
table_option ...
| ADD [COLUMN] col_name column_definition [FIRST | AFTER col_name ]
| ADD [COLUMN] (col_name column_definition,...)
| ADD {INDEX|KEY} [index_name] [index_type] (index_col_name,...)
| ADD [CONSTRAINT [symbol]]
PRIMARY KEY [index_type] (index_col_name,...)
| ADD [CONSTRAINT [symbol]]
UNIQUE [INDEX|KEY] [index_name] [index_type] (index_col_name,...)
| ADD [FULLTEXT|SPATIAL] [INDEX|KEY] [index_name] (index_col_name,...)
| ADD [CONSTRAINT [symbol]]
FOREIGN KEY [index_name] (index_col_name,...)
reference_definition
| ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}
| CHANGE [COLUMN] old_col_name new_col_name column_definition
[FIRST|AFTER col_name]
| MODIFY [COLUMN] col_name column_definition [FIRST | AFTER col_name]
| DROP [COLUMN] col_name
| DROP PRIMARY KEY
| DROP {INDEX|KEY} index_name
| DROP FOREIGN KEY fk_symbol
| DISABLE KEYS
| ENABLE KEYS
| RENAME [TO] new_tbl_name
| ORDER BY col_name [, col_name] ...
| CONVERT TO CHARACTER SET charset_name [COLLATE collation_name]
| [DEFAULT] CHARACTER SET charset_name [COLLATE collation_name]
| DISCARD TABLESPACE
| IMPORT TABLESPACE

index_col_name:
col_name [(length)] [ASC | DESC]

index_type:
USING {BTREE | HASH | RTREE}
Ex.: ALTER TABLE STUDENTI ADD COLUMN media_generala float;

9. DESCRIBE pentru afiarea detaliata a informaiilor referitoare la cmpurile unei
tabele MySQL
{DESCRIBE | DESC} tbl_name [col_name | wild]
Ex.: DESCRIBE STUDENTI;
+---------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------+--------------+------+-----+---------+-------+
| nrmat | int(11) | YES | | NULL | |
| nume | varchar(200) | YES | | NULL | |
| datanasterii | date | YES | | NULL | |
| specializarea | varchar(100) | YES | | NULL | |
| anstudiu | int(11) | YES | | NULL | |
| grupa | varchar(10) | YES | | NULL | |
+---------------+--------------+------+-----+---------+-------+
6 rows in set (0.00 sec)

10. SHOW COLUMNS pentru afiarea detaliata a informaiilor referitoare la
cmpurile unei tabele MySQL
SHOW [FULL] COLUMNS FROM tbl_name [FROM db_name]
[LIKE 'pattern' | WHERE expr]
Ex.: SHOW COLUMNS FROM STUDENTI;

11. INSERT INTO pentru adugarea unei noi nregistrri ntr-o tabel MySQL
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name [(col_name,...)]
VALUES ({expr | DEFAULT},...),(...),...
[ ON DUPLICATE KEY UPDATE col_name=expr, ... ]

sau

INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name
SET col_name={expr | DEFAULT}, ...
[ ON DUPLICATE KEY UPDATE col_name=expr, ... ]

sau

INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name [(col_name,...)]
SELECT ...
[ ON DUPLICATE KEY UPDATE col_name=expr, ... ]

Ex.:
INSERT INTO STUDENTI VALUES(1,'Cerlinca
Tudor','1977/9/7','Calculatoare',1,'1121a');
INSERT INTO STUDENTI VALUES(2,'Petriuc
Mihai','1977/1/2','Calculatoare',1,'1121a');
INSERT INTO STUDENTI VALUES(3,'Petrea
Andrei','1978/1/2','Calculatoare',1,'1121a');
INSERT INTO STUDENTI VALUES(4,'Ionescu
Ion','1977/3/1','Calculatoare',1,'1121b');

12. UPDATE pentru actualizarea coninutului unei tabele MySQL
UPDATE [LOW_PRIORITY] [IGNORE] tbl_name
SET col_name1=expr1 [, col_name2=expr2 ...]
[WHERE where_condition]
[ORDER BY ...]
[LIMIT row_count]
Ex.:UPDATE STUDENTI SET nume='Cerlinca Tudor Ioan' where nrmat=1;

13. DELETE pentru tergerea unor nregistrri dintr-o tabel MySQL
DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name
[WHERE where_condition]
[ORDER BY ...]
[LIMIT row_count]
Ex.:
DELETE FROM STUDENTI where nrmat=1;

14. SELECT pentru afiarea informaiilor coninute n tabelele unei baze de date
SELECT
[ALL | DISTINCT | DISTINCTROW ]
[HIGH_PRIORITY]
[STRAIGHT_JOIN]
[SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
[SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]
select_expr, ...
[FROM table_references
[WHERE where_condition]
[GROUP BY {col_name | expr | position}
[ASC | DESC], ... [WITH ROLLUP]]
[HAVING where_condition]
[ORDER BY {col_name | expr | position}
[ASC | DESC], ...]
[LIMIT {[offset,] row_count | row_count OFFSET offset}]
[PROCEDURE procedure_name(argument_list)]
[INTO OUTFILE 'file_name' export_options
| INTO DUMPFILE 'file_name'
| INTO @var_name [, @var_name]]
[FOR UPDATE | LOCK IN SHARE MODE]]
Ex.:
SELECT * FROM STUDENTI;
+-------+----------------+--------------+---------------+----------+-------+
| nrmat | nume | datanasterii | specializarea | anstudiu | grupa |
+-------+----------------+--------------+---------------+----------+-------+
| 2 | Petriuc Mihai | 1977-01-02 | Calculatoare | 1 | 1121a |
| 1 | Cerlinca Tudor | 1977-09-07 | Calculatoare | 1 | 1121a |
| 3 | Petrea Andrei | 1978-01-02 | Calculatoare | 1 | 1121a |
| 4 | Ionescu Ion | 1977-03-01 | Calculatoare | 1 | 1121b |
+-------+----------------+--------------+---------------+----------+-------+
4 rows in set (0.00 sec)

SELECT * FROM STUDENTI ORDER BY datanasterii;
+-------+----------------+--------------+---------------+----------+-------+
| nrmat | nume | datanasterii | specializarea | anstudiu | grupa |
+-------+----------------+--------------+---------------+----------+-------+
| 2 | Petriuc Mihai | 1977-01-02 | Calculatoare | 1 | 1121a |
| 4 | Ionescu Ion | 1977-03-01 | Calculatoare | 1 | 1121b |
| 1 | Cerlinca Tudor | 1977-09-07 | Calculatoare | 1 | 1121a |
| 3 | Petrea Andrei | 1978-01-02 | Calculatoare | 1 | 1121a |
+-------+----------------+--------------+---------------+----------+-------+
4 rows in set (0.00 sec)

SELECT * FROM STUDENTI WHERE grupa=1121a
+-------+----------------+--------------+---------------+----------+-------+
| nrmat | nume | datanasterii | specializarea | anstudiu | grupa |
+-------+----------------+--------------+---------------+----------+-------+
| 2 | Petriuc Mihai | 1977-01-02 | Calculatoare | 1 | 1121a |
| 1 | Cerlinca Tudor | 1977-09-07 | Calculatoare | 1 | 1121a |
| 3 | Petrea Andrei | 1978-01-02 | Calculatoare | 1 | 1121a |
+-------+----------------+--------------+---------------+----------+-------+
3 rows in set (0.00 sec)

SELECT * FROM STUDENTI WHERE nume LIKE Pe%;
+-------+---------------+--------------+---------------+----------+-------+
| nrmat | nume | datanasterii | specializarea | anstudiu | grupa |
+-------+---------------+--------------+---------------+----------+-------+
| 2 | Petriuc Mihai | 1977-01-02 | Calculatoare | 1 | 1121a |
| 3 | Petrea Andrei | 1978-01-02 | Calculatoare | 1 | 1121a |
+-------+---------------+--------------+---------------+----------+-------+
2 rows in set (0.00 sec)

SELECT COUNT(*) as 'NrStudentiGrupa', grupa from STUDENTI GROUP BY
grupa ORDER BY NrStudentiGrupa;
+-----------------+-------+
| NrStudentiGrupa | grupa |
+-----------------+-------+
| 1 | 1121b |
| 3 | 1121a |
+-----------------+-------+
2 rows in set (0.00 sec)

SELECT COUNT(*) as 'NrStudentiGrupa', grupa from STUDENTI GROUP BY
grupa HAVING NrStudentiGrupa>1 ORDER BY NrStudentiGrupa;
+-----------------+-------+
| NrStudentiGrupa | grupa |
+-----------------+-------+
| 1 | 1121b |
| 3 | 1121a |
+-----------------+-------+
2 rows in set (0.00 sec)

Tema:

1. Veti crea urmtoarele tabele: autori si carti
autori:
idautor numar intreg
nume sir de caractere
carti:
idcarte numar intreg
titlul sir de caractere
idautor numar intreg
pret numar intreg

2. Veti introduce date in cele doua tabele
Tabela AUTORI
1 Liviu Rebreanu
2 Marin Preda
3 Ion Creanga
Tabela CARTI
1 Padurea Spanzuratilor 1 23
2 Ion 1 40
3 Morometii 2 15
4 Amintiri din copilarie 3 100
5 Capra cu trei iezi 3 75

3.Veti realiza urmatoarele interogari:
a) listarea continutului tabelei autori
b) listarea continutului tabelei carti
c) afisarea autorilor al caror nume incepe cu litera L
d) afisarea cartilor cu pretul mai mare decat o valoare de referinta (stablita de
catre utilizator)
e) afisarea cartilor scrise de un anumit autor
f) afisarea cartilor sub urmatoarea forma:
Titlu Autor Pret
Padurea Spanzuratilor Liviu Rebreanu 23
Ion Liviu Rebreanu 40
--------------------------------------------------------------------------
MySQL

Chei primar. Chei strine

Definirea cheilor primare.

Ex.:
create table stud (
id int ,
nume varchar(100),
grupa varchar(20),
PRIMARY KEY (id)
) ENGINE = INNODB;


insert into stud values(1, 'Cerlinca Tudor', '1121b');
insert into stud values(2, 'Cerlinca Marius', '1121a');
Urmtoarea comanda SQL va genera mesajul de eroare: Duplicate entry '1' for key 1
insert into stud values(1, 'Cerlinca Gheorghe', '1121c');

Definirea cheilor strine
Ex.:

create table note(
id_student int,
nota int,
INDEX ind(id_student),
FOREIGN KEY(id_student) REFERENCES stud (id)
) ENGINE = INNODB;


insert into note values(1,10);
insert into note values(1,8);
Urmtoarele comenzi SQL vor genera mesaj de eroare:
insert into note values(3,8);
delete from stud where id=1;

Tema:
1. Veti crea urmtoarele tabele: studenti, discipline i note.

studenti:
nrmat numar intreg
nume - sir de caractere
anstudiu - sir de caractere
grupa -sir de caractere

P.A.I.I - MYSQL - chei
discipline:
id_disciplina numar intreg
denumire - sir de caractere
note:
nrmat - numar intreg
id_disciplina - numar intreg
nota - numar intreg


2. Veti introduce date in cele dou tabele.

3. Veti scrie comenzi SQL pentru:
a) listarea continutului tabelei studenti.
b) listarea continutului tabelei discipline.
c) afisarea grupelor si a numarului de studenti din fiecare grupa.
d) afisarea anilor de studiu si a numarului de studenti din fiecare an de studiu.
e) Afisarea situatiei scolare pentru un anumit student.
Nume Disciplina Nota
Ion Ionescu PTII 5
Ion Ionescu APA 10
f) Afisarea situatiei scolare pentru toti studentii dintr-o anumita grupa. Se va
utiliza acelasi format de afisare ca si la punctul e.
g) Afisarea situatiei scolare pentru toti studentii dintr-un anumit an de studiu. Se
va utiliza acelasi format de afisare ca si la punctul e.
h) Afisarea situatiei scolare de la o anumita disciplina.
Disciplina Nota
PTII 5
APA 10

MySQL
Tema:
1. Veti crea urmatoarele tabele: produse, stoc si operatii.
produse:
idprodus numar intreg (cheie primara)
nume - sir de caractere
furnizor sir de caractere
pret numar intreg

stoc:
idprodus numar intreg (cheie straina)
cantitate - sir de caractere

operatii:
idprodus numar intreg (cheie straina)
cantitate numar intreg
operatie numar intreg reprezentand codul operatiei (1 intrare produs, 2 iesire
produs)

2. Veti introduce date in cele dou tabele.

3. Veti scrie comenzi SQL pentru:
a) listarea continutului tabelei produse.
b) listarea continutului tabelei stoc.
c) afisarea stocului
Nume_Produs Pret Cantitate Pret_Total
Paine 30 20 600
Mere 45 14 630
d) afisarea operatiilor pentru un anumit produs
Nume_Produs Operatie Cantitate
Paine 1 20
Paine 2 14
Paine 2 2
Paine 1 15
Paine 1 6
e) afisarea produselor cu pretul mai mare decat o valoare stabilita de utilizator
f) afisarea produselor primite de la un anumit furnizor

P.A.I.I - MYSQL - exercitii
P.A.I.I PHP si MYSQL
PHP i MySQL
1. Conectarea la o baz de date MySQL
Sintaxa:
resource mysql_connect ([ string ser!er [" string username ["
string #ass$ord [" bool ne$_lin% [" int client_&lags ''''' )
Ex.:
<?
$link=mysql_connect('localhost', 'tudo_c'! o die ('"u ma #ot
conecta la se$e ul de %a&e de date' . mysql_eo(!!'
?(
). (nc)iderea unei cone*iuni
Sintaxa:
bool mysql_close ([ resource lin%_identi&ier ' +
Ex.:
<?
mysql_close($link!'
?(
*. Selectarea bazei de date
Sintaxa:
bool mysql_select_db ( string database_name [" resource
lin%_identi&ier ' +
Ex.:
<?
$d%_test = mysql_select_d%('test', $link!'
i+ (,$d%_test!
die ('"u ma #ot conecta la %a&a de date test : ' . mysql_eo(!!'
?(
-. Crearea unei cereri SQL i rularea ei
Sintaxa:
resource mysql_query ( string query [" resource lin%_identi&ier
' +
Ex.:
<?
$quey=.SE/E01 2 3456 studenti.'
$esult = mysql_quey($quey, $link! o die('0eeea S7/ a +ost
incoecta: '
. mysql_eo(!!'
?(
,bser!a-ii.
a. Pentru S/L/C0" SH,1" 2/SC345/" /6PL748 &unc-ia
mysql_query() 9ntoarce o resurs (c:nd interogarea a
&ost e*ecutat cu succes+ sau !aloarea ;7LS/ 9n cazul
a#ari-iei unei erori< Pentru a ob-ine numrul de
9nregistrri returnate de o interogare de ti#ul S/L/C0"
se !a utiliza &unc-ia mysql_num_rows()< Pentru
accesarea rezultatului returnat de ctre &unc-ia
P.A.I.I PHP si MYSQL
mysql_query() se !a utiliza &unc-ia
mysql_fetch_array()<
b. Pentru 48S/30" =P270/" 2/L/0/" 23,P etc" &unc-ia
mysql_query() 9ntoarce 03=/ dac o#era-ia s>a realizat
cu succes i ;7LS/ 9n caz contrar< Pentru a ob-ine
numrul de 9nregistrri a&ectate" se !a utiliza &unc-ia
mysql_affected_rows()<
?< =n e*em#lu com#let< 7&iarea datelor con-inute 9ntr>o tabel
a unei baze de date MySQL<
<?
88conectaea la se$eul local 6yS7/
$link=mysql_connect('localhost', 'tudo_c'! o die ('"u ma #ot conecta
la se$eul de %a&e de date' . mysql_eo(!!'
88schim%aea %a&ei de date
$d%_test = mysql_select_d%('test', $link!'
i+ (,$d%_test!
die ('"u ma #ot conecta la %a&a de date test : ' . mysql_eo(!!'
88ceaea si executia unei inteo9ai S7/
$quey=.SE/E01 2 3456 studenti.'
$esult = mysql_quey($quey, $link! o die('0eeea S7/ a +ost
incoecta: ' . mysql_eo(!!'
88a+isaea numaului de ine9istai din e&ultat
$num_ine9=mysql_num_o:s($esult!'
echo ."umaul de ine9istai din ta%ela studenti =
..$num_ine9..<%(.'
88o%tineea numaului de coloane
$num_coloane=mysql_num_+ields($esult!'
88a+isaea datelo su% +oma ta%elaa
echo .<ta%le(;n.'
+o($i=<'$i<$num_ine9'$i==!
>
$linie=mysql_+etch_aay($esult!'
echo .<t(;n.'88o noua linie
+o($?=<'$?<$num_coloane'$?==!
>
echo .<td(.'88o noua coloana
echo $linie@$?A'
echo .<8td(;n.'
B
echo .<8t(;n.'
B
echo .<8ta%le(;n.'
mysql_+ee_esult($esult!'
88inchideea conexiunii
mysql_close($link!'
P.A.I.I PHP si MYSQL
?(
@< Po#ularea unei liste de selec-ie cu !alori #reluate dintr>o
tabel a unei baze de date MySQL
<?
88conectaea la se$eul local 6yS7/
$link=mysql_connect('localhost', 'tudo_c'! o die ('"u ma #ot conecta
la se$eul de %a&e de date' . mysql_eo(!!'
88schim%aea %a&ei de date
$d%_test = mysql_select_d%('test', $link!'
i+ (,$d%_test!
die ('"u ma #ot conecta la %a&a de date test : ' . mysql_eo(!!'
88ceaea si executia unei inteo9ai S7/
$quey=.SE/E01 2 3456 studenti.'
$esult = mysql_quey($quey, $link! o die('0eeea S7/ a +ost
incoecta: ' . mysql_eo(!!'
$num_ine9=mysql_num_o:s($esult!'
echo .<SE/E01 name='stud'(;n.'
+o($i=<'$i<$num_ine9'$i==!
>
$linie=mysql_+etch_aay($esult!'
>
echo .<5C1D5" $alue='$linie@<A'(..$linie@1A..<85C1D5"(;n.'
B
B
echo .<8SE/E01(;n.'
mysql_+ee_esult($esult!'
88inchideea conexiunii
mysql_close($link!'
?(
A< 0eme
a< Crea-i urmtoarele tabele.
studenti . nrmat" nume" anstudiu" gru#a
disci#line . id_disci#lina" denumire_disci#lina
note . nrmat" id_disci#lina" nota
b< 4ntroduce-i date 9n &iecare din cele B tabele
c< Scrie-i un scri#t PHP care !a a&ia situa-ia colar a
tuturor studen-ilor< 7&iarea !a &i de &orma.
nume anstudiu gru#a denumire_disci#lina nota
Cerlinca 0udor C DD?Da 3; DE
4onescu 4on 4C DDFGa PS2 H
P.A.I.I PHP si MYSQL
4onescu 4on C DDFGa 3; DE
d< Scrie-i un scri#t PHP care !a a&ia situa-ia colar a unui
anumit student< 7&iarea !a &i de &orma.
denumire_disci#lina nota
3; DE
4P H
,bser!a-ie. Selectarea studentului se realizeaz #rin
intermediul unei liste de selec-ie ce !a &i #o#ulat 9n mod
dinamic" cu numele tuturor studen-ilor din tabela studenti<
d< Scrie-i un scri#t PHP care !a a&ia situa-ia colar #entru
o anumit disci#lin< 7&iarea !a &i de &orma.
nume anstudiu gru#a nota
Cerlinca 0udor C DD?Da DE
4onescu 4on 4C DDFGa H
4onescu 4on C DDFGa DE
,bser!a-ie. Selectarea disci#linei se realizeaz #rin
intermediul unei liste de selec-ie ce !a &i #o#ulat 9n mod
dinamic" cu denumirile tutoror disci#linelor din tabela
disci#line<
e< Scrie-i un scri#t PHP ce !a #ermite introducerea unui nou
student 9n tabela studenti< Ce-i a!ea 9n !edere crearea
urmtorului &ormular<

8ume.
7n studiu.
Iru#a.
&< Scrie-i un scri#t PHP ce !a #ermite introduceea de noi note<
Ce-i a!ea 9n !edere crearea unui &ormular cu urmtoarele
elemente H0ML.
> o list de selec-ie #o#ulat 9n mod dinamic cu numele tuturor
studen-ilor
> o list de selec-ie #o#ulat 9n mod dinamic cu denumirile
tuturor disci#linelor
> un cam# de editare #entru introducerea notei
> un buton J4nregistreazaK
> un buton J3esetK
Inregistreaza Reset

S-ar putea să vă placă și