curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/tmpaw_2017_7.pdfse creaza pagina de selectie a...
TRANSCRIPT
![Page 1: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/1.jpg)
Curs 7
2016/2017
1
![Page 2: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/2.jpg)
I. HTML si XHTML (recapitulare) 1 oră
II CSS 2 ore
III Baze de date, punct de vedere practic 1 oră
IV Limbajul de interogare SQL 4 ore
V PHP - HyperText Preprocessor 8 ore
VI XML - Extended Mark-up Language si aplicatii 4 ore
VII Conlucrare intre PHP/MySql, PHP/XML, Javascript/HTML 2 ore
VIII Exemple de aplicatii 6 ore
Total 28 ore
2
![Page 3: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/3.jpg)
Laborator asincron!
recomandat – 4 = OptimL3 L4 L5 L6
L3 L4 L5 L6
L3 L4 L5 L6
L3 L4 L5 L6
L3 L4 L5 L6
1. I
2. P
3. R
4. O
5. T 3
![Page 4: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/4.jpg)
4
![Page 5: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/5.jpg)
5
![Page 6: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/6.jpg)
Pe masura ce aplicatia paraseste un fir liniarde executie este necesara introducerea unuiplan (graf) al aplicatiei
Cumparator
citirea datelor de pe disc se realizeaza in antet.php, comun pentru toate fisierele
lista_categ.phpCATEGORII PRODUSE
formular.phpPRODUSE, PRET,
COMANDA
rezultat.phpPRELUCRARE
COMANDA
6
![Page 7: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/7.jpg)
Planul aplicatiei trebuie sa cuprinda siinformatii relative la:
ce date se transmit intre diferitele pagini
cum se transmit datele intre pagini
7
lista_categ.phpCATEGORII PRODUSE
formular.phpPRODUSE, PRET,
COMANDA
rezultat.phpPRELUCRARE
COMANDA
$cat – $_GET $cant[produs] – $_POST
![Page 8: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/8.jpg)
Planul aplicatiei – Exemplu lista de categorii va contine “link-uri active” deci
transmiterea unei singure variabile se face cu $_GET formularul de comanda transmite date multiple incluse intr-o
forma deci transmiterea se face cu $_POST Alegerea $_GET/$_POST are implicatii: atat in pagina care transmite datele cat si in pagina care le receptioneaza
8
lista_categ.phpCATEGORII PRODUSE
formular.phpPRODUSE, PRET,
COMANDA
rezultat.phpPRELUCRARE
COMANDA
$cat – $_GET $cant[produs] – $_POST
![Page 9: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/9.jpg)
folosite pentru a transmite o informatie in lista_categ.php
<a href="lista_prod.php?categ=<?php echo $cat;?>"> <?php echo $cat;?> </a>
are efect in formular.php
$_GET['categ']="valoarea $cat corespunzatoare"
9
lista_categ.phpCATEGORII PRODUSE
formular.phpPRODUSE, PRET,
COMANDA
rezultat.phpPRELUCRARE
COMANDA
$cat – $_GET
![Page 10: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/10.jpg)
Sa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse
sa prezinte utilizatorului o lista de categorii de produse pentru a alege
sa prezinte utilizatorului o lista de produse si preturi in categoria aleasa
lista de produse si preturi se citeste dintr-un fisier
se preia comanda si se calculeaza suma totala Optional se creaza o pagina prin care vanzatorul poate
modifica preturile si produsele10
![Page 11: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/11.jpg)
1. Se introduce in surse facilitatea template 2. Se modifica sursele pentru lucru cu matrici 3. Se modifica sursele pentru a citi datele de pe disc
(C5 – fisier text) anterior se creaza fisierul text sau: o singura data se salveaza datele (C5 – S72)
4. Se introduce structura suplimentara, categorie se creaza pagina de selectie a categoriei, din care se va
merge in lista de produse (utilizare $_GET – S103) 5. Lista de produse si preturi se citeste dintr-un fisier
XML 6. Optional: Se creaza o pagina care sa permita
modificarea fisierului text/XML numai pret/descriere, fara adaugare/schimbare produse 11
![Page 12: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/12.jpg)
produse
carte
descrmai multe
pagini scrise
pret 100
cant 0
caiet
descrmai multe
pagini goale
pret 50
cant 0
... ...
12
![Page 13: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/13.jpg)
exemplu de grupare apare un nivel
suplimentar de noduri in arbore
deci apare un indicesuplimentar in matrice
produse
papetarie
carti
caiete
hartie de scris
instrumente
creioane
stilouri
marker
audio video
CD
DVD
Blue Ray 13
$produse = array ( 'carte' => array ("descr" => … ), … );
$produse = array ( 'papetarie' => array ( 'carte' => array ("descr" => …), … ) … );
$produse['carte'] ['descr' ] $produse ['papetarie '] ['carte'] ['descr' ]
![Page 14: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/14.jpg)
produse
carte
descrmai multe
pagini scrise
pret 100
cant 0
caiet
descrmai multe
pagini goale
pret 50
cant 0
... ...
adaugare nivel in “arbore”
produse
papetarie
carti …
caiete
hartie de scris
instrumente
creioane
stilouri
descr
pret
cant
…
marker
audio video
CD
DVD
Blue Ray …
14
![Page 15: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/15.jpg)
modificarea fisierului text cu introducereacategoriei ca prim parametru in fisier
carte mai multe pagini scrise legate 100 0caiet mai multe pagini goale legate 75 0penar loc de depozitat instrumente de scris 150 0stilou instrument de scris albastru 125 0
papetarie carte mai multe pagini scrise legate 100 0papetarie caiet mai multe pagini goale legate 75 0instrumente penar loc de depozitat instrumente de scris 150 0instrumente stilou instrument de scris albastru 125 0
15
![Page 16: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/16.jpg)
Codul ramane in mare parte acelasi Cateva modificari sunt necesare
$matr=file("produse.txt");foreach ($matr as $linie)
{$valori=explode("\t",$linie,4);$produse[$valori[0]]=array ("descr" => $valori[1], "pret" => $valori[2], "cant" => $valori[3]);}
$matr=file("produse.txt");foreach ($matr as $linie)
{$valori=explode("\t",$linie,5);$produse[$valori[0]] [$valori[1]]=array ("descr" => $valori[2], "pret" => $valori[3], "cant" =>
$valori[4]);} 16
![Page 17: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/17.jpg)
Utilizare, cu doua bucle foreach$index=1;foreach ($produse as $prod => $detalii) //primul indice in $produse imi da produsul
{?><tr><td><?php echo $index;?></td><td><?php echo ucfirst(strtolower($prod));?></td><td><?php echo $detalii['descr'];?></td><td align="center"><?php echo $detalii['pret'];?></td></tr><?php $index++;
}
$index=1;foreach ($produse as $categ => $lista_categ) //primul indice in $produse imi da categoria
foreach ($lista_categ as $prod => $detalii) //al doilea indice in $produse imi da produsul//din categoria stabilita cu primul indice
{?><tr><td><?php echo $index;?></td><td><?php echo $categ;?></td><td><?php echo ucfirst(strtolower($prod));?></td><td><?php echo $detalii['descr'];?></td><td align="center"><?phpecho $detalii['pret'];?></td></tr><?php $index++;
} 17
![Page 18: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/18.jpg)
structura tip “arbore”
produse
papetarie
carti
caiete
hartie de scris
instrumente
creioane
stilouri
x
y
z
…
marker
audio video
CD
DVD
Blue Ray
1
2
3 etc.
18
![Page 19: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/19.jpg)
19
![Page 20: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/20.jpg)
Citire, cu doua bucle foreach$matr=file("produse.txt");foreach ($matr as $linie)
{$valori=explode("\t",$linie,5);$produse[$valori[0]] [$valori[1]]=array ("descr" => $valori[2], "pret" => $valori[3], …);}
20
$xml = simplexml_load_file("lista.xml");if ($xml)
{foreach ($xml->categorie as $categorie)
{$produse[(string)$categorie["nume"]]=array();foreach ($categorie->produs as $prod_cur)
{$produse[(string)$categorie["nume"]][(string)$prod_cur->nume] = …}
}}
![Page 21: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/21.jpg)
21
![Page 22: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/22.jpg)
Sa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse
sa prezinte utilizatorului o lista de grupe de produsepentru a alege
sa prezinte utilizatorului o lista de produse si preturi in grupa aleasa
lista de produse si preturi se citeste dintr-o baza de date MySQL
se preia comanda si se calculeaza suma totala
se creaza o pagina prin care vanzatorul poatemodifica preturile si produsele
22
![Page 23: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/23.jpg)
sectiunilerepetabile pot fimutate intr-un fisier separat siintroduse cu require()
se identificazonele comune
<html><head><title>Magazin online Firma X SRL</title></head><body bgcolor="#CCFFFF"><table width="600" border="0" align="center"><tr><td><img src="images/antet.gif" width="600" height="100" /></td></tr><tr><td height="600" valign="top" bgcolor="#FFFFCC">Continut</td></tr></table></body></html>
23
![Page 24: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/24.jpg)
<html><head><title>Magazin online Firma X SRL</title></head><body bgcolor="#CCFFFF"><?phpdefine('PRET_CARTE',100);
//orice cod comun PHP
?><table width="600" border="0" align="center"><tr><td><img src="images/antet.gif" width="600" height="100" /></td></tr><tr><td height="600" valign="top" bgcolor="#FFFFCC"><h1>Magazin online Firma X SRL</h1>
</td></tr></table></body></html>
<?php require('antet.php');?><h2>Lista Produse</h2><table border="1">…</table><?php require('subsol.php');?>
antet.php subsol.php
24
![Page 25: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/25.jpg)
antet.php citirea datelor si realizarea matricii $produse se
realizeaza aici
acest lucru permite sa se realizeze usor trecerea la altetehnologii txt XML MySql▪ restul fisierelor pot ramane (in mare parte) nemodificate
deoarece se bazeaza pe utilizarea matricii $produse, indiferent cum e ea realizata
subsol.php se poate utiliza la realizarea interfetei pentru vanzator
se salveaza matricea $produse in formatul necesartehnologiei utilizate
25
![Page 26: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/26.jpg)
Pe masura ce aplicatia paraseste un fir liniarde executie este necesara introducerea unuiplan (graf) al aplicatiei
Cumparator citirea fisierului XML (accesarea bazei de date) se
realizeaza in antet.php, comun pentru toatefisierele
lista_categ.phpCATEGORII PRODUSE
formular.phpPRODUSE, PRET,
COMANDA
rezultat.phpPRELUCRARE
COMANDA
26
![Page 27: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/27.jpg)
Aparitia aplicatiei pentru vanzator introduce un fir paralel de executie cu necesitatea
alegerii initiale: cumparator/vanzator
aduce posibilitatea scrierii fisierului XML
diverse operatii de scriere▪ introducere categorie de produse
▪ introducere produs nou intr-o categorie existenta
▪ modificare produs existent
modificarea fisierului implica 2 actiuni:▪ colectare date
▪ prelucrare
27
![Page 28: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/28.jpg)
De multe ori se prefera aceasta varianta Permite pastrarea unitara a tuturor
operatiilor pentru indeplinirea unei actiuni
acces mai simplu
usurinta la programare
evitarea erorilor: File does not exist: D:/Server/…
Acelasi fisier e folosit initial pentru a colectadate si apoi, daca se detecteaza prezentaacestora, pentru prelucrarea lor
28
![Page 29: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/29.jpg)
Fisierul de receptie pentru <form> va fi fisierul curent se recomanda utilizarea variabilei globale
$_SERVER['SCRIPT_NAME'] flexibilitate la redenumirea fisierelor
alternativ $_SERVER['PHP_SELF'] nu esterecomandata probleme de securitate
Sectiunea de colectare date se afiseaza numai in absenta datelor
<form action="<?php echo $_SERVER['SCRIPT_NAME '];?>" method="post"><p><input name=“date_ok" type="submit" value="Trimite" /></p></form>
29
![Page 30: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/30.jpg)
Detectia existentei datelor se face prin verificareaexistentei ( isset($variabila) ) valorilor introduse
eventual pentru un plus de protectie se poate verifica sicontinutul lor
if (isset($_POST[" date_ok "])){ //date trimiseif ($_POST[" date_ok "]=="Trimite" )
{ //date trimise de fisierul curent//prelucrare}
}else
{//colectare date
<form action="<?php echo $_SERVER['SCRIPT_NAME '];?>" method="post"><p><input name=“date_ok" type="submit" value="Trimite" /></p></form>
} 30
![Page 31: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/31.jpg)
SelectieC/V
index.php
Alegerecategorie
lista_categ.php
Introduceredate
formular.php
Prelucrarecomanda
rezultat.php
Alegere / introducere
categorie
admin_categ.php
Alegereprodus
admin_lista.php
Modificare / Introducere
produs
admin_formular.php
postget
C
V
lista.xml / MySqlantet.phpsubsol.php 31
![Page 32: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/32.jpg)
32
postget
![Page 33: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/33.jpg)
postget 33
![Page 34: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/34.jpg)
Sa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse
sa prezinte utilizatorului o lista de grupe de produsepentru a alege
sa prezinte utilizatorului o lista de produse si preturi in grupa aleasa
lista de produse si preturi se citeste dintr-o baza de date MySQL
se preia comanda si se calculeaza suma totala
se creaza paginile prin care vanzatorul poatemodifica preturile, produsele, categoriile
34
![Page 35: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/35.jpg)
MySql
35
![Page 36: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/36.jpg)
XML - eXtensible Markup Language XML isi atinge limitarile atunci cand: cantitatea de date este mare
prelucrarile datelor sunt complexe In general XML citeste in intregime fisierul care
contine datele memoria necesara script-urilor PHP poate creste pana
in punctul atingerii ineficientei Prelucrarile trebuie facute in PHP PHP este limbaj interpretat deci ineficient pentru
prelucrari masive de date36
![Page 37: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/37.jpg)
Baza de date – instrument pentru stocarea simanipularea informatiei eficient si efectiv datele sunt protejate de corupere sau pierderi
accidentale
nu se utilizeaza mai multe resurse decat minimulnecesar
datele pot fi accesate cu performanta acceptabila Baze de date relationale model relational (matematic eficient) – Codd
~1970
37
![Page 38: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/38.jpg)
DBMS – database management system aplicatii incluse in baza de date pentruaccesul la informatii
RDBMS – Relational DBMS. Majoritateasistemelor de baze de date tind la aceastatitulatura
~300 de reguli trebuie respectate
nici un sistem actual nu implementeaza total aceste reguli
38
![Page 39: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/39.jpg)
Toate sistemele de baze de date suntcaracterizate de: toate informatiile sunt reprezentate intr-o aranjare
ordonata bidimensionala numita relatie toate valorile (atribute) stocate sunt scalare (in orice
celula din tabel se stocheaza o singura valoare) toate operatiile se aplica asupra unei intregi relatii si
rezulta o intreaga relatie Terminologii (MySql) tabel – table / recordset / result set linie – record / row coloana – field / column
39
![Page 40: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/40.jpg)
toate informatiile sunt reprezentate intr-o aranjare bidimensionala numita relatie
aranjarile bidimensionale nu sunt ordonate implicit
datele trebuie stocate pentru a implementa o relatiein asa fel incat fiecare linie sa fie unica
cheie candidata
exista cel putin o combinatie de atribute (coloane) care pot identifica in mod unic o linie
aceste combinatii de atribute se numesc cheicandidate
40
![Page 41: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/41.jpg)
Din toate combinatiile de coloane care pot fi utilizatepentru identificarea unica a unei linii se alege macar unautilizata intern de RDBMS pentru ordonarea datelor –cheie primara Celelelte chei candidate devin chei alternative si pot fi folosite
pentru eficientizarea prelucrarilor (crearea de “index” dupaaceste chei)
In cazul in care nu exista o combinatie de coloaneutilizabila ca si cheie cu utilitate practica se introduce artificial o cheie, cu numere intregi incrementate automat de DBMS (autoincrement) de multe ori este recomandata o astfel de actiune, numerele
intregi fiind mult mai usor de controlat, ordonat, cautat decatalte tipuri de date
cheile de tip autoincrement nu e nevoie sa contina informatie41
![Page 42: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/42.jpg)
Normalizarea asigura:
stocarea eficienta a datelor
prelucrarea eficienta a datelor
integritatea datelor
Trei nivele de normalizare Eliminarea datelor redundante
42
![Page 43: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/43.jpg)
43
![Page 44: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/44.jpg)
44
![Page 45: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/45.jpg)
toate valorile sunt scalare
nu toate rezolvarile sunt eficiente
45
![Page 46: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/46.jpg)
O relatie este in a doua forma normala candeste in prima forma normala si suplimentaratributele (valorile de pe coloana) depind de intreaga cheie candidata aleasa
46
![Page 47: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/47.jpg)
47
![Page 48: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/48.jpg)
O relatie este in a treia forma normala candeste in a doua forma normala si suplimentaratributele (valorile de pe coloana) care nu facparte din cheie sunt mutual independente
48
![Page 49: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/49.jpg)
49
![Page 50: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/50.jpg)
Se tine cont si de eliminarea datelor redundante. Anumite redundante pot fi eliminate prinintroducerea de relatii suplimentare
Forma normala Boyce/Codd cere sa nu existedependenta functionala intre cheile candidate
50
![Page 51: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/51.jpg)
51
![Page 52: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/52.jpg)
MySql – Recapitulare rapida
52
![Page 53: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/53.jpg)
Respectarea formelor normale ale bazelor de date aduce nenumarate avantaje
Efectul secundar este dat de necesitateasepararii datelor intre mai multe tabele
In exemplul utilizat avem doua conceptediferite din punct de vedere logic
produs
categorie de produs
53
![Page 54: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/54.jpg)
Normalizarea bazei de date impune crearea a cel putin doua tabele
produse
categorii
Cele doua tabele nu sunt independente Intre ele exista o legatura data de
functionalitatea dorita pentru aplicatie: un produs va apartine unei anumite categoriide produse
54
![Page 55: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/55.jpg)
Legaturile intre tabele pot fi
One to One
One to Many
Many to Many
▪ Unare (auto referinta)
55
![Page 56: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/56.jpg)
Fiecare tabel poate avea corespondenta o singura linie (row) sau nici una de cealalta parte a relatiei
echivalent cu o relatie “bijectiva” analogie cu casatorie: o persoana poate fi casatorita sau nu
daca este casatorita va fi casatorita cu o singurapersoana din tabelul cu persoane de sex opus
persoana respectiva va fi caracterizata de aceeasirelatie “one to one” – primeste simultan un singurcorespondent in tabelul initial
56
![Page 57: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/57.jpg)
de multe ori legaturile “one to one” se bazeaza pe reguli externe
de obicei se poate realiza usor si eficientgruparea ambelor tabele in unul singur
57
![Page 58: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/58.jpg)
O linie dintr-un tabel (row), identificata princheia primara, poate avea: nici una, una saumai multe linii corespondente in celalalttabel. In acesta o linie poate fi legata cu o singura linie din tabelul primar.
Analogie cu relatii parinte/copil:
fiecare om are o singura mama
fiecare femeie poate avea nici unul, unul sau maimulti copii
58
![Page 59: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/59.jpg)
de obicei aceste legaturi se implementeazaprin introducerea cheii primare din tabelulOne in calitate de coloana in tabelul Many(cheie externa – foreign key)
59
![Page 60: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/60.jpg)
Fiecare linie (row) din ambele tabeleimplicate in legatura poate fi legat cu oricate(niciuna, una sau mai multe) linii din tabelulcorespondent.
Analogie cu relatii de rudenie (veri de exemplu), tabel 1 – barbati, tabel 2 – femei : fiecare barbat poate fi ruda cu una sau mai multe
femei
la randul ei fiecare femeie poate fi ruda cu unulsau mai multi barbati
60
![Page 61: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/61.jpg)
de obicei aceste legaturi se implementeazaprin introducerea unui tabel suplimentar(numit tabel asociat sau de legatura) care samemoreze legaturile
61
![Page 62: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/62.jpg)
Un caz particular de legatura “one to many” in care legatura e in interiorul aceluiasi tabel
rezolvarea este similara, introducerea uneicoloane suplimentara, cu referinta la cheiaprimara din tabel
analogie cu relatii parinte copil cand ambelepersoane se regasesc in acelasi tabel
62
![Page 63: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/63.jpg)
Respectarea formelor normale ale bazelor de date aduce nenumarate avantaje
Efectul secundar este dat de necesitateasepararii datelor intre mai multe tabele
In exemplul utilizat avem doua conceptediferite din punct de vedere logic
produs
categorie de produs
63
![Page 64: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/64.jpg)
In exemplul utilizat avem doua conceptediferite din punct de vedere logic
produs
categorie de produs
Cele doua tabele nu sunt independente Intre ele exista o legatura data de
functionalitatea dorita pentru aplicatie: un produs va apartine unei anumite categoriide produse
64
![Page 65: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/65.jpg)
Legaturile implementata
One to Many
in tabelul “produse” apare cheia externa (foreign key): “id_categ”
65
![Page 66: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/66.jpg)
Daca se doreste o situatie cand un produspoate apartine mai multor categorii (o carte cu CD poate fi inclusa si in “papetarie” si in “audio-video”)
relatia devine de tipul Many to Many
e necesara introducerea unui tabel de legatura cu coloanele “id_leg” (cheie primara), “id_categorie” si “id_produs” (chei externe)
66
![Page 67: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/67.jpg)
67
![Page 68: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/68.jpg)
Nu trebuie evitate relatiile
Many to Many
One to Many
Prelucrarea cade in sarcina server-ului de baze de date (RDBMS)
JOIN – esential in aplicatii cu baze de date
68
![Page 69: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/69.jpg)
eficienta unei aplicatii web
100% - toate prelucrarile "mutate" in RDBMS
PHP doar afisarea datelor
eficienta unei aplicatii MySql
25% alegerea corecta a tipurilor de date
25% crearea indecsilor necesari in aplicatii
25% normalizarea corecta a bazei de date
20% cresterea complexitatii interogarilor pentru a “muta” prelucrarile pe server-ul de baze de date
5% scrierea corecta a interogarilor69
![Page 70: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/70.jpg)
70
![Page 71: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/71.jpg)
Bibliotecile corespunzatoare trebuie activate in php.ini – vezi laboratorul 1. mysql mysqli (improved accesul la functionalitati ulterioare
MySql 4.1) O baza de date existenta poate fi accesata daca exista
un utilizator cunoscut in PHP cu drepturi de accescorespunzatoare – vezi laboratorul 1.
O baza de date poate fi creata si din PHP dar nu e metoda recomandata daca nu e necesara cod dificil de implementat pentru o singura utilizare necesita existenta unui utilizatori cu drepturi mai mari
pentru crearea bazei de date si alocarea de drepturi unuiutilizator restrans
71
![Page 72: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/72.jpg)
mysql_query trimiterea unei interogari SQL spre server resource mysql_query ( string query [, resource
link_identifier] ) rezultatul
▪ SELECT, SHOW, DESCRIBE sau EXPLAIN – resursa (tabel)▪ UPDATE, DELETE, DROP, etc – true/false
mysql_fetch_assoc returneaza o matrice asociativa corespunzatoare liniei de
la indexul intern (indecsi de tip sir corespunzatoridenumirii coloanelor – field – din tabelul de date) siincrementeaza indexul intern sau false daca nu mai suntlinii
array mysql_fetch_assoc ( resource result )72
![Page 73: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/73.jpg)
mysql_fetch_assoc returneaza o matrice asociativa corespunzatoare
liniei de la indexul intern (indecsi de tip sir corespunzatori denumirii coloanelor – field – din tabelul de date) si incrementeaza indexul intern sau false daca nu mai sunt linii
array mysql_fetch_assoc ( resource result ) mysql_fetch_row returneaza o matrice cu indecsi intregi
array mysql_fetch_row ( resource result )
73
![Page 74: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/74.jpg)
mysql_fetch_array grupeaza functionalitatea mysql_fetch_assoc si
mysql_fetch_row
array mysql_fetch_array ( resource result [, intresult_type] )
MYSQL_ASSOC, MYSQL_NUM, MYSQL_BOTH (implicit)
mysql_data_seek muta indexul intern la valoarea indicata
bool mysql_data_seek ( resource result, introw_number )
74
![Page 75: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/75.jpg)
Resursele reprezinta o combinatie intre
date structurate (valori + structura) rezultate in urma unor interogari SQL
functii de acces la aceste date/structuri
Analogie cu POO
o "clasa speciala" creata in urma interogarii cu functii predefinite de acces la datele respective
75
![Page 76: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/76.jpg)
76
Index intern
Col 1(tip date)
Col 2(tip date)
....
1
2
...
Index intern
Col 1 Col 2 ....
1 Val 11 Val 12 ...
2 Val 21 Val 22 ...
... ... ... ...
Structura
Date
Functii de acces la date
Functii de acces la structura
Acces direct
![Page 77: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/77.jpg)
Functiile de acces la structura sunt rareoriutilizate
majoritatea aplicatiilor sunt concepute pe structurafixa, si cunosc structura datelor primite
exceptie: aplicatii generale, ex.: PhpMyAdmin
Majoritatea functiilor de acces la date suntcaracterizate de acces secvential
se citesc in intregime valorile stocate pe o linie
simultan se avanseaza indexul intern pe urmatoareapozitie, pregatindu-se urmatoarea citire
77
![Page 78: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/78.jpg)
Functiile sunt optimizate pentru utilizarea lorintr-o structura de control do { } while(), sauwhile() { } de control
returneaza FALSE cand "s-a ajuns la capat"
tipic se realizeaza o citire(mysql_fetch_assoc) urmata de o bucla do { } while()
pentru a se putea introduce cod de detectieprobleme rulat o singura data
78
![Page 79: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/79.jpg)
$hostname = "localhost";$database = "world";$username = "web";$password = “ceva";$conex= mysql_connect($hostname, $username, $password);mysql_select_db($database, $ conex);
$query = "SELECT `Code`,`Name`,`Population` FROM `country` AS c ";$result = mysql_query($ query, $ conex) or die(mysql_error());$row_result = mysql_fetch_assoc($ result );$totalRows_ result = mysql_num_rows($ result );
79
![Page 80: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/80.jpg)
<?phpdo { ?><tr>
<td><?php echo $index; ?> </td><td><?php echo $ row_result ['Code']; ?> </td><td><?php echo $ row_result ['Name']; ?> </td><td><?php echo $ row_result ['Population']; ?> </td>
</tr><?php
$index++; }
while ($ row_result = mysql_fetch_assoc($ result )); ?>
80
![Page 81: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/81.jpg)
Codul aplicatiei ramane in mare parte acelasi Se modifica doar citirea valorilor pentru popularea matricii
$produse (“antet.php”)
81
$matr=file("produse.txt");foreach ($matr as $linie)
{$valori=explode("\t",$linie,5);$produse[$valori[0]] [$valori[1]]=array ("descr" => $valori[2], "pret" => $valori[3], "cant" =>
$valori[4]);}
![Page 82: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/82.jpg)
$xml = simplexml_load_file("lista.xml");if ($xml) {foreach ($xml->categorie as $categorie)
{$produse[(string)$categorie["nume"]]=array();foreach ($categorie->produs as $prod_cur)
{$produse[(string)$categorie["nume"]][(string)$prod_cur->nume]=array ("descr" => (string)$prod_cur->desc, "pret" => (string)$prod_cur->pret, "cant" => (string)$prod_cur->cant);}
}}
82
![Page 83: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/83.jpg)
$hostname = "localhost";$database = "tmpaw";$username = "web";$password = “test";$conex= mysql_connect($hostname, $username, $password);mysql_select_db($database, $conex);$query = "SELECT * FROM `categorii` AS c";$result_c = mysql_query($query, $conex) or die(mysql_error());$row_result_c = mysql_fetch_assoc($result_c);$totalRows_result = mysql_num_rows($result_c);do {
$query = "SELECT * FROM `produse` AS p WHERE `id_categ` = ".$row_result_c['id_categ'];$result_p = mysql_query($query, $conex) or die(mysql_error());$row_result_p = mysql_fetch_assoc($result_p);$totalRows_result = mysql_num_rows($result_p);$produse[$row_result_c['nume']]=array();do {
$produse[$row_result_c['nume']][$row_result_p['nume']]=array ("descr" => $row_result_p['detalii'], "pret" => $row_result_p['pret'], "cant" => $row_result_p['cant']);
}while ($row_result_p = mysql_fetch_assoc($result_p));}
while ($row_result_c = mysql_fetch_assoc($result_c)); 83
![Page 84: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/84.jpg)
eficienta unei aplicatii web
100% - toate prelucrarile "mutate" in RDBMS
PHP doar afisarea datelor
eficienta unei aplicatii MySql
25% alegerea corecta a tipurilor de date
25% crearea indecsilor necesari in aplicatii
25% normalizarea corecta a bazei de date
20% cresterea complexitatii interogarilor pentru a “muta” prelucrarile pe server-ul de baze de date
5% scrierea corecta a interogarilor84
![Page 85: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/85.jpg)
o singura interogare SQL, unirea tabelelorlasata in baza server-ului MySql
$hostname = "localhost";$database = "tmpaw";$username = "web";$password = “test";$conex= mysql_connect($hostname, $username, $password);mysql_select_db($database, $conex);
$query = "SELECT p.*, c.`nume` AS `nume_categ` FROM `produse` AS pLEFT JOIN `categorii` AS c ON (c.`id_categ` = p.`id_categ`)";
$result = mysql_query($query, $conex) or die(mysql_error());$row_result = mysql_fetch_assoc($result);$totalRows_result = mysql_num_rows($result);
do {$produse[$row_result['nume_categ']][$row_result['nume']]=array ("descr" => $row_result['detalii'], "pret"
=> $row_result['pret'], "cant" => $row_result['cant']);}
while ($row_result = mysql_fetch_assoc($result)); 85
![Page 86: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/86.jpg)
accesmysql_connect
mysql_select_db
Interogare 1mysql_query
Rezultat 1 = RESURSA
Linie 1mysql_fetch_assoc
Interogare 2mysql_query
Rezultat 2 = RESURSA
Linie 1mysql_fetch_assoc
Linie 2mysql_fetch_assoc
Linie 3mysql_fetch_assoc
…
1
2
3
etc.86
![Page 87: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/87.jpg)
!! IMPORTANT
87
![Page 88: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/88.jpg)
Incapand cu versiunea 5.5 a PHP extensiamysql este declarata depreciata
orice utilizare a unei functii genereaza eroare de tip E_DEPRECATED
se preconizeaza ca in PHP > 6 aceasta extensie vafi eliminata total
Alternativele de utilizare sunt
extensia mysqli (MySQL Improved)
extensia PDO (PHP Data Objects)
88
![Page 89: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/89.jpg)
Inafara securitatii sporite ofera acces la facilitatile curente ale server-ului MySQL
accesul la interogari predefinite (Prepared Statements) (viteza, securitate)
▪ server side
▪ client side
proceduri stocate pe server (viteza, securitate)
interogari multiple
tranzactii (integritate)
89
![Page 90: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/90.jpg)
Doua modalitati de utilizare
procedurala (similar mysql)
POO (similar PDO)
Utilizarea procedurala (aproape) similara cu utilizarea extensiei originale mysql
tranzitie facila
tranzitie cu mici diferente de parametri
90
![Page 91: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/91.jpg)
toate functiile mysql au un echivalent mysqli majoritatea functiilor au aceeasi parametri in aceeasi
ordine sunt totusi functii cu mici diferente (Ex:
mysqli_connect, mysqli_query)91
<?php$mysqli = mysqli_connect("example.com", "user", "password", "database");$res = mysqli_query($mysqli, "SELECT 'Please do not use the mysql extension ' AS _msg FROM DUAL");$row = mysqli_fetch_assoc($res);echo $row['_msg'];
$mysql = mysql_connect("example.com", "user", "password");mysql_select_db("test");$res = mysql_query("SELECT ' for new developments.' AS _msg FROM DUAL", $mysql);$row = mysql_fetch_assoc($res);echo $row['_msg'];?>
![Page 92: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/92.jpg)
92
<?php$var = new mysqli("example.com", "user", "password", "database");$res = $var->query ($mysqli, "SELECT 'Please do not use the mysql extension ' AS _msg FROM DUAL");$row = $res->fetch_assoc();echo $row['_msg'];
$mysql = mysql_connect("example.com", "user", "password");mysql_select_db("test");$res = mysql_query("SELECT ' for new developments.' AS _msg FROM DUAL", $mysql);$row = mysql_fetch_assoc($res);echo $row['_msg'];?>
![Page 93: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/93.jpg)
93
Index intern
Col 1(tip date)
Col 2(tip date)
....
1
2
...
Index intern
Col 1 Col 2 ....
1 Val 11 Val 12 ...
2 Val 21 Val 22 ...
... ... ... ...
Structura
Date
Functii de acces la date
Functii de acces la structura
Acces direct
Constructor query fetch_assoc ....
MetodeMetode atasateresursei
![Page 94: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/94.jpg)
MySql – Server Windows 2000
94
![Page 95: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/95.jpg)
Se recomanda utilizarea utilitarului MySqlQuery Browser sau un altul echivalent pentrucrearea scheletului de baza de date (detalii –laborator 1)
Se initializeaza aplicatia cu drepturi depline(“root” si parola) se creaza o noua baza de date:
▪ in lista “Schemata” – Right click – Create New Schema
se activeaza ca baza de date curenta noua“schema” – Dublu click pe numele ales
95
![Page 96: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/96.jpg)
Introducere tabel – Click dreapta pe numele bazei de date aleasa – Create New Table
se defineste structura tabelului nume coloane tip de date NOT NULL – daca se accepta ca acea coloana sa ramana
fara date (NULL) sau nu AUTOINC – daca acea coloana va fi de tip intreg si va fi
incrementata automat de server (util pentru creareacheilor primare)
Default value – valoarea implicita care va fi inserata dacala introducerea unei linii noi nu se mentioneaza valoarepentru acea coloana (legat de optiunea NOT NULL)
96
![Page 97: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/97.jpg)
97
![Page 98: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/98.jpg)
98
![Page 99: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/99.jpg)
Dublu click pe tabel In zona “SQL Query Area” se completeaza interogarea de selectie totala SELECT * FROM produse p;
Executia interogarii SQL MeniuQuery Execute
Bara de butoane Lista rezultata initial vida
poate fi editata – butoanele “Edit”, “Apply Changes”, “Discard Changes” din partea de jos a listei
99
![Page 100: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/100.jpg)
100
![Page 101: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/101.jpg)
Se recomanda utilizarea utilitarului MySqlAdministrator sau un altul echivalent (detalii– laborator 1)
Se initializeaza aplicatia cu drepturi depline(“root” si parola)
Se creaza un utilizator limitat (detalii –laborator 1)
Se aloca drepturile “SELECT” + “INSERT” + “UPDATE” asupra bazei de date create (saumai multe daca aplicatia o cere)
101
![Page 102: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/102.jpg)
102
![Page 103: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/103.jpg)
103
![Page 104: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/104.jpg)
Din MySql Administrator Sectiunea Restore “Open Backup File”
Din MySql Query Browser Meniu File Open Script
Executie script SQL▪ Meniu Script Execute
▪ Bara de butoane
Scriptul SQL rezultat continecomenzile/interogarile SQL necesare pentrucrearea bazei de date si popularea ei cu date
104
![Page 105: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/105.jpg)
Poate fi folosit ca un model extrem de bun pentrucomenzile necesare pentru crearea programatica (din PHP de exemplu) a bazei de date
CREATE DATABASE IF NOT EXISTS tmpaw;USE tmpaw;
DROP TABLE IF EXISTS `categorii`;CREATE TABLE `categorii` (`id_categ` int(10) unsigned NOT NULL auto_increment,`nume` varchar(45) NOT NULL,`detalii` varchar(150) default NULL,PRIMARY KEY (`id_categ`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO `categorii` (`id_categ`,`nume`,`detalii`) VALUES (1,'papetarie',NULL),(2,'instrumente',NULL),(3,'audio-video',NULL); 105
![Page 106: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/106.jpg)
MySql – Server Centos 7.1
106
![Page 107: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/107.jpg)
107
Web Server
Apache
PHP Interpreter
• HTML• Imagini• documente
FisierePHP
Server MariaDB
Linux CentOS 7.1
Server FTP
Server SSH
Server Email
phpMyAdmin
1. login root:masterrc2. ifconfig 192.168.30.53. putty.exe 192.168.30.5 SSH root:masterrc (remote login)4. [alte comenzi linux dorite]5. FTP Winscp SFTP student:[email protected]. MySql http://192.168.30.5/phpmyadmin root:masterrc7. Apache Error Log 7a. putty nano /var/log/httpd/error_log7b. http://192.168.30.5/logfile.php (nonstandard)8. PHP info http://192.168.30.5/info.php9. daca serviciul DHCP duce la oprireaApache: service httpd restart
![Page 108: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/108.jpg)
http://192.168.30.5/phpmyadmin
root
parola administrator MySql/MariaDB (masterrc)
108
![Page 109: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/109.jpg)
109
![Page 110: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/110.jpg)
Databases ”nume” Create
110
![Page 111: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/111.jpg)
Baza de date (in lista) Structure div Create Table nume/coloane Go
111
![Page 112: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/112.jpg)
112
(eventual ) Adaugare coloane / Stabilire nume Name / Type / Length / Default
![Page 113: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/113.jpg)
(eventual) NOT NULL / Index / Auto Increment
in functie de “necesitatile” coloanei respective
113
![Page 114: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/114.jpg)
in aproape toate etapele in PhpMyAdmin exemplu de cod SQL/schelet utilizabil (copy/paste) in
aplicatia PHP
modificari de finete absente din interfata▪ copy Sectiune “SQL” in interfata paste modificare
114
![Page 115: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/115.jpg)
New NumeAdd Columns ...
115
![Page 116: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/116.jpg)
Tabel Insert CompletareGo
116
![Page 117: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/117.jpg)
Tabel Browse salt la pagina (numar de linii pe pagina)
117
![Page 118: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/118.jpg)
Tabel SQL completareGo
118
![Page 119: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/119.jpg)
119
![Page 120: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/120.jpg)
Server Users Add user
120
![Page 121: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/121.jpg)
Nu e recomandabil/posibil sa se utilizeze user-ulMySql “root” pentru aplicatii
![Page 122: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/122.jpg)
Server Users Edit Privileges
122
![Page 123: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/123.jpg)
Database numeGo
123
![Page 124: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/124.jpg)
Se aloca drepturile SELECT + INSERT + UPDATE + DELETE asupra bazei de date create
124
![Page 125: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/125.jpg)
Nume Privileges Marea majoritate a aplicatiilor nu au nevoie de
drepturi de acces la structura/administrare
125
![Page 126: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/126.jpg)
Adaugare index e esentiala pentru viteza
exemplu, produse grupate pe categorii, selectiaproduselor dintr-o categorie se face cu :
SELECT * FROM `produse` WHERE `id_categ` = 1
Tabel Structure Index / Selectare + Index
126
![Page 127: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/127.jpg)
Apasare +Indexes, se deschide lista de indecsi Apasare -Indexes, se inchide lista de indecsi
127
![Page 128: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/128.jpg)
Ca si in cazul Windows 2000 facilitatea de Backup realizeaza un script SQL care continestructura si datele exprimate sub forma de interogari SQL
O deosebire intre PhpMyAdmin si aplicatiilespecifice MySql (aceleasi de pe Windows 2000 sau MySql Workbench) este absenta liniilor de creare a bazei de date CREATE DATABASE IF NOT EXISTS tmpaw; USE tmpaw;
La utilizarea PhpMyAdmin trebuie sa se creezemanual inaintea restaurarii baza de date
128
![Page 129: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/129.jpg)
Nume (tabel sau baza de date) Export
129
![Page 130: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/130.jpg)
Se creaza in avans baza de date Nume Import Browse (alegere fisier
backup) fisierele SQL pot fi compresate gzip, bzip2, zip
130
![Page 131: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/131.jpg)
131
![Page 132: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/132.jpg)
Sa se continue magazinul virtual cu: produsele sunt grupate pe categorii de produse
sa prezinte utilizatorului o lista de grupe de produsepentru a alege
sa prezinte utilizatorului o lista de produse si preturi in grupa aleasa
lista de produse si preturi se citeste dintr-o baza de date MySQL
se preia comanda si se calculeaza suma totala
se creaza o pagina prin care vanzatorul poatemodifica preturile si produsele
132
![Page 133: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/133.jpg)
SelectieC/V
index.php
Alegerecategorie
lista_categ.php
Introduceredate
formular.php
Prelucrarecomanda
rezultat.php
Alegere / introducere
categorie
admin_categ.php
Alegereprodus
admin_lista.php
Modificare / Introducere
produs
admin_formular.php
postget
C
V
lista.xml / MySqlantet.phpsubsol.php 133
![Page 134: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/134.jpg)
134
postget
![Page 135: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/135.jpg)
postget 135
![Page 136: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/136.jpg)
136
![Page 137: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/137.jpg)
137
![Page 138: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/138.jpg)
Se continua lucrul la aplicatie (L5) Se recomanda laboratorul asincron – S2 Se poate folosi fisierul cu surse cpypaste.txt
(site-http://rf-opto.etti.tuiasi.ro)
138
![Page 139: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/139.jpg)
Se ia o decizie relativ la relatia dintre produsesi categorii (S63-S67)
One to Many
Many to Many
Se creaza cele 2(3) tabele corespunzatoare Se populeaza cu date Se actualizeaza planul aplicatiei pentru a
corespunde cu aplicatia proprie
nume de fisiere, tipuri de transfer a datelor139
![Page 140: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/140.jpg)
Se creaza firul de executie paralel pentruvanzator
fisierele pentru cumparator reprezinta o buna calede pornire (Save As, Copy/Paste) pentru 2 din cele3 fisiere
Se lucreaza cat mai mult la conversia text -> MySQL
activitatea se continua la laboratorul 7
140
![Page 141: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/141.jpg)
Web Server
Apache
PHP Interpreter
• HTML• Imagini• documente
FisierePHP
cerere HTTP
raspuns HTTP
Server MariaDB
Linux CentOS 7.1 141
Server FTP
Server SSH
MicrosoftWindows
Client FTP/SFTPWinScp
Client SSHPutty
Browser
EditorNotepad ++
Server Email
phpMyAdmin
![Page 142: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/142.jpg)
142
Web Server
Apache
PHP Interpreter
• HTML• Imagini• documente
FisierePHP
Server MariaDB
Linux CentOS 7.1
Server FTP
Server SSH
Server Email
phpMyAdmin
1. login root:masterrc2. ifconfig 192.168.30.53. putty.exe 192.168.30.5 SSH root:masterrc (remote login)4. [alte comenzi linux dorite]5. FTP Winscp SFTP student:[email protected]. MySql http://192.168.30.5/phpmyadmin root:masterrc7. Apache Error Log 7a. putty nano /var/log/httpd/error_log7b. http://192.168.30.5/logfile.php (nonstandard)8. PHP info http://192.168.30.5/info.php9. daca serviciul DHCP duce la oprireaApache: service httpd restart
![Page 143: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/143.jpg)
Se recomanda utilizarea posibilitatiivizualizarii matricilor In fisierul care receptioneaza datele
temporar pina la definitivarea codului utilizarea de cod "verbose" (manual) in
etapele initiale de scriere a surselorPHP poate fi extinsa si la alte tipuri de date singura (aproape) metoda de
depanare(debug) in PHP
<p>temp <?php echo "a=";echo $a; ?> </p> 143
echo "<pre>";print_r ($_POST);echo "</pre>";
![Page 144: Curs 7 2016/2017rf-opto.etti.tuiasi.ro/docs/files/TMPAW_2017_7.pdfse creaza pagina de selectie a categoriei, din care se va merge in lista de produse (utilizare $_GET –S103) 5. Lista](https://reader030.vdocuments.site/reader030/viewer/2022040803/5e3ec21a14c59609255c2563/html5/thumbnails/144.jpg)
144
echo "<pre>";print_r ($_POST);echo "</pre>";
<p>temp <?php echo "a=";echo $a; ?> </p>