Documente Academic
Documente Profesional
Documente Cultură
2010
Reading this material will enable you to build dynamic websites. If youve build websites using plain HTML, you realiye the limitations of this approach. Statistic content from a pure HTML website is just that static. It stays the same unless you physically update it. Your users cant interact with the site in any meaningful fashion. Using a language such PHP and database such as MySQL allows you to make your sites dynamic: to have them be customizable and contain real-time information.
Tehnologia client/server.
Sistemele de prelucrare pe loturi Sistemele de prelucare n timp real Sistemele de prelucare cu acces multiplu Sistemele de prelucrare client/server
foloseau calculatoare de tip mainframe care executau lucrri, numite job. Componenta care controla lucrrile se numea monitor (supervizor). Supervizorul se ocupa de nlnuirea i supravegherea lucrrilor, fr a interveni operatorul. Lucrrile erau executate secvenial, pe msur ce soseau. Informaia nu era procesat pn cnd aceasta nu este complet
au aprut odat cu extiderea capacitii de memorie. executau complet lucrrile ntr-o cuant de timp. ntre terminale i calculatorul central existau comunicaii directe n ambele sensuri. au fost create cu scopul de a permite controlarea unor activiti din afara SC (operaiile de I/O).
au aprut o dat cu apariia minicalculatoarelor ofer posibilitatea utilizrii simultane de ctre mai muli utilizatori a resurselor de calcul, prin procesul de mprire a timpului de utilizare a procesorului (time-sharing). se asigur distribuirea resurselor unui sistem de prelucrare a informaiei ntre mai muli utilizatori independeni, alocndu-se pentru fiecare dintre ei o cuant de timp.
au aprut ca o necesitate a conectrii microcalculatoarelor (PC) pentru partajarea resurselor (fizice, logice sau informaionaleBD).
Reea de calculatoare ansamblul de calculatoare interconectate ntre ele prin medii de comunicaie, asigurnd utilizarea n comun a resurselor fizice, logice i informaionale. Medii de comunicaie - mediu fizic prin intermediul cruia se pot transmite date. Arhitectura schema general a unui sistem pentru a realiza un anumit mod de funcionare. Tehnologie modalitatea de implementare a unei arhitecturi. Tehnologia client-server - o modalitate de a separa o aplicaie n dou pri distincte. Client (front-end) reprezint consumatorul de servicii. Server (back-end) reprezint furnizorul de servicii i acioneaz ca un mainframe Middleware (produse program de intermediere) component proiectat pentru a ascunde prii de front-end (client) nivelurile inferioare ale reelei
serviciu-relaie ntre procese ce se execut pe calculatoare separate. resurse partajate-server-ul poate servi mai muli clieni n acelai timp protocoale asimetrice-existena relaiei de tipul unul la muli ntre server i client. transparena locaieiascunderea unor informaii clienilor referitoare la poziia serverului n cadrul unei reele comunicaie bazat pe mesaje-interaciunea ntre calculatoare se face prin mecanismul de transmisie de mesaje. ncapsularea serviciilor-un mesaj specific server-ului serviciul cerut. scalabilitate-pot fi scalate pe orizontal sau vertical. integritate-datele i codul server-ului sunt reinute centralizat, ceea ce implic o actualizare i securizare eficiente a datelor partajate.
Server de fiiere Server de baze de date Server de aplicaii Server Web Server de aplicaii web
Server de fiiere
12
utilizate pentru stocarea programelor i fiierelor de date; reprezint o form primitiv de acces la date, care necesit multiple schimburi de mesaje ntre server i clieni, sunt dublate de servere de tiprire.
sunt calculatoarele pe care ruleaz un SGBD, folosind un limbaj SQL permit iniializarea, accesarea i ntreinerea bazelor de date clientul trimite cereri SQL server-ul de baze de dateexecut accesul la baza de date rezultatul comenzilor SQL este returnat clientului prin intermediul reelei.
Server de aplicaii
14
sunt utilizate n controlul unor dispozitive periferice de la distan utilizarea unui server de aplicaii presupune (re)programarea att a server-ului ct i a clienilor
Server Web
15
sunt utilizate pentru stocarea paginilor web are ca scop primirea fiierele de pe server ntr-un format specific browser-ului de web i de a le transmite prin intermediul reelei. sunt create pentru a transmite coninut static unui numr mare de utilizatori.
sunt proiectate pentru a extinde server-ele de web pentru coninutul dinamic. se aga de server-ul de web intercepteaz automat utilizatorii care doresc un coninut dinamic.
17
Arhitectura client/server-arhitectur de reea n care fiecare calculator din reea este un client sau un server. Calculatorul client-interacioneaz cu un utilizator. Are dou sarcini: logica prezentrii i logica aplicaiei. Calculatorul server-orice calculator de birou puternic, al crui rol este de a furniza servicii i resurse utilizatorilor.
logica prezentrii reprezint interfaa cu utilizatorul: asigur coordonarea interaciunii dintre utilizator i aplicaie include detalii privitoare la afiarea tuturor informaiilor pe ecranul calculatorului. include i partea de preluare a datelor de la utilizator logica aplicaiei - acea parte a programului care decide ce aciuni trebuie s se execute n diferite situaii i implementeaz regulile afacerii.
responsabil cu administrarea accesului la baza de date: sortarea datelor, selectarea acelora de care are nevoie clientul, asigurarea c ali clieni nu ncearc modificarea unor nregistrri pe care ali clieni le vizualizeaz
Avantaje au o securitate mai bun; performanele pot fi mbuntite uor; raportul calitate / pre este mai bun. Dezavantaje complexitatea, nefiind simplu de configurat i de administrat; necesiti - pentru a putea deservi un numr mare de clieni, server-ul trebuie s fie un calculator foarte performant; pre - performanele server-ului scad o dat cu creterea numrului de utilizatori.
Arhitectura client/server pe dou niveluri Arhitectura client/server pe trei niveluri Arhitectura client/server pe mai multe niveluri
a avut drept surs arhitectura file server a mbuntit: utilizabilitatea; scalabilitatea i flexibilitatea are trei componente repartizate pe dou niveluri: interfaa cu utilizatorul, logica aplicaiei i gestiunea bazei de date
este adugat un nivel suplimentar (nivel de mijloc sau server de aplicaii), ntre client i server-ul bazei de date clientul (primul nivel) este reprezentat de interfaa sistemului cu utilizatorul server-ul de baze de date (nivelul trei) furnizeaz funcionalitatea gestiunii bazei de date server-ul de aplicaii (nivelul de mijloc) furnizeaz servicii de administrare a regulilor afacerii i a prelucrrii datelor
nivelul de mijloc este mprit n dou sau mai multe niveluri cu funciuni diferite cele mai cunoscute aplicaii cu o astfel de arhitectur sunt aplicaiile Internet.
26
Tipuri de limbaje de scriptare: client side interpreteaz scripturile doar dup ce paginile care conin script-urile au fost descrcate; server side - scripturile sunt rulate pe partea de server nainte ca pagina care conine scriptul s fie trimis browser-ului.
parser (analizorul, interpretorul) PHP interpreteaz scripturile PHP server de web (Apache) care accept cererile HTTP formulate de clieni i le ofer rspunsurile la cererile formulate, adugnd i datele cerute. browser (client de web) cu ajutorul su se vizualizeaz rezultatele.
Sintaxa limbajului reprezint totalitatea regulilor de scriere a programelor, astfel nct s fie acceptate de ctre interpretorul PHP. Semantica limbajului se refer la semnificaia construciilor sintactice corecte.
caractere utilizate-setul de caractere al limbajului: litere mari i mici, cifre, i o serie de caractere speciale identificatorii-modaliti de definire a datelor, funciilor, cuvintelor cheie. Identificatorii ncep ntotdeauna cu o liter. separatorii-elemente care separ identificatorii: spaiu, punct i virgul i virgula comentarii
Tipuri scalare Boolean ntreg stocate pe 32 de bii. Numr real reprezentate pe 64 bii ir de caractere trebuiesc incluse ntre ghilimele. Tipuri compuse Tablouri este asocierea dintre elementele tabloului i cheile sale.
2 numr ntreg -3 numr ntreg - 4 este eroare deoarece are spaiu 5.0 nu este numr ntreg 2.3e4 este numr real 2 nu este numr real 4 nu este numr ntreg ir de caractere $clasa[1] = limbaj
Caractere speciale
35
Variabile ncep cu $ urmate de o liter sau _. n limbajul PHP nu se precizeaz tipul de variabil. Atribuirea valorilor se face prin atribuire: atribuire prin valoare atribuire prin referin folosind simbolul &. Constante se definesc prin funcia define(). Odat definite, valorile lor nu se modific i pot fi utilizate oriunde. define($nume_constanta,valoare[,case sensitive])
Variabile dinamice
37
Variabila dinamic este denumit folosind o pereche de simboluri ale dolarului ($$) i este asociat cu o variabil obinuit care are un nume similar i include un singur simbol al dolarului.
Reguli: Dac irul ncepe cu o valoare numeric, valoarea irului este dat de valoarea numeric respectiv; n caz contrar, valoarea irului este zero. Dac un punct zecimal sau un exponent (e sau E), este asociat cu valoarea numeric, tipul variabilei rezultante este dublu; n caz contrar, tipul valorii rezultante este un ntreg.
(int), (integer) - conversie forat la ntreg (real), (double), (float) - conversie forat la dublu (string) - conversie forat la ir (array) - conversie forat la tablou (object) - conversie forat la obiect
$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
Operatori de concatenare
43
Operatori logici
44
$x=$y-$x=++$y
Funcii
46
rand() genereaz aleator o valoare rand($a,$b)genereaz aleator o valoare ntre a i b max($a,$b,...) valoarea maxim dintr-un ir sqrt($a) scoate radicalul din variabila a pow($baza,$exponent) ridic baza la putere constant(nume_constanta) ntroarce valoarea constantei settype($variabila,tip) convertete variabila la tipul de dat dorit gettype($variabila) afieaz tipul variabilei
47
Switcheste folosit atunci cnd trebuie ca valoarea unei variabile sau expresii s fie comparat cu diferite valori.
switch($variabila) {case valoare1: secvena instruciuni1 break; case valoare2: secvena instruciuni2 break; ................................................. case valoaren: secvena instruciunin break; }
switch($variabila) {case valoare1: secvena instruciuni1 break; case valoare2: secvena instruciuni2 break; ................................................. default: secvena instruciuni break; }
Structura repetitiv 1
51
While execut un set de instruciuni att timp ct expresia este evaluat la valoarea sa de TRUE.
while(expresie) { secv_instruciuni }
Structura repetitiv 2
52
Do...while verificarea valorii de adevr a condiiei se face dup execuia grupului de instruciuni.
Structura repetitiv 3
53
Foreste o structur de ciclare cu numr cunoscut de pai. for(expresie1;expresie2;expresia3) {secven de instruciuni} Expresie1 expresia de iniializare a variabilei de ciclare Expresie2 expresia de test Expresie3 expresia de incrementare
Structura repetitiv 4
54
Matrice
foreach($tablou as $valoare) foreach($valoare as $valoare1) {secven de instruciuni}
Alte instruciuni
55
Continue folosit n instruciunile de ciclare pentru a omite restul iteraiei curente i pentru a continua execuia instruciunii iterative. Break folosit pentru ntreruperea execuiei unei instruciuni repetitive. Instruciunile care se afl dup break nu vor mai fi executate.
56
Crearea unui tablou se poate face prin: atribuirea unei valori pentru o variabil din tablou; invocarea funciei array().
se poate face prin precizarea numelui tabloului i a cheii aferente valorii; $y = 3 * $x[1]; se parcurge secvenial tabloul cu ajutorul instruciunii for;
<?php $limbaje = array(0=>"C", 1=>"PHP", 2 =>"Pascal"); $limita = count($limbaje); for ($i = 0; $i < $limita; $i++) { echo "<BR>".$i."=>".$limbaje[$i]; } ?>
<?php $a = array(array(2, 5), array(1, 4), array(4,5)); $b = $a[1][1] + $a[2][0]; echo $b; ?>
pentru afiarea unui caracter din cadrul unui ir de caractere se va folosi urmtoarea form: $b=$var{pozitie}
64
apelarea funciei se face prin specificarea numelui funciei i a argumentelor $arie = calculeaza_arie(2,4); pentru a nu mai afia mesajele de avertizare se va folosi simbolul @.
<?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 referine
68
Limbajul PHP folosete dou tipuri de variabile: globale-sunt declarate n afara funciilor. Domeniul de existen a unei variabile globale nu include i corpul funciei. Pentru a putea fi folosit inclusiv n corpul acesteia se va folosi instruciunea GLOBAL. GLOBAL $var1, $var2, $var3; locale-sunt create n interiorul funciei i sunt distruse atunci cnd se termin execuia funciei. statice-valoarea unei variabile locale trebuie s se pstreze de la o apelare la alta a funciei. STATIC $var1, $var2, $var3;
<?php $pret= 13.5; $cantitate= 250; function cumpara() { return $pret * $cantitate;} echo "Suma pe care trebuie sa o platiti este ". cumpara(); ?>
<?php $pret= 13.5; $cantitate= 250; function cumpara() { GLOBAL $pret, $cantitate; return $pret * $cantitate;} echo "Suma pe care trebuie sa o platiti este ". cumpara(); ?>
<?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; ?>
<?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 referinelor 1
73
<?php $a = 'Disciplina'; $b = &$a; echo 'Valoarea variabilei $a este '.$a.'<br>'; echo 'Valoarea variabilei $b este '.$b.'<br>'; $b='Programare Web'; echo 'Variabila $b are valoarea Programare Web'; echo '<br>Valoarea variabilei $a va deveni '.$a; ?>
Utilizarea referinelor 2
74
Operatorul referin dac se folosete la definirea funcie, atunci se va folosi i la atribuirea valorii.
<?php function &refer ( ) {global $s; return $s;} $s = "Continut 1"; $z = &$s; $z='Continut 2'; $y=&refer(); echo $y;?>
Funcii
75
isset($variabila)-verific dac variabila a fost setat sau nu current($tablou)-returneaz valoarea curent a tabloului next($tablou)-valoarea urmtorului element al tabloului prev($tablou)-valoarea elementului anterior key($tablou)-ntoarce cheia valorii curente explode(delimitator,$sir)-transform un ir ntr-o matrice list($var1,$var2)-atribuie variabile cum acestea ar fi tablouri implode(delimitator,$tablou)-transform matricea ntr-un ir de caractere
ISSET
76
Fie tabloul:
10 f def
a 34 435
c abc 1ad
EXPLODE
78
Fie irul format din seria i numrul facturii(GL567). S se pstreze n variabila serie_factura seria facturii i n nr_factura numrul facturii.
79
<?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
Fie seria unei facturi identificat prin variabila serie_f i numrul facturii identificat prin variabila nr_f S se concateneze cele dou variabile ntr-una singur i separatorul dintre acestea s fie spaiul
81
<?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
Component web care preia datele introduse de utilizator i le transmite server-ului Introducerea unui formular n cadrul documentelor HTML se face prin tag-ul:
name numele formularului method metoda de transmisie a datelor action - specific browser-ului ce se va ntmpla cu datele introduse
Transmiterea datelor se face prin : Metoda POST-preia datele introduse n cadrul formularului i le transmite server-ului prin intermediul protocolului HTTP. Datele transmise nu pot fi vizualizate n cadrul adresei. Metoda GET-preia datele din cadrul elementelor formularului, le codific i apoi le adaug n cadrul adresei URL, astfel c se poate vedea numele cmpului i valoarea sa. Datele apar n cadrul adresei URL sub form de perechi de forma nume=valoare.
<form action="fisier_prelucrare.php" method="post" name="Primul_formular" > <table width="284" border="0" align="center"> <tr> <td width="122">Nume si prenume</td> <td width="152"><input name="date_personale" type="text" ></td> </tr> <tr> <td>Adresa</td> <td><textarea name="adresa" rows="2"> </textarea> </td> </tr> <tr> <td colspan="2"><div align="center"> <input type="submit" name="Submit" value="Prelucreaza datele"> </div></td> </tr> </table> </form>
<?php echo "Am inregistrat numele si prenumele dvs.: <strong>". $_POST[date_personale]. </strong> si va trimitem coletul la adresa <strong>".$_POST[adresa]."</strong>"; ?>
<body> <?php echo "Am inregistrat numele si prenumele dvs.: <strong>". $_GET[date_personale]. </strong> si va trimitem coletul la adresa <strong>".$_GET[adresa]."</strong>"; ?> Adresa URL prin metoda GET
controale de tip text (cmp de editare); control de tip textarea; butoane radio; casete de validare; controlul de tip list (select). cmpuri ascunse
TYPE specific tipul cmpului de editare SIZE precizeaz dimensiunea cmpului de editare MAXLENGTH specific numrul maxim de caractere care pot fi introduse n cmpul de editare VALUE reprezint valoarea iniial a cmpului de editare.
cols="43"
COLS stabilete numrul total de caractere care sunt introduse pe un rnd ROWS precizeaz numrul rndurilor care se pot include n cadrul cmpului de editare
Butoane radio
91
name="Nume_grup"
TYPE specific tipul de buton NAME precizeaz numele grupului din care face parte VALUE reprezint valoarea asociat butonului radio
Casete de selecie
92
<input name="o1" type="checkbox" value="checkbox"> NAME specific numele opiunii TYPE precizeaz tipul de buton VALUE reprezint valoarea asociat casetei de validare
NAME atribuie listei de selecie un nume MULTIPLE se pot alege mai multe opiuni, iar numele va trebui s aib numele urmat de [] SIZE precizeaz numrul de elemente vizibile din list VALUE atribuie o valoare de tip text care va fi transmis server-ului, sub form de perechi "name = value
<form action="fisier_prelucrare_radio.php" method="post" name="Formular" > <table width="375" border="0" align="center"> <tr> <td width="129">Nume si prenume</td> <td width="236"><input name="date_personale" type="text" id="date_personale"></td> </tr> <tr> <td>Tip persoana </td> <td><p> <label> <input type="radio" name="tip_persoana" value="Persoana Fizica"> Persoana fizica</label><br> <label> <input type="radio" name="tip_persoana" value="Persoana Juridica"> Persoana juridica</label><br> </p></td> </tr> <tr> <td colspan="2"><div align="center"> <input type="submit" name="Submit" value="Prelucreaza datele"> </div></td> </tr> </table> </form>
<?php echo "Numele si prenumele dvs. este: <strong>". $_POST[date_personale] ."</strong> si sunteti <strong>".$_POST[tip_persoana]."</strong>."; ?>
<?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
<form action="fisier_prelucrare_checkbox.php" method="post" name="Formular"> <table width="480" border="0" align="center"> <tr> <td width="249">Nume si prenume</td> <td width="221"><input name="date_personale" type="text id="date_personale"></td> </tr> <tr> <td>Selectati marcile de produs preferate </td> <td><p> <input name="Samsung" type="checkbox" value="Samsung"> Samsung </p> <p> <input name="Panasonic" type="checkbox" value="Panasonic"> Panasonic </p> </td> </tr> <tr> <td colspan="2"><div align="center"> <input type="submit" name="Submit" value="Selecteaza produsele"> </div></td> </tr> </table> </form>
98
<?php echo "Numele si prenumele dvs. este: <strong>". $_POST[date_personale]. "</strong> si ati ales urmatoarele marci de produse: "; if(isset($_POST[Samsung]) and isset($_POST[Panasonic])) echo "Samsung si Panasonic"; else if (isset($_POST[Samsung])) echo "Samsung"; else if (isset($_POST[Panasonic])) echo "Panasonic"; ?>
<?php mysql_connect('localhost','root',''); mysql_select_db('curs'); $selectie=mysql_query('select * from angajat'); while($rand=mysql_fetch_array($selectie)) {$id_angajat=$rand['id_angajat']; $nume_prenume=$rand[nume_angajat]. '.$rand[prenume_angajat]; $nume_casuta='c'.$id_angajat; echo'<p><input type="checkbox" name="'.$nume_casuta. value="'.$nume_casuta.'">'.$nume_prenume.'</p>'; } ?>
100
<?php mysql_connect('localhost','root',''); mysql_select_db('curs'); $selectie=mysql_query('select * from angajat'); echo 'Persoanele selectate de dvs. sunt:'; while($rand=mysql_fetch_array($selectie)) {$id_angajat=$rand['id_angajat']; $nume_casuta='c'.$id_angajat; if(isset($_POST[$nume_casuta])) {$selectie2=mysql_query('select * from angajat where id_angajat='.$id_angajat); while ($rand2=mysql_fetch_array($selectie2)) {$nume_prenume=$rand2[nume_angajat].' '.$rand2[prenume_angajat]; echo '<ul>'; echo '<li>'.$nume_prenume; echo '</ul>'; } } } ?>
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 funcia header() doar n cazul n care utilizatorul nu selecteaz nici o caset de validare din cele prezetate Rezultatul obinut n urma apelului acestei funcii este deschiderea unei noi pagini, Selectie.html, care poate include orice element
content=
secunde;
se folosete atunci cnd se dorete prelucrarea datelor din cadrul unui formular n aceeai pagin cu codul HTML static se va crea un formular care va avea ca i aciune variabila $_SERVER['PHP_SELF']
105
O baz de date relaional stocheaz datele n tabele Are capacitatea de a stabili relaii ntre date din mai multe tabele Bazele de date relaionale au la baz limbajul de interogare SQL SQL-limbaj care poate obine accesul la date stocate n mai multe tabele, poate filtra datele dorite i poate sorta, rezuma i afia rezultatele
utf8_general_ci-compar irul de caractere folosind un limbaj general i nu este case-sensitive utf8_general_cs-compar irul de caractere folosind un limbaj general i este case-sensitive CREATE DATABASE BD_IE;
CREATE TABLE BD_IE.student (nr_matricol INT NOT NULL AUTO_INCREMENT PRIMARY KEY , nume_student CHAR( 20 ) NOT NULL , prenume_student CHAR( 20 ) NOT NULL , CNP VARCHAR( 13 ) NOT NULL )
Selectarea datelor din baza de date SELECT Inserarea datelor n baza de date INSERT teregerea datelor din baza de date DELETE Modificarea datelor n baza de date - UPDATE
SELECTAREA datelor
110
Componenta SQL-ului care permite formarea interogrilor este DML (Data ManipulationLanguage) DML permite accesul la datele bazei de date,dar i inserarea de noi date, actualizarea sau tergerea celor existente Selectarea datelor se face prin comanda SELECT
Cea mai simpl interogare este selectarea tuturor datelor dintr-un tabel SELECT * FROM tabel * - precizeaz toate cmpurile din tabel selectarea doar a anumitor cmpuri se face prin precizarea acestora
SELECT camp1, camp2 FROM tabel formatul datelor de ieire plaseaz fiecare rnd al tabelului pe o linie separat i prezint coloanele ntr-o ordine arbitrar
clauza va fi stabilit la sfritul instruciunii SELECT. dup sortarea dup mai multe cmpuri, acestea vor fi aranjate n funcie de ordinea care a fost precizat. ordinea de aranjare a rezultatelor se va face n funcie de cuvntul cheie DESC sau ASC
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
Clauza WHERE, care specific criteriile de cutare, se plaseaz imediat dup clauza FROM. Operator poate fi unul dintre operatorii de verificare: egal, diferit, mai mare, mai mic sau egal, ntre (BETWEEN ...AND...), LIKE, IS NULL, IN, NOT LIKE, NOT IN
SELECT den_produs, pret_produs FROM produs WHERE pret_produs=3.87 SELECT den_produs, pret_produs FROM produs WHERE pret_produs!>3.87 SELECT den_produs, pret_produs FROM produs WHERE pret_produs=3.87 SELECT cod_produs FROM produs WHERE den_produs IS NULL SELECT den_produs, pret_produs FROM produs
dac se dorete filtrarea dup mai multe cmpuri se vor folosi n clauza WHERE cei doi operatori AND sau OR
SELECT nume_cmpuri FROM tabel WHERE camp op val AND/OR camp1 op val1
op-reprezint operatorul de selecie Primul operator care se prelucreaz este operatorul AND apoi OR
SELECT den_produs, pret_produs FROM produs WHERE cod_produs=P27 AND pret_produs=5 SELECT den_produs, pret_produs FROM produs WHERE cod_produs=P27 OR pret_produs=5 SELECT cod_produs, den_produs, pret_produs FROM produs WHERE den_produs=produs1 OR den_produs=produs2 AND pret_produs>=5 SELECT cod_produs, den_produs, pret_produs FROM produs WHERE (den_produs=produs1 OR den_produs=produs2) AND pret_produs>=5
Comanda SELECT-operatorul IN
118
este folosit pentru a specifica un domeniu de condiii. Operatorul preia o list cu elemente delimitate prin virgul i sunt incluse ntre paranteze. poate include i o alt alt clauz SELECT are acelai rol ca i operatorul OR
SELECT cod_produs, den_produs, pret_produs FROM produs WHERE den_produs IN (produs1,produs2) SELECT cod_produs, den_produs, pret_produs FROM produs WHERE den_produs=produs1 OR den_produs=produs2 SELECT nr_matricol,nume, prenume FROM student WHERE cod_specializare IN (SELECT cod_specializare FROM specializare WHERE cod_specializare=1 )
SELECT nume_cmpuri FROM tabel WHERE nume_camp LIKE %sircaractere% SELECT nume_cmpuri FROM tabel WHERE nume_camp LIKE _ircaractere_ SELECT nume, prenume FROM student WHERE nume LIKE [PT]%
Presupunem c avem baza de date produs cu urmtoarele cmpuri: cod_produs, denumire, pret, cantitate, categorie_produs. Se dorete afiarea pentru fiecare dintre categorii de produs cantitatea cea mai mare de produs din stoc. SELECT categorie_produs, MAX(cantitate) FROM produse GROUP BY categorie_produs
SELECT cod_prod,nume_prod,pret_prod, cantitate*pret_prod AS valoare FROM produse_comandate WHERE serie_f=GL AND nr_f=123
clauza ORDER BY se plaseaz ultima n cadrul sintaxei comenzii SELECT clauza WHERE se plaseaz imediat dup precizarea tabelului n care se face selecia (FROM)
127
Valorile trebuiesc introduse n ordinea n care sunt definite coloanele, n caz contrar valoarea ntoars este NULL. INSERT INTO nume_tabel VALUES (valori_de_introdus)
Pentru a elimina situaia n care nu se tie cu exactitate ordinea n care s se introduc datele, se va folosi urmtoarea sintax:
INSERT INTO nume_tabel (campuri) VALUES (valori_de_introdus)
n cazul n care un cmp nu este completat cu o valoare, n mod automat i se va insera valoarea NULL. Dac cmpul omis nu accept valoarea NULL atunci SGBD-ul va genera un mesaj de eroare i rndul nu va fi inserat.
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
Clauza WHERE, care specific criteriile de cutare, se plaseaz imediat dup clauza FROM. Operator poate fi unul dintre operatorii de verificare: egal, diferit, mai mare, mai mic sau egal, ntre (BETWEEN ...AND...), LIKE, IS NULL, IN, NOT LIKE, NOT IN
Este folosit pentru a introduce ntr-un tabel rezultatul unei instruciuni SELECT
INSERT INTO nume_tabel (campuri) SELECT campuri_tabel_importat FROM nume_tabel1 nume_tabel reprezint numele tabelului n care se vor introduce datele campuri reprezint numele campurilor n care se introduc datele campuri_tabel_importat reprezint structura tabelului din care se import datele nume_tabel reprezint numele tabelului din care se import datele.
INSERT INTO Clienti (cod_client,nume_client,tip) SELECT cod_client, nume_client, tip_client FROM ClientiNoi WHERE cod_client IN (C1,CL1,CL3)
Nu folosete instruciunea INSERT. Pentru a copia coninutul unui tabel n cadrul unui alt tabel nou se va folosi instruciunea CREATE TABLE.
CREATE TABLE tabel_nou AS SELECT nume_cmpuri FROM tabel
137
ACTUALIZAREA datelor n BD
138
UPDATE nume_tabel SET coloana1=valoare1, coloana2=valoare2,... WHERE coloana= valoare Dac lipsete clauza WHERE se vor actualiza toate
Dac lipsete clauza WHERE se vor actualiza toate rndurile din tabel
140
UNIUNEA tabelelor-echi-uniune
141
Uniunea reprezint un mecanism folosit pentru asocierea tabelelor din cadrul unei instruciuni SELECT. n urma unei uniuni se va returna un singur set de date de ieire i asociaz instantaneu rndurile corecte din fiecare tabel.
UNIUNEA tabelelor
142
SELECT nume_cmpuri_dorite_din tabele FROM tabel1 INNER JOIN tabel2 ON tabel1.camp1=tabel2.camp1 SELECT den_produs,pret_produs,den_producator FROM produs INNER JOIN producator ON produs.id_producator=producator.id_producator
SELECT nume_cmpuri_dorite_din tabele FROM tabel1, tabel2,tabel3 WHERE tabel1.camp1=tabel2.camp1 AND tabel3.camp2=tabel.camp2 SELECT den_produs,pret_produs,cantitate,den_producator FROM produs, producator,comanda_produs WHERE producator.id_producator=produs.id_producator AND comanda_produs.id_produs=produs.id_produs AND nr_comanda=G123
145
Pentru a putea realiza cererile MySQL este necesar s stabilim o legatur cu serverul MySQL. Pentru a stabili aceast legatur trebuie specificai 4 parametri strict necesari:
Numele hostului unde este stocat baza de date MySQL. Numele utilizatorului Parola Numele Bazei de Date necesare.
mysql_connect(server,user,parola) mysql_select_db(bd)
Pentru interactiunea PHP-MySQL sunt utilizate mai multe funcii: mysql_connect-deschide conexiunea cu server-ul mysql_close-nchide conexiunea cu MySQL mysql_fetch_array-extrage un rnd ca o matrice mysql_insert_id-preia ID din ultima interogare mysql_num_rows-numr rndurile mysql_num_fields-numr cmpurile mysql_query-trimite o interogare MySQL mysql_result-preia rezultatul mysql_select_db-selecteaz baza de date mysql_error-ntoarce un mesaj de eroare n urma operaiei MySQL
mysql_connect i mysql_close
148
mysql_connect(nume_server,nume_utilizator,parola) mysql_close($conexiune) <?php $legatura=mysql_connect('localhost', root', ''); if (!$legatura) { die('Eec 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
checkdate(int $month,int $day,int $year )-valideaz data date(string $format)-ntoarce data curent conform unui format getdate()-ntoarce un tablou asociativ coninnd informaia despre dat i or gettimeofday()-ntoarce un tablou ce conine datele ntoarse n rezultatul apelului funciei de sistem
Checkdate
152
<?php var_dump(checkdate(2, 29, 2001)); ?> Funcia var_dump va afia informaii despre variabil. ntoarce o valoare boolean.
Date
153
Format a A d F h H i j l m s w y Y z
Efect am sau pm AM sau PM Ziua lunii de forma 01 pn la 31 Luna, sub form de caractere (March) Ora format pe 12 ore (01-12) Ora format pe 24 ore (00-23) Minute, de la 00 la 59 Ziua din lun, adic de la 1 la 31 Ziua sptmnii Luna, adic de la 1 la 12 secunde ziua sptmnii format ntreg, unde 0 reprezint Duminic pn la 6 reprezint Smbt anul cu 4 cifre anul cu 2 cifre ziua din an, adic de la 0 la 365
Date
154
Getdate
155
timestamp seconds minutes hours mday wday mon year yday weekday month
Valoare secunde minute ore ziua din lun sub form de numr Ziua din sptmn sub form de numr Luna sub form de numr anul Ziua din an, sub form de numr Ziua, (Friday) Luna, (May)
Getdate
156
Gettimeofday
157
Cheie Valoare sec secunde usec microsecunde minuteswest Minute vest fa de Greenwich
explode (string $delimiter, string $string [, int $limit]) ltrim/ rtrim/ trim(string $str[,string $charlist]) md5 (string $str) str_ireplace ($search,$replace,$subject) str_repeat(string $input,int $multiplier ) str_replace($search, $replace, $subject[, $count]) strcasecmp(string $str1 , string $str2 ) strcmp(string $str1 , string $str2 ) stripos(string $haystack, string $needle) strlen ( string $string ) substr ( string $string , int $start [, int $length ] ) str_replace($search, $replace, $subject)
Explode
159
<?php $sir="subsir1 subsir2 subsir3"; $subsir=explode(" ",$sir); echo $subsir[0]; echo $subsir[1]; $sir1='sir1|sir2|sir3'; print_r(explode('|',$sir1,2)); print_r(explode('|',$sir1,-1));?>
ltrim/ rtrim/ trim(string $str) -elimin spaiile din stnga, dreapta sau din ambele capete ale irului
<?php $variabila= valoare variabila ; echo trim($variabila); ?>
Md5
161
md5 (string $str)-codific irul de caractere. ntoarce un ir de 32 de caractere hexazecimale. nu va mai putea fi decodificat <?php $variabila='programare1'; if(md5($variabila)=='be394f7907863ddf6edfacecdf476aa8') echo 'S-a scris Programare'; else exit('Nu este ceea ce trebuie'); ?> Funcia exit($mesaj)-afieaz mesajul i ntrerupe execuia script-ului curent
Str_ireplace
162
str_ireplace ($search,$replace,$subject) nlocuiete un ir de caractere cu un alt ir de caractere, fr 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
Str_replace
164
str_replace($search, $replace, $subject[, $count]) nlocuiete toate apariiile irului de caractere cutat cu irul de nlocuire, fiind case-sensitive
$search ce anume va nlocui $replace irul cu care se va nlocui $subject irul unde se va nlocui $count va returna numrul rezultatelor gsite
Dac $subject este tablou, atunci irul se va nlocui n toate elementele tabloului.
Str_replace
165
<?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
strcasecmp(string $str1 , string $str2 )-compar dou iruri fr a face distincie ntre litere mari i mici i va ntoarce >0 dac primul ir este mai mare dect al doilea ir, <0 dac primul este mai mic dect al doilea i 0 dac sunt egale
<?php $var1="sir"; $var2="SIR"; if(strcasecmp($var1,$var2)==0) {echo 'Sirurile sunt la fel';} ?>
Strcmp
167
strcmp(string $str1 , string $str2 )-compara doua siruri de caractere fcnd diferen ntre litere mari i litere mici
<?php $var1="sir"; $var2="SIR"; if(strcasecmp($var1,$var2)==0) {echo 'Sirurile sunt la fel';} else echo 'Sirurile nu sunt la fel'; ?>
Stripos
168
stripos($sir, $cautare)-gsete poziia primei apariii a unui ir de caractere ntr-un alt ir, fr s fac diferen ntre literele mici si cele mari
$sir irul n care se face cutarea $cautare irul care este cutat
<?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
Strlen
170
abs ( mixed $number )-valoarea absolut a unui nr. ceil ( float $value )-rotunjete la cel mai mare nr. ntreg exp ( float $arg )-calculeaz exponeniala floor ( float $value )-rotunjete la cel mai mic nr. ntreg max/min(array $values ) mixed max/min(mixed $val1,mixed $val2 [,mixed $val3...]) pow(number $baza,number $exponent) rand ( int $min , int $max ) round(float $val[,int $precision=0]) sqrt ( float $arg )
Exemple 1
172
<?php $abs=abs(-4.2); ?> <?php $a=ceil(7.9); $b=ceil(-7.5); echo $a; echo $b;?> <?php echo round(3.4); echo round(3.5); echo round(1.95583,2); ?>
<?php echo exp(5.7); ?> <?php echo floor(4.3); echo floor(9.999); echo floor(-3.14); ?>
Exemplu max/min
173
Dac argumentul este tablou va afia valoarea cea mai mare din tablou PHP evalueaz irurile de caracter ca fiind 0 dac este comparat cu un numr ntreg, dar va returna irul. Dac se compar tablouri, atunci evaluarea se va face de la stnga la dreapta.
Exemplu max/min
174
<?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
Definire
176
Sesiunea permite stocarea de informaii n cadrul unei variabile pentru a fi utilizat n cadrul mai multor pagini. sesiunile nu pstreaz valorile stocate pe calculatorul utilizatorului pstreaz informaiile pn la nchiderea browser-ului, sau pn cnd utilizatorul distruge n mod explicit sesiunea curent
pentru a putea lucra cu sesiuni trebuie s se deschid sesiunea folosind funcia session_start() session_start() se introduce n antetul paginii web la crearea unei sesiuni se creeaz un identificator de sesiune (SID) setarea variabilelor sesiune se face prin variabila superglobal $_SESSION[nume_variabila] la fiecare pagin care folosete variabila sesiune va trebui deschis sesiunea nu se transmite variabila de la o pagin la alta, ci informaiile coninute n aceasta
session_id()-afl identificatorul sesiunii dac se dorete atribuirea unei anumite valori pentru sesiune, aceasta va fi declarat nainte de a deschide sesiunea
<?php session_id('1a2bda3bad'); session_start(); echo Identificatorul sesiunii curente SID=". session_id(); ?>
session_destroy()- distruge sesiunea i va terge i toate variabilele sesiune unset(nume_variabila_sesiune)-terge variabila de sesiune specificat session_unset()-terge toate variabilele de sesiune, dar nu i sesiunea n sine
180
Includerea fiierelor
181
Se face cu ajutorul funciilor: include() sau require(); include_once() sau require_once (); Util n includerea fiierelor este directiva include_path: include_path .:/director1/director2/htdocs/director3/director4/
<?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>; } ?>
ntreruperea execuiei codului din cadrul fiierului inclus se face cu ajutorul instruciunii return. Tot codul aflat dup aceast instruciune nu mai este executat.
<?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 fiierelor
185
verificarea existenei fiierelor file_exists(nume_fisier.extensie). verificarea tipului de entitate is_file(nume_fisier) is_dir(/director) verificarea strii unui fiier is_readable(nume_fisier) is_writable(nume_fisier) is_executable(nume_fisier) dimensiunea unui fisier filesize(nume_fisier)
Manipularea fiierelor
186
crearea fiierelor - touch(nume_fisier) tergerea unui fiier - unlink(nume_fisier) nchiderea fiierului - fclose().
Manipularea fiierelor
187
a+ - fiierul este deschis pentru scriere i citire, iar pointerul este plasat la sfrit. Dac fiierul nu exist, atunci acesta va fi creat.
Citirea din fiier se poate face: linie cu linie cu ajutorul funciei fgets($variabila_fisier_deschis, lungime ) octet cu octet folosind funcia fread ($variabila_fisier_deschis, numar_octeti) caracter cu caracter prin intermediul funciei fgetc ($variabila_fisier_deschis)
<?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); ?>
Funcia fread () permite citirea coninutului unui fiier, dar nu permite i stabilirea locaiei de unde s porneasc aceasta funcia fseek() permite stabilirea poziiei curente n cadrul unui fiier
<?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); ?>
Scrierea n cadrul unui fiier se face cu ajutorul funciei fwrite() sau fputs().
fwrite ($variabila_fisier_deschis, sir_caractere)
<?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);?>
<?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
Crearea unui director - mkdir() mkdir (nume_dosar, int permisiune) tergerea unui director - rmdir(nume_director). Deschiderea unui director - opendir(nume_diector). nchiderea directorului - closedir($dosar_deschis) Citirea coninutul directorului - readdir(). Modificarea directorului de lucru - chdir(dir_modif). Determinarea locaiei unui director - getcwd().