Sunteți pe pagina 1din 13

(UPRINS

3 6 Editorial Introducere

Dezvoltarea Internetului este in al treilea stadiu de dezvoltare, jar "dinamic" ~i "interactiv" sunt atributele esentiale ale oricarui site de succes.- PHP ~i MySOL sunt uneltele ideale pentru un site dinamic. 7 Cei trei magnifici
Sfaturi pentru 0 instalare rapida a uneltelor necesare pentru constructia unui site folosind.

9
~-"o

Cu creionul pe hartie Stabilireaobiectivelor.


Baza de date este coloana vertebrala a unui site dinamic. Tn acest capitol yeti invata tot ce aveti nevoie sa ~titi pentru a construi ~i a lucra cu 0 baza de date.

11 SQL-ul meu ~i-al tau

20

Programare pentru toti Introducere in limbajul PHP.

Interactivitatefolosind PHP in combinatie cu formularele HTML Tnvataticum sa folositi PHP ~i MySOL pentru a induce dinamism in paginile dumneavoastra.

36 Noul site pas cu pas


Creati primele pagini dinamice ~i interactive ale site-ului. 51 Stapanul datelor Sectiunea de administrare a site-ului. 65 Tips & Tricks Cum sa va protejati de neplaceri.

CHIPSPECIAL SITE DINAMIC "

,J,

,.
Solutia
Uneltele de baza

completa...
Macromedia
Nu este designer web care sa nu fi auzit de firma Macromedia ~iprodusele sale. Acestea u~ureaza foarte mult munca de creare, programare ~i finalizare a unui site web, datorita unor unelte ca Homesite, Flahsh MX, Dreamweaver, ca sa amintim numai cateva din versiunile de proM inc1use pe CD-ul ata~at revistei. Folosind Homesite 5 sau Dreamweaver MX, crearea de site-uri web dinamice va fi mai u~oara deoarece amandoua oferatag-tips ~iautocompletepentru HTML ~iPHP. unealta cu ajutorulcareiavaputeti conecta la baza de date de oriunde ati fi, Gallery, cu care va puteti rune pozele online, phpMyChat, un sistem de chat webbased, precum ~imulte altele.

Sub acest moto am reunit pe CD 0 colecpe a celor mai bone aplicapi pentru erearea unui site web dinamie, in mare parte absolut gratuite.

, ,4
J

Bineinteles, crearea unui site performant, aici intelegand until dinamic, precum ~ipunerea lui in functiune, nu poate fi lacuta tara anumite programe, dedicate. Din acest motiv, pe CD am inc1us serverul web Apache, sistemul de baze de date MySQL ~iPHP.

'" -

,,~..

Browsere
Pentru testarea paginilor pe care Ie yeti face este c1arnevoie de un browser. Acesta a fast ~iuntil din motivele pentru care am inc1uspe CD ultimele versiuni a doua browsere consacrate: Mozilla ~i Opera.

Ajutor in caz de nevoie


Pe CD pe langa Apache 1.3.27 ~i 2.0.44, PHP 4.3.1 ~iMySQL 3.23 pentru Windows ~iLinux yeti gasi ~imanualele PHP ~iMySQL in formatHTML ~iCHM (Windows Help).

,,-~-----+ O.t*/I..JllIiII". , ::
,'--._._"""'-_.".~'--.'-"'.'"-.--

-~~

...... ,~..-

'-'-' '.00""'-',"--"'" _m"_' '~'--""--,,-,, ,.~-.,_.~ .~,._.._..-

-"-"-'--"'-"""~-"--'" ,""-.. " "" """'---' ",

Clienti FTP ,
Dupa realizarea ~i testarea site-ului vine ~imomentul in care acesta trebuie transferat pe un server conectat la Internet. Pe CD yeti gasi cei mai populari c1ientide FTP cu care yeti putea realiza transferul rapid ~i u~or.

------

Extras
Ce ar insemna crearea/programarea unui site web lara ajutorul micilor programele care salveaza timp? 0 munca de luni de zile. De aceea, pe CD yeti gasi numeroase astfel de utilitare: c1ientivizuali pentru conectarea ~ilucrul cu baza de date, editoare PHP, drivere MySQL pentru conectarea din .Net, Java ~i Python.

Scripturi complete
Am inc1us~i0 serie de scripturi complete, gratuite, pe care Ie puteti utiliza pentru a va imbogati site-lit Printre cele mai importante se numara PhpBB 2.0.4, un forum pe care trebuie doar sa 11 configurati pentru a inchega 0 comunitate pe site-lit dvs., phpMyAdmin, 0
CHIP SPECIAL - SITE DINAMIC

'if i

~: I:
.

EDITORIAL ))

t!!

--

))

INSTALARE )) ORGANIZARE II

MySQL

))

PHP

))

CREARE SITE))

ADMINISTRARE TIPS&TRICKS ))

Intoducere

incotro
.A

ne indreptarn?

Dezvoltarea Internetului este in al treilea stadiu de dezvoltare, iar "dinamic" ~i "interactiv" soot atributele esenpale ale oridirui site de succes.
n 1960, dind a fast lansat ARPANET, Ministerului Aparilrii al SUA, nimeni nu ~i-ar fi imaginat unde se va ajunge doar 40 de ani mai tar-ziti. Dezvoltarea Internetului a inceput cu adeviirat in 1993, odatii cu lansarea primului browser gratuit, Mosaic, care putea afi~a text ~iimagini. in millputinde un an, numiirulutilizatorilor a ajuns la 2 milioane. David Siegel, autorul caqii "Creating killer websites" se refera la site-urile create in aceasta perioada ca "Site-uri de prima generatie", lineare, limitate ca posibilitiiti dar indeajuns de functionale pentru transmitereainformatiei.

I reteaua

Intr-o statistica Iacuta pe ejobs.com, cererea de programatori HTML este in cadere libera in timp ce limbajele server-side stint cele mai cerute. Ca webdesigneri, ori ne adaptiim noilor cerintei ori ingro~am coada la Oficiul foqelor de munca.

Se cere...
in prezent aproapejumatate de miliard din populatia globului are acces la Internet. in 2002 39,7% din utilizatorii de Internet au Iacut cumpiiriituricu 0 valoare totala estimatii la 47,98 miliarde de dolari. Site-urile care ofera produse sau servicii sunt intr-o continua cre~tere.Utilizatorii rind sa prefere cumpiiriiturile online datoritiicomoditiitii de a comanda un produs fiiriiefort sau deplasare. Aproximativ 98% din e-cumparatori spun ca intentioneaza sa cumpere online ~i in viitor datoritiiu~urintei ~icomoditiitii. Un studiu al Cyberatlas releva faptul ca v!inzi1rileonline au cel mai mare potential de dezvoltare din intreg sectorul economic. Site-urile firmelor nu mai Stintdoar informative ci ofera utilizatorului posibilitatea de a comanda produse sau servicii. La fel ~i site-urile care ofera ~tiri: ele nu mai stint demult doar simple pagini de ziar in format electronic, ci ofera utilizatorului posibilitatea de a interactiona, de a-~i personaliza experienta online. Dinamismul ~i interactivitatea stint elemente obligatorii pentru un site de succes.

Intr-un site dinamic se pot adauga elemente de interactivitate foarte u~or. Metodele puse la dispozitie de aplicatiile server-side ne pot ajuta sa transformam un simplu site intr-o comunitate activa. Tendinta este cain viitor, toate electronice1e din jurul nostru sa fie conectate la Internet. Deja putem accesa site-uri wap prill intermediul te1efonului mobil ~i s-a inventat palla ~i frigiderul care face singur comenzile online. De aici se pot ridica 0 serie de probleme de compatibilitate. Un site creat pentru web va trebui recreat pentru a putea fi accesibil ~i de pe telefonul mobil sau ultimul racnet de mp3 player cu conectare la Internet. Avand continutul separat de structura sau de prezentare, intr0 baza de date, se poate crea foarte u~or un duplicat al site-ului original, cu un format potrivit destinatiei.

De ce PHP ~i MySQL?
Cel mai putemic motiv pentru folosirea PHP ~iMySQL ca unelte pentru crearea unui site dinamic este faptul ca amandoua sunt open-source ~i oricine Ie poate utiliza fiirii costuri suplirnentare. Un alt motiv este ca aplicatiile create sunt cross-platform: PHP ~i MySQL ruleaza atilt pe sisteme Linux ~i Windows precum ~i pe 0 multime de alte sisteme de operare mai far intillnite. Astfel, puteti crea un intreg website pe calculatorul personal, fiirii sa instalati un nOli sistem de operare, jar la s~it doar sa transferati site-ul pe serverul Linux ~isa ruleze tara probleme. in prezent, PHP este atilt de putemic ~i versati1incat pana ~i liderul portalurilor, Yahoo!, a renuntat la lirnbajul sau proprietar, yscript,in favoareaPHP. Aceastanuinsearnnii ca PHP este complicat sau dificil: dimpotriva, PHP ~i MySQL sunt foarte u~or de invatat, chiar ~ipentru cei nefamiliarizaticuprogramarea sau bazele de date. Acest Specialdore~tesa demonstreze acest lucru .. tot ce va trebui sa faceti este sa cititi ~isa exersati chiar voi toate

III

--

---4

Articolele prezente pe amandoua paginile au fast introduse 0 singura data !ji s-au aranjat "singure": cele mai noi la inceput, cele mai vechi la sfar!jit.
A doua generatie a inceput odata cu specificatiile pentru HTML 1 ~i competitia Netscape-Microsoft pentru dominarea pietei. Orientarea in aceastii perioadii a fast inspre "vizual" ca mod de comunicare. In prezent ne aflam in a treia generatie, a dinamismului ~i interactivitatii. Lumea progreseaza in pas rapid jar web designerii trebuie sa tina pastil, in aceastii meserie evolutia este cuvant cheie. Numarul internautilor cre~te de la 0 zi la aha, la fel ca ~i a~teptilrile lor: ei doresc informatie proaspata ~i posibilitatea de a interactiona. Paginile statice nu mai stint de ajuns pentru a asigura fidelizarea utilizatofilar. In plus, in zilla de astazi oricine poate face un site cu ajutorul aplicatiilor vizuale precum Macromedia Dream Weaver sau Microsoft Frontpage. Pentru a sta in rata concurentei, un web designer trebuie sa ofere mai mult ~i mai rapid decat ceilalti.
CHIP SPECIAL
-

Avantaje
Principalul avantaj al unui site dinamic asupra unuia static este u~urinta in administrafe. Adaugarea sau modificarea continutului este floare la ureche ~i atilt de simplu incat puteti delega pe oricine sa se ocupe de aceasta sarcina. Deoarece continutul este stocat in baza de date sau in fi~iere text, cei care se ocupa de continut nu au nevoie sa ~tie vreun pic de HTML sau organizarea sau layoutul paginilor. De asemenea, daca trebuie sa schimbati logo-ul pe fiecare pagina a site-ului este de ajuns sa faceti modificarea intr-un singur fi~ierin loc sa luati fiecare pagina in parte, sa 0 modificati ~isa 0 uploadati inapoi pe server.

exemplele prezentate continuare. in

:;;:...~=~~
I

.~!;~ "YAHOO! .,.",.,~.,


J=.,.~
n

:,\',.';;':":":'::" ,""f ..

-~
' i J,
I

::'--=~,"=J""""""" .. """""",._-"""" """"""r


I

r::::::.-,:~~= '-~""""'"'-=
."""""""-

'

,"-~::-"'\ ,

:~::.=
..1

"iii~.:,;t= I
, :,=~.:.::::.:-;;,;-~:...

Yahoo! a renuntat la limbajul proprietar yscript in favoarea PHP

SITE DINAMIC

....-

EDITORIAL )1

Instalare i cerin1e de sistem

Cei trei magnifici


Instalarea celor trei componente Decesare functionarii unui server web poate da batai de cap chiar ~iunui utilizator experimentatin ale calculatoarelor. Omiterea adaugarii unei linii intr-un fi~ier de configurare va poate scoate peri albi incercand sa aflati de ce lucrurile nu functioneaza a~a cum ar trebui.
ar de ce e atilt de complicat, ati putea intreba? Ei bille, pentru va explica acest lucru, trebuie intai sa va povestesc ce se petrece de fapt pe server atunci cand scrieti in bara de adrese a browserului httv://www.chiv.ro/l.vhv, spre exemplu. Cand apasati Enter, browserul trimite catre serverul de HTTP http://www.chip.ro 0 cerere: "afi~eazami pagina 1.php a site-u1ui www.chip.ro". Acest server este Apache. Apache ~tie sa serveasca (de aceea se ~inume~te server) browserului doar pagini HTML. Paginile HTML pot fi deja pe server sau create, tot acolo, de catre alte aplicatii, la cererea serveru1ui de web ~i servite ca HTML browserului clientului. In momentul in care cerem pagina test.html de pe server, Apache 0 serve~te imediat. Daca in schimb cerem 0 pagina cu alta extensie, php in cazul de fata, Apache cauta sa vada daca este configurat ~a serveasca pagini cu aceasta extensie ~ice program se ocupa de ele. Astfel, atunci cand cerem 0 pagina cu extensia php, serverul Apache va trimite mai departe cererea catre PHP, "se cere un fi~ier PHP, ocupa-te de aceasta cerere ~ida-mi inapoi 0 pagina pe care sa 0 afi~ezclientului". PHPpreiacererea, ruleaza codul din program ~i daca vede ca se cer informatii din baza de date MySQL, 0 acceseaza, extrage informatiile cerute ~i construie~te 0 pagina HTML pe care 0 va trimite serverului Apache pentru ca acesta sa 0 serveasca clientului. Un exemplu concret: prima pagina a siteS~..I",o~.tio"

ului chip.ro este un fi~ier PHP care ia din baza de date cele mai noi ~tiri adaugate de redactori ~iIe trimite inapoi catre Apache care Ieafi~eaza vizitatorului. Daca va uitati in sursa paginii nu veti vedea decat cod HTML. PHP ruleaza "in umbra", pe server (de aceea se ~i nume~te limbaj ,,serverside") ~iconlucreazacuApache astfel incat acesta din urma sa poata afi~a clientului un rezultat interpretabil de catre

browser - in acest caz 0 pagina HTML. Apache nu este predefinit sa lucreze cu PHP ~iviceversa. In vederea colaborarii intre cele doua va trebui ca dupa instalarea lor sa modificati fi~ierelede configurare. In continuare va voi ghida prill instalarea ~i configurarea Apache, PHP ~i MySQL.

pe un server securizat. In timpul instalarii Apache, in momentul in care vi se vor cere informatii despre server, folositi urmatoarele date: Network domain: localhost Server name: localhost Administrator's EmaiiAddress: adresa dvs. de mail. Nota: Daca instalati Apache 2, va trebui ca dupa incheierea instalarii sa suprascrieti manual fi~ierullibapr.dll din clProgram FileslApache GrouplApache 21 bin cu eel din directorul apache 2.0.44\binaryIpatch de pe CD. Pentru a putea servi pagini, serverul trebuie sa fie pornit, la fel ca orice aplicatie. Faceti acest lucru accesand meniul Start> Programs> Apache HTTP Server> Start Apache in console care va porni programul intr-o consola. Pentru a testa, deschideti un browser ~i accesati adresa httv://localhost. Daca pagina afi~ata arata ca in imaginea alaturata, serverul este pornit ~i functioneaza.

""..."".iM""""Ib._W",~,_",,,

Apache
Pentru un site aveti in primul rand nevoie de un server HTTP. Alegerea noastra s-a indreptat spre Apache datorita flexibilitatii sale, portabilitatii, sigurantei ~i extensibilitatii. Pe CD-ul alaturat puteti gasi doua versiuni Apache, pentru cele mai populaTesisteme de operare. Va voi ghida in continuare prill procesul de insta1arepe un sistem Windows a~a cum majoritatea dintre dumneavoastra aveti. Ultima versiune Apache pentru Windows este 2.0.44. Kitul de instalare 11 gasiti in directorul apache 2.0.44\binary pe CD. Totu~i,datorita faptului ca suportul PHP pentru Apache 2 este inca experimental, sfatulmeu este sa instalatiApache 1.3.27pe care 11 gasitipe CD in directorul apache 1.3.27lbinary. Va va fi mult mai u~or sa instalati aceasta versiune dar folositi-o doar pentru uzul personal, pentru a putea face pagini dinamice tara sa fiti nevoiti sa va cumparati hosting la un ISP sau sa pierdeti timp cu configurari exhaustive. Nu folositi serverul Apache pe Windows 95 sau 98 pentru a va pune online site-urile, ci doar pentru a Ie crea in
lini~te in vederea publicarii lor ulterioare

~:'PAP~O

Prima pagina servita de server dupa instalare. Pentrua nu fi nevoitica de fiecaredata ciindvreti sa aveti serverulpornit sa rulati programul manual, puteti sa 11pomi!i ca serviciu ~i el va porni automat odata cu Windows. In Windows NT, 2000 ~i XP,
odata cu instalarea programului,
~i serviciul Apache.

este instalat

npute!i

seta sa pomeasca

automat accesiind Services (Windows Service Control Manager) din Control Panel (Administrative Tools in Windows 2000). In Windows 95/98 exista suport pentru servicii msa estedoarexperimental. Pentru caApache sa pomeasca automat 1a fiecare repornire a calculatorului, trebuie sa il instala!i intiii ca atare. Folosi!i 0 consola MS-DOS prompt pentru a intra in directorul C: \Program
Files \Apache Group \Apache ~ia tasta apache -i -n "apache". Daca mesajul primit este "The

0 pagina HTMLscrisa de utilizator ~i

Configurarea serverului Apache.

. servita de Apache.
CHIP SPECIAL
-

SITE DINAMIC

-....-

...

;a

...

iIIiiii

apache service has been installed successfully." pute!i sa ~ipomi!i imediat serviciul (:fara a reboota) scriind in consola: apache -n uapacheu -k start. Daca va hotarati sa nu mai folositi serviciul Apache, tastati in command prompt apache -u -n "apache" ~i serviciul va fi dezinstalat, iar programul nu va mai fi pomit automat odata cu Windows.

sa suprascrieti cu acesta corespondentul sail din directorul C: IProgram Files\Apache Group\Apache\conf Daca doriti sa faceti configurarea manual (in cazul in care ati instalat PHP in alt director decat eel indicat aici), deschideti cu Notepad fisierul C: IProgram Files \Apache Group\ApacheIconj\httpd.conf ~i adaugati urmatoarele 3 linii:
LoadModule php4_module c:/php/sapi/ php4apache.dll

Daca nu merge...

Document root
Document root este directorul in care afla fi~ierele HTML ~i PHP ce vor fi servite de server. In cazul de rata el este directorul C: IProgram Files \Apache Group\Apachelhtdocs.Grice fi~ierpuneti in documentroot va fi disponibilla adresa httv:l/localhost/numefisier. Puteti testa acest lucru creand 0 pagina testhtml in care sa scrieti: <p>Aceasta este 0 pagina de test</p> Copiati fi~ierultesthtml in document root ~itastati in bara de adrese a browserului httv://localhost/test.html. Daca rezultatul nu arata ca in pagina anterioara, asigurati-va ca nu exista un alt server HTTP pomit (lIS, PWS, etc.).

AddModule mod_php4.c AddType application/x-httpd-php .php

Cautati apoi linia Directory Index index.html ~i modificati-o in DirectoryIndex index.html index.php. Pentru ca schimbarile sa fie recunoscute va trebui sa repomiti Apache. Sa testam daca totul functioneaza cum trebuie. Creati cu Notepad un document text in care scrieti:
test.php

<?
print "Acesta este un test. Apache+PHP functioneaza"; ?>

PHP
Copiati continutul directorulul php 4.3.0Ibinarylphp-4.3.0-Win32 de pe CD in c:lphp, iar apoi fi~ierul C:lphplphp 4ts.dll in c:lwindows\system. In continuare, pentru a va u~urainstalarea puteti coria fi~ierulphp. ini din directorul chip.config de pe CD in c:lwindows. Altemativ, daca doriti sa faceti configurarea manual, deschideti fi~ierul c:lphplphp.ini-dist cu Notepad, cautati textul doc - root= ~i schimbati -1 cu doc_root="C:\Program Files\Apache Group\Apache\htdocs".Cautatiapoi linia extension_dir = ~i schimbati-o cu extension- dir= "C:\php". Salvatifi~ierul, redenumiti-l php.ini ~icopiati-l in directorul Windows.
Salvati-l cunumele testphp ~iaccesati URL-ul httv:l/localhost/test.php.

Atenpe! Daca Windows-ill dumneavoastra este setat sa ascundii extensiile pentru fi~ierele recunoscute, documentul creat cuNotepad vafi de faptnumittestphp.txt~i adresa http://localhost/testphp nu va putea fi accesatii deoarece testphp nu existii. In cazul acesta ave!i douii solutii: ori continua!i

Windows 95/98 sail C:\mysqllbin\mysqldnt.exe pe NT/2000/XP. Ca serverul de MySQL sa pomeasca automat la fiecare repomire a Windows, puteti adauga un shortcut in Start Menu/ Start up caire C:lmysqllbinlmysqld.exe (respectiv mysqld-nt.exe). Esterecomandat ca pe Windows NT/2000/XP sa setati serviciul MySQL sa pomeasca automat Sa testam: dura ce ati pomit serverul mysqld scrieti urmatoarea linie in command prompt:
c: \mysql\bin\mysqladmin version status proc

Daca output-ill este asemanator celui din fereastra alaturata, serverul MySQL functioneaza.

Apache+PHP
Inca nu yom putea accesa PHP din Apache deoarece acesta din urma este deocamdata configurat sa serveasca claar pagini statice HTML. Daca ati urmat instalarea pas cu pas dura recomandarile noastre, in directorul chip.config de pe CD yeti gasi fi~ierul de configurare pentru Apache, httpd.conf, gata pregatit, fiind suficient
CHIP SPECIAL
-

sa lucrati cu Notepad, dar va trebui sa dezactiva!i ascunderea extensiilor pentru fi~ierelecunoscute, ori folosi!i un editor PHP din celeruse la dispozi!iepe CD.

MySQL
Pentru ainstala ultima versiune MySQL pentru Windows nu este nevoie decat sa pomiti setup.exe din directorul mysql 3.23 \binary. Deoarece MySQL este un server, ca ~i Apache, va trebui intili sa-l pomiti daca dori!i sa lucrati cu el. Pentru a1rami, rulati C:lmysqllbinlmysqld.exe pe
Serverul MySQL a fast instalat i ruleaza.

NoHi:Pentrucasaruleze, MySQLare nevoie de protocolul TCP/IP. Pe sistemele cu Windows NT4 trebuie sa aveti

instalat Service ack P 3.

SITE DINAMIC

~\

EDITORIAL ))

Organizarea preliminara

.
pe hartie
afla in~irate ciirtile apartinflnd acestuia. Pe aceasta noua pagina ii yom arata vizitatorului cartile ordonate dura autor ~i titlu insotite fiecare de 0 scurta descriere ~i de pretul cartii. Titlul cartii va fi sub forma de link astfelincat vizitatorul sa poata apasa pe el ~i sa vada mai multe detalii despre cartea respectiva.

Cu creionul

Regula numarull in program are este organizarea preliminara. De acesta depinde succesul actiunii la care ne VOID inhama. Pentru a scrie cod bun trebuie sa ~tim destul de clar care ne sunt obiectivele inainte de a scrie chiar ~iun tag HTML. C~itevaminute de organizare preliminara ne pot scuti de revenirea la cod pentru a aduce modificari san chiar rescrierea intregii aplicatii.
rganizarea preliminan'i este 0 prac-tica obi~nuita in firmele de software ~i ar trebui sa fie legea de capatai a oricarui programator web. Daca ~tim dinainte cum vrem sa functioneze 0 aplicatie, cand trecem la scrisul codului com putea sa ne concentram exclusiv asupra programarii tara sa avem alte preocupari. De aceea yom lua un creion ~i0 hartie ~iyom descrie fiecare pagina a site-ului, functionalitatile ei ~i. modul in care utilizatorul va interactiona cu elementele acesteia. Sa definim intai ce dorim sa obtinem de la site-ul nostru. Dorim ca vizitatorii sa cumpere carti, la fel ca intr-un magaziTI "real". Ei vor putea sa se plimbe prill spatiul virtual, sa vada copertele cartilor, sa rasfoiasca doua-trei pagini, sa i~ipuna fiecare carte intr-un co~ de cumparaturi ~i la sfar~it sa se duca la casa pentru a plati. Fiecare carte va fi insotita ~i de 0 scurta descriere deoarece nu yom avea un librar care sa faca acest lucru pentru noi. La fel ca la librarie, ciirtile vor fi aranjate dura domeniul caruia apartin

pentru a Ie putea localiza mai u~or. ~i tot pentru ca nu avem un librar caruia sa ii cerem direct "Dati-mi seria Fundatiei de Asimov" sau "Ce carti aveti despre PHP?", yom rune la dispozitia vizitatorilor no~triun motor de cautare pentru a gasi rapid ceea ce ii intereseaza tara a fi nevoiti sa piarda timp pretios cautand prill rafturi. Deoarece un magazin virtual aduce foarte mult cu until real, 0 sa va prezint in continuare fiecare pagina a site-ului prill analogie cu 0 librarie reala.

Cartea
In magazinul real putem lua 0 carte din raft pentru a-i vedea coperta ~i a 0 rasfoi. Cam acela~i lucru yom face ~i in site-ul nostru. Apasand pe link-ul reprezentat de titlul cartii se deschide 0 noua pagina in care yom prezenta detaliile cartii, imaginea copertei, pretul ~i butonul de pentru adaugarea cartii in co~. Vom mai adauga ~i 0 sectiune in care sa putem vedea comentariile celor ce au citit deja cartea, precum ~iposibilitatea de a adauga un nOli comentariu. Aceasta functie este deosebit de utila atunci cand cumparam 0 carte pentru cineva ~i domeniul ne este strain. Avalid la dispozitie comentariile celorlalti putem alege 0 povestire SF bulla pentru prietenul nostru chiar daca n-am citit-o niciodata.

Vitrina
Ne aflam la u~alibrariei. Putem vedea rafturile de cartimarcate sugestiv "Manuale", "Medicina", "Poezii", "Aventuri", "SF", "Calculatoare", etc. In vitrina se afla cateva carti alese pe spranceana de catre librar: cartile foarte populare ~i noile aparitii. La fel va fi ~i prima pagina a magazinului nostru virtual: yom prezenta genurile de cartipe care Ieavem disponibile, best-seHer-urile, precum ~i cele mai noi intrari. Pentru ca spatiul virtual ne permite, tot de la intrare yom oferi vizitatorului ~iun co~de cumparaturi precum ~i optiunea de cautare pentru a gasi 0 carte rapid, la fel cum ne ducem intr-o libriiriereala direct la primul angajat sa 11 intrebam atunci cand cautam 0 anume carte.

Co!?ul de cumparaturi
Atunci cand un vizitator va apasa butonul "Adauga in co~" el va fi redirectionat spre 0 noua pagina in care ii este afi~at continutul co~ului ~i doua optiuni: sa continue cumparaturile sau sa mearga la cas a pentru a plati. In cazulin care dore~te sa mai cumpere, aplicatia no astra va tine minte alegerea vizitatorului pentru a i-a putea afi~a la 0 noua privireinco~. Valoareainsumata a cartilor adaugate in co~ 0 yom afi~a permanent

Pe raft
Intram in magazin pentru a cumpiira0 cartepentru un prieten a carui zi de na~tere este duminica.Acestuia ii plac povestirile SF a~aca ne indreptam spre ~irulde rafturi deasupra ciiruiascrie "SF" pentru a vedea ce am putea alege.Acest lucru este echivalent cu a da click pe until din domeniile prezentate pe prima pagina ~i a intra in pagina dedicata acelui domeniu unde se

~ "~~'wt""moim"'dinto""""" ---------------------------

""rod

Emo'"[

Detaliile ca'1ii.

Lista rezultatelor cautarii. CHIP SPECIAL SITE DINAMIC


-

EDITORIAL

.....
III1I!iIIIIiI8

ADMINISTRARE TIPS&TRICKS

talii va apasa pe ,jncheie tranzactia", ii va fi afi~ata 0 pagina de multumire ~i dumneavoastra yeti fi anuntat prill email de cerere pentru a 0 putea onora cat mai rapid.
"';;;';;;'" ~::';;,';'~:i;\

Administrare
Pe langa acestea yom avea nevoie ~ide 0 sectiune de administrare cu ajutorul careia sa adaugam saDsa scoatem carti din rafturile magazinului virtual, sa definim domenii ~i sa revizuim comentariile vizitatorilor (exista ~i posibilitatea ca vreun glumet sa adauge un comentariu nepotrivit care ar trebui ~ters saD modificat). Tot in sectiunea de administrare yom avea 0 pagina uncle sa vedem ultimele cereri ~i sa biram tranzactiile efectuate cu succes dopa primirea banilor ~itrimiterea caqilor cerute catre destinatar.

"'" w""",

'""II"""' "mli
",;::,';~:;'~~,~
0 "ccc' e "",omm 0 ""00.

=_"",>1<illllilliID""-

Prima

pagina:

cele mai noi ~i mai popu-

Lista cartilor din domeniul

Poezii.

larecarti. intr-un colt alpaginii,pentru aimbunatati experienta vizitatorilor pe site-ul nostru (ace~tia nu vor mai trebui sa calculeze permanent in minte starea bugetului de care dispun). Utilizatorul va putea apasa in orice moment pe co~pentru a-i revizui continutul (cartile alese palla in momentul respectiv). Daca totalul depa~e~te bugetul alocat el poate scoate 0 cartedoua din co~.Daca in schimb i~i aducem aminte in ultimul moment ca un alt prieten cauta aceea~i carte ca cea pe care dore~tesa 0 daruiasca, utilizatorul poate modifica numarul de bucati din co~pentru a cumpara doua in lac de una.

cumparaturi
casa.php
-

formularulde introduc-

Structura site
Dupa ce am terminat cu cerintele, yom trece la impartirea pe pagini. Astfel avem:

ere a datelor pentru expediere ~iplata prel ucrare. php - pagina care va prelucra datele trimise prill formularul din casa.php: Ie introduce in baza de date, va trimite un email de notificare ~i apoi afi~eaza "Multumim pentru ca ati cumparat de la noi". Zona de administrare Toate paginile din aceasta zona vor fi protejate de parola pentru ca numai dumneavoastra sa aveti acces ~i se vor afla in directorul admin: index. php - afi~eazaun formular de login; login. php-verificainformatiiledin formular ~i autorizeaza saD nu accesul mai departe, la pagina urmiitoare;
comenzi. php - cu ajutorul acestei pagini yom face cele mai dese actiuni. Ea va contine comenzile inca neonorate ~i va va da posibilitatea de a Ie marca. In momentulin care primiti banii pentru 0 comanda 0 puteti marca "Vandut" ~i aceasta nu va mai aparea in lista. Daca in schimb 0 comanda este mai veche de 0

Zona publica
index. php
u
-

prima pagina
-

domeni

. php

pagina dedicata unui

domeniu (SF, Aventuri, etc.) in care afi~am cartile din domeniul respectiv
carte. php
-

paginain careputem

Cautare
Sa presupunem ca vizitatorul va veni pe site-ul nostru cautand 0 anume carte. Pentru aceasta situatie yom avea functia de cautare. El va putea cauta dopa mai multe criterii: autor, numele cartii saD descriere. Rezultatulii va fi afi~at la fel ca in pagina de domeniu: titlu, autor ~i descriere, cu titlul sub forma de link catre pagina dedicata cartii.

vedea detalii despre carte, coperta, comentariile utilizatorilor ~iin care fiecare utilizator va putea adauga un comentariu personal
adauga_comentariu

.php-vapro-

cesa textul trimis de utilizatori ~i 11va adauga in baza de date


cas

.php

pagina uncle vizitatorul

poate vedea ~iedita continutul co~ului de

Casa
Deoarece in Romania inca nu se pot face tranzactii online adevarate, solutia cea mai laindemana pentru a putea vinde online este trimiterea de cafre cumparator a banilor prill mandat po~talsaDordin de plata, ormand ca dopa confirmarea platii vanzatorul sa ii expedieze acestuia produsele comandate. Astfel, dopa ce vizitatorul nostru s-a hotarat asupra cartilor ce dore~tesa Iecompere ~iapasa butanol "Mergi la casa", el va fi redirectionat spre 0 noua pagina in care va putea introduce adresa uncle dore~te sa Ie primeasca. Dupa introducerea acestor de-

luna 0 puteti ~terge deoarece probabil cumparatorul s-a riizgandit ~i nu s-a mai dus la po~ta pentru a va trimite banii;
adaugare. php
-

pentru adaugaresaD
-

~tergere de caqi ~idomenii din e-magazin;


modificare_stergere.php

paglna cu

ajutorul careia yom putea modifica saD ~terge date de pe site: carti, autori, domeilll
~--'i:;;'m"'~:~

'iff
I

~~

wr'~"m"""

IE~~~"" .
1=0'0"",

~"",,",,""ommo~

opinii . php - afi~eaza comentariile utilizatorilor neverificate inca de noi ~i ne da posibilitatea de a Ie ~terge saD modifica pe cele nepotrivite. In continuare yom trece la crearea ba-

Co~;ul de cumparaturi.

zei de date a magazinului virtual urmand ca apoi sa facem paginile PHP din care va

ficampusite-tit s

, .,..'\

CHIP SPECIAL

SITE DINAMIC

I Introducere in MySQL

.
Prenume

SQL-ul meu ~i-al tau


Baza de date este coloana vertebraHi a nnni site dinamic. In acest capitol VOID afla tot ce avem nevoie sa ~tim pentrn a constrni ~i a lncra cn 0 baza de date.
I
a fel ca intr-o librarie, caI1ile din magazinul nostru virtual vor trebui aranjatedupa domeniul caruia ii apaqin, nu vom pune laolalta intr-o harababura rara sellS romane de aventuri cu manuale ~colare ~i carJi de psihologie aprofundata. In aplicatia noastra va trebui sa organizam datele caI1ilor in a~a fel incat sa Ie putem gasi u~or dupa domeniu, sa Ie ordonam dupa titlu sail sa Ie alegem pe cele apaI1inand unui anumit autor. Solutia cea mai flexibila care sa corespunda acestor cerinte este baza de date.

18:00 Stiri
19:00 20:00 21:00 16:00 Desenenimate: sirena a Mica Talkshow financiar Filmserial:StarTrek (ep.140) Program pentru copii

in maruntaiele bazei de date


Amspus ca bazadedate este 0 colectie organizata, acum este momentul sa va arat ~i cum este organizata. 0 baza de date este compusa din until sailmai multe tabele (tables) care, la randul lor, Stint formate din inregistriiri dispuse in campuri (fields). Daca ati lucrat vreodata cu un program de calcul tabelar va puteti imagina baza de date ca fiind documentul ce contine mai multe foi de lucru (tabelele), campurile ca fiind coloanele tabelelor ~i 0 inregistrare oarecare ca fiind un rand din tabel. Sa luam exemplul caI1ii de telefon. Baza de date va contine un singill tabel cu 4 campuri: nume, prenume, adresa, numar de telefon.
Nume

17:00 18:00 19:00 20:00 22:00

Deseneanimate:Dexter Film serial VIP(ep.1O1)

Stiri
Film:ord oftheRings l
Oocumentar:Marelealb

Colectii de date ,
Baza de date este, in trei cuvinte, 0 colectie organizata. Ca exemple v-a~putea da cartea de telefon sail programul TV din jumalul pe care il cititi dimineata la cafea. In cartea de telefon gasim numele si prenumele abonatului, adresa ~i numarul de telefon, toate acestea ordonate dupa nume, pentru a cauta mai u~or 0 anumita persoana. Daca am avea cartea de telefon in format electronic intr-o baza de date am putea face 0 ordonare dupa numarul de telefon in ordine crescatoare pentru a afla cine are cel mai mic numar. Am putea de asemenea sa aflam cati abonati au nume care incep cu T, cati dintre ei au prenumele Ion, numarul de abonati din ora~, pe care strada Stint cele mai multe posturi telefonice ~i a~a mai departe. In programul TV informatiile au urmatoarea structura: canalul, ora difuzarii, numele programului. Acestea Stint de obicei ordonate dupa canal ~iora difuziirii, astfel:
CanalulA 16:00 18:00 19:00 20:00 22:00 Desene animate: Balanel Miaunel si Film: acerea ieilor T m Stiri Film: atrix M Muzica

Sa ne imaginam ca taiem cu foarfeca din ziar fiecare nume de program ~iora de difuzare. Atunci lie-am putea ordona programele dupa ora difuzarii astfel incat sa putem distinge mai u~or ce ne intereseaza intr-un anume interval orar:

Desene Balanel Miaunel si Muzica Canalul A Canalul B

Andu Paul Baciu Bianca Cretu Mihai Fulg Zinc

A~resa lunii29 Viforului 15 Muncii 4

Numar ~e telefon

4567893 3456874 2154686 1445328 6522554

17:00

Canalul C Program pentru copii Documentar: AIdoilearazboi ondial Canalul m B Desenenimate: a Dexter Canalul C Canalul A Canalul B Canalul C Canalul A Canalul B Canalul C Canalul A Canalul B Canalul C

Ramona Republicii 14 Bd. arii G 2A Ghe.

18:00

Film: acerea ieilor T m Stiri


Film serial VIP (ep. 101)

19:00

Stiri Desenenimate: a Lilosi Stitch Stiri

20:00

Film:Matrix Talkshow financiar Film:ord ofthe Rings l

21:00

Film serial: StarTrek

(ep.140) Canalul B 22:00 Muzica Documentar: Marele alb Canalul A Canalul C

16:00Muzica 17:00 Documentar: I doilearazboimondial A

Avalid 0 baza de date scapam ~ide ziar ~ide foarfeca deoarece ne putem ordona programele dupa plac, putem alege sa vizualizam doar programele intre ora 17 ~iora 22, putem afi~ape ecranul calculatorului doar filmele din program ~i a~a mai departe.

Continutul fiecarei linii se nume~te generic inregistrare (record). Din prima inregistrare ~timcii Andu Paullocuie~te pe Lunii 29 ~i are numarul 456789. Valoarea campului Nume al primei inregistrari este Andu, jar valoarea campuluiPrenume a celei de-a dona inregistrari este Paul. Baza de date a departamentului contabilitate a unui magazin de papetarie va avea mai multe tabele care sa cantina tipuri diferite de date. Niciunei cantabile nu ii va fi util sa aiM fumizorii amestecati cu stocurile ~icheltuielile, ci va daTisa aiba aceste date separate, dar totodata puse laolalta in acela~i loco Ea va avea nevoie de un tabel Stoc care sa cantina dona campuri:
Creioane Pixuri Plicuri A4 3511 5000 275

CHIP SPECIAL - SITE DINAMIC


" ~

8'

ADMINISTRARE TIPS&TRICKS

Va mai avea nevoie ~ide un tabel Cheltuieli care sa aiM urmatoarea structura:
Produs sanseIYiciu Oecoratiuni
II~
Ii

Baza noastra de date


Pentru a ne putea face 0 baza de date trebuie ca serverul MySQL sa fie pomit. Daca ati urmat pa~ii descri~iin capitolul instalare, serverul MySQL ar trebui sa ruleze deja, el fiind repomit automat la fiecare restartare a calculatorului. In continuare va trebui sa folosim 0 aplicatie cu ajutorul careia sa comunicam cu serverul. Aplicatia se nurne~te simplu mysql.exe ~ise gase~tein acela~idirector, c:\mysql\bin\. Vom intra in command prompt apasand pe Start, apoi pe Run ~i scriind commandin campul destinat programului ce urmeaza sa fie rulatOdata aflati in linie de comanda, scriem:

Cost 5.000.000 20.12.2002 lei 700.000 03.01.2003 lei 12.000.000 04.01.2003 lei

Reparatii Jaluzele

Ii

!jl

Pe langa acestea ii vor mai trebui inca cateva tabele pentru salarii, vanzari, etc., pentru ca la sIar~itul anului sa centralizeze datele din toate ~i sa faca bilan!Ul. Din acest exemplu putem observa ca exista cazuri in care avem nevoie de mai multetabelepentruorganizareainformatiei, tabelepe care Ie tinem intr-o singurabaza de date pentru 0 accesare mai u~oara sau pentru a intermedia relatii intre ele. Dar despreasta mai tarziu. 0 baza de date poate avea un nurnar uria~de tabele ~iinregistrari. De pe siteul www.mvsql.com aflam ca exista la ora actuala haze de date pe MySQL Server cu 60000 de tabele ~i5 miliarde de inregistrari. Impresionant, nu? Cum ar fi fast sa stocam aceasta cantitate de informatie pe hartie, in cataloage, ~isa cautam prill milioane de pagini ee ne intereseaza?

Acestea sunt bazele de date disponibile pe server.

Ce este MySQL?
MySQL este eel mai popular sistem de management pentru haze de date relationale deoarece este Open Source adica poate fi folosit lara sa fim nevoiti sa platim vreo suma de bani. MySQL Server a fast creat pentru a lucra cu haze de date mai rapid decat solutiile existente deja ~i este folosit de ani buni in medii foarte solicitante. Intr-o baza de date relationala datele sunt stoeate in mai multe tabele separate, fiind astfelimbunatatiteviteza ~iflexibilitatea. Tabelele pot fi legate prill relatii definite de noi, fiind astfel posibil sa combinamla cerere datele din mai multe tabele.

iar cand ni se cere parola apasam ENTER. Daca serverul nu este pomit yom primi mesajul de eroare "Can't connect to MySQL server on 'localhost"'. Serverul de MySQL, ca orice server care se respecta, ofera posibilitatea de a avea mai multi posesori de date pe acela~i sistem, fiecare cu drepturile lui. Astfel, serverul unui ISP de exemplu va putea fi folositde mai multi oameni, fiecareavand mai multehaze de date ~ineputandsa vada ce au ceilaltiutilizatoriai aceluia~iserver. Utilizatorul implicit (~i cu drepturi depline, de altfel) este root, iar parola initiala este goala. Vom lucra cu aceste date pentru inceput dar puteti consulta manualul MySQL indus pe CD pentru a afla cum puteti adauga utilizatori noi sau schimba 0 parola in MySQL.

Rezultatul primit de la server va arata ca in imaginea de mai sus. Am incheiat interogarea cu punct ~i virgula deoarece toate comenzile SQL (cu exceptia QUIT ~iUSE) trebuie incheiate astfel pentru a semnala serverului ca am terminat de scris propozitia ~i ca poate trece la procesarea cererii. Exista cazuri in care 0 interogare poate fi foarte lunga ~iatunci ar trebui sa 0 "rupem" in cateva bucati mai mici, pe mai multe randuri. MySQL ar da eroare daca ar observa ca propozitia este neterminata a~a ca nu uitati sa ineheiati interogarile cu punct ~ivirgula. Sa inspectamuna din bazele de date de pe acest server. Pentru a face acest lucru, spunem serverului cu ce baza de date dorim sa interactionam in continuare: test Vom primi mesajul "Database changed" ~ibazade date 'test' varamane cea in care ne yom face interogarile palla la deeoneetarea de la server sau daca decidem sa folosim 0 alta baza de date, cu aceea~i comanda: Setarea unei haze de date ca fiind cea curenta nu ne impiedica totu~i sa accesam tabele din alte haze de date in forma nume- baza- de- date.nume- tabel. Comanda USE este pastrata pentru compatibilitate cu Sybase. Tot comanda comanda SHOW 0 yom folosi pentru a vedea ce tabele exista in baza de date test in care ne aflam: Observam ca baza de date test nu are nici un tabel. Sa vedem daca cealalta are, schimband baza de date cu care dorim sa interactionam (USE mysql) ~i repetand

SHOW
Odata autentificati yom putea comunicacu serverulMySQL folosindcomenzi SQL. Trimiterea unei comenzi SQL catre serverul de haze de date se mai nurne~te ~i interogare. Sa facem prima noastra interogare ~isa aflam daca exista deja vreo baza de date pe server: SHOW DATABASES;

Ce inseamna SQL?
SQL, acronimul pentru "Structured Query Language", este limbajul standard pentru comunicarea cu bazele de date. Comenzile SQL Stintfolosite pentru a interactiona eu baza de date (de exemplu sa adauge, sa modifiee sau sa ~tearga datele). Alte sisteme de haze de date care folosesc SQL stint Microsoft SQL Server, Access, Oracle, Sybase, etc. CHIPSPECIAL SITE DINAMIC -

Rezultatul unei COLUMNS.

interogari

SHOW

Nu este nici un label in baza de date test.

..
\

Interogarile SQL se pot scrie pe mai multe randuri cu conditia ca ultima linie sa se incheie cu punct ~i virgula. comanda SHOW TABLES. 0 aWi utilizare a lui SHOW este SHOW COLUMNS care afi~eaza informatii despre coloanele unui tabel.

CREATE ~i DROP
Am spus ca yom face 0 baza de date specialpentru site-ul magazinului nostru de carti. Sa trecem atunci la ITeaM.Vom scrie in linia de comanda:

CREATE TABLE tabeUest2(campl TEXT, camp2 INT, camp3 TINYINT); In imaginea alaturata putem vedea mai multe informatiidespre fiecare camp. Sa Ie analizam: - prima coloana, Field, este numele campului; - a doua, Type, este tipul de date continut de camp. TEXT inseamna ca datele de pe coloana respectiva vor fi texte, INT ca vor fi numere intregi ~i TINYINT ca in coloana respectiva vor fi introduse doar numere illITe-128 ~i 127; - in a treia daca este NULL sau nu, a patra, Key arata daca este index, in a cincea, Default Value, este specificata valoarea implicita :;;i ltima coloana arata u ce alte proprietati mai are campul. Sa revenim la magazinul nostru de carti, sa recapitulam datele de care avem nevoie in site :;;isa incercam sa Ie organizam logic. Fiecare carte are un autor, un titlu :;;i0 scurta descriere. Toate sunt de tip text, deci a:;;avor fi :;;itipurile de campuri aferente lor:

.
INSERT
Haideti sa introducem cateva date in tabelul carti. Comanda pe care 0 yom folosi este INSERT :;;isintaxa este: In romane:;;te aceasta comanda s-ar traduce "introdu in campull valoareal, in campul2 valoarea2 :;;iin campu13 valoarea3", iar in format tabelar ar arata in felul urmator: Sa trecem la treaba :;;isa exersam comanda INSERT: Am pus ghilimele in jurul fiecarei valori ce urmeaza a fi introduse pentru a stabili ca acela este un text unitar, un string de introdus in campul respectiv. Imaginati-va cam cum ar interpreta serverul comanda noastra daca am scrie numele autorului in forma Shakespeare, William. Atunci textul interogarii ar fi: INSERT INTO carti(autor, titlu) VALUES(Shakespeare, William, Hamlet) :;;iserverul MySQL fie-aT returna urmatoarea eroare: "Column count doesn't match value count at row 1" deoarece se a~teapta ca pentru doua coloane sa aiM de introdus tot doua valori separateprill virgula, nu trei. Daca am fi specificat ca vrem sa introducem valori in toate cele trei coloane am fi primit alt mesaj de eroare deoarece MySQL nu ar fi recunoscut textul 'Shakespeare' ca fiind string :;;is-ar fi oprit din executie. Daca dorim, putem sa omitem una din coloane ca in exemplul urmator unde nu adaugam nimic in campul descriere:

Serverulne afi~eaza"Query OK" deci baza de date a fast creata. Va trebui sa mai spunem serverului ca aceasta este baza de date cu care urmeaza sa interactionam in continuare: In cazul in care nu a fast semnalata nici 0 eroare, tabelul nostru a fast creat. Sa verificam, de dragul exercitiului, acest lucru, cu comenzile SHOW TABLES :;;i SHOW COLUMNS. Pentru a :;;tergeun tabel, 0 baza de date, un index sau 0 coloana dintr-un tabel folosim comanda DROP astfel:

Am putea sa folosim interogarea SHOW TABLES ~iaici, insa ea nu fie-aT arata mai mult dedit ~tim deja: ca noua baza de date nu are inca nici un tabel. Sa facem, deci, until:

Tema: executati comenzile SHOW TABLES ~i SHOW COLUMNS pentru nouabaza de date ~itabelulproaspat creat. Sa luam cuvant cu cuvant propozitia: CREATE TABLE tabeUest(camp_test TEXT) inseamna "creeaza tabelul tabel_test cu un camp numit camp_text al carui tip este TEXT. Pentru a afla ce este tipul de date ~i la ce folose~te consultati oglinda "Tipuri de date". Sa facem inca un tabel, cu trei coloane:

De:;;i ySQL are suportpentru diacritiM ce :;;i etul de caractere 8859-2, este prefes rabil sa nu folositi diacritice in numele bazelor de date, tabelelor sau campurilor. De asemenea,nu puteti folosi ca nume de tabel sau de camp cuvintele rezervate (nume de functii, tipuri de caractere din MySQLprecum create,drop sau column). Ar mai trebui sa :;;titica puteti folosi nume de tabele care cantin spatii dar in practica trebuie sa incadrati numele illITe back-ticks" (semnul back-tick il gasiti pe tasta aflata imediat sub Escape):

Campurile ~i tipul de date con1inut de acestea din tabelul tabeUest2.


CHIP SPECIAL - SITE DINAMIC

-..---

.
I Ii

)_

. n

Sintaxa lui INSERT poate fi simplificata daca luam in calcul toate campurile tabelului deoarece Ie putem omite, mentionand doar valorile ce urrneaza a fi adaugate ca in exemplul urrnator:

I!

Observam ca nu am mai specificat coloanelein care urrneaza sa introducem date, sintaxa fiind astfel mult simplificata. Daca dorim sa beneficiem de sintaxa prescurtata pentru INSERT dar nu avem0 valoare pentru un camp, putem sa nu punem nimic intre ghilimelele care delimiteaza valoarea respectiva, ca in exempleleurrnatoareunde nu introducem nici un text (sau un text gal, daca vreti sa ii spuneti a~a) in campul descriere:

I I

Tema: Adaugati folosind INSERT inca 5 caqi in tabel specificand titlul, autorul ~ieventual 0 scurta descriere.

SELECT
!I

Acum avem baza de date, avem ~i cateva date introduse... dar cum Ie vedem? Vom folosi SELECT, cea mai importanta comanda SQL ~iii yom vedea cateva din utilizari in exemplele urrnatoare. Am aflat cum putem vedea ce tabele Stint intr-o baza de date, hai sa aflam ~i ce contine un tabel. Sa luam primul tabel dinIacut de noi ~isa afi~am datele din el:
SELECT

Ne va fi retumat urrnatorul mesaj:

Empty set inseamna ca tabelul nu contine date, e gal. Numarul din paranteze reprezinta secundele care i-au luat serverului ca sa retumeze un rezultat. Sa incerCHIP SPECIAL - SITE DINAMIC

~ ""-

dim cu ceUilalttabel, in care ~timsigur di am introdus date ~i sa vedem cum arata acestea:

Avem suficiente date pentru a afla cateva utilizari noi ~i foarte interesante ale comenzii SELECT. Putem adauga conditii de selectie ~iputem astfel alege sa ne fie afi~ate doar titlurile cartilor de Mihai Eminescu, astfel:

tabel). lata cum functioneaza LIKE ~i wildcardul %:

Acum putem vedea foarte clar structufa ~i continutul tabelului. Asteriscul * din SELECT * FROM cacti este echivalentullui "tot/to ate", jar comanda s-ar traduce in limba romana "arata- mi tot din tabelul test". Asteriscul 11putem inlocui cu numele unui camp pentru a vedea doar continutul acelui camp. Astfel:

Vor afi~atetoate imegistrarile in care titlul ciirtii incepe cu cuvantul "poezii".

ne va afi~adoar continutul campului titlu:

Sa afi~am toate volumele de poezii din baza de date, indiferent de autor. Daca executam interogarea:

MySQL trateaza toate valorile dintr-un camp de tip TEXT ca fiind case-insensitive astfel incat nu va trebui sa tineti coni de literele mari sau mici atunci cand va referiti intr-o interogare la valoarea unui camp. Comanda:

ne va retuma doar cartea al carui titlu este chiar "Poezii", neluandu-Ie pe celelalte in considerare:

va afi~a toate imegistrarile in care titlul ciirtii se termina cu cuvantul "poezii":

Putem selecta sa ne fie afi~ate mai multe coloane, specificate de noi, in orice ordine (nu neaparat in ordinea in care se afla in tabel), ca in interogarea urmatoare unde afi~am coloanele titlu ~iautor: Folosind conditia titlu='Poezii' nu vor fi afi~ate volumele 2 ~i3 din colectia de poezii de Mihai Eminescu ~inici cartea intitulata "Fire de tort Poezii" de Co~buc. Daca vrem sa obtinem toate ciirtile care au cuvantul "poezii" in titlu putem face acest lucru inlocuind egalitatea cu operatorul LIKE ~i folosind wildcard-uri. Semnul cu functie de wildcard intr-o interogare MySQL este % (semnul * cu care probabil sunteti deja obi~nuiti este definit in SQL ca insemnand tot/toate ~i I-am folosit deja atunci cand am utilizat SELECT * FROM cacti pentru a afi~a toate imegistrarile din volumele Poezii de Mihai Eminescu ~i Fire de tort - Poezii de George Co~buc. Similar,

Putem afi~a cartile pentru pentru care campul descriere este gal astfel:

va afi~a toate imegistrarile in care titlul cartii contine cuviintul "poezii" oriunde in cadrul textului. Putem extinde comanda SELECTpentru a adauga un nOlicriteriu de selectie. Daca dorim sa alegem toate cartile de poezii de Mihai Eminescu f'ara sa ne fie afi~at~iromanul scris de acesta sau cartea de poezii a lui George Co~buc, yom trimite caire baza de date 0 interogare cu doua criterii: "returneaza-mi to ate imegistrarile unde autorul este Mihai Eminescu ~ititlul cartii contine cuviintul poezii".

CHIP SPECIAL - SITE DINAMIC

Dadi vrem sa alegem toate carj:ile care nu stint scrise de Mihai Eminescu foloSill operatorul de inegalitate (semnul !=, opus lui =):

autorii din tabel in ordine crescatoare:

Pentru a limita numarul de rezultate retumate, folosim instructiunea LIMIT. Daca avem 10000 de imegistrari ~i nu dorim sa vedem decat primele 3, folosim LIMIT in felul urmator:

IJ

Daca dorim sa vedem imegistrarile de la 3 la 7:

iar pentru imegistrarile de la 10 la 15:


Putem avea mai multe criterii de ordonPutem gasi to ate titlurile carj:ilor pentru care campul descriere este gal astfel: are, ca in exemplul urmator uncle ordonarea se face dupa autor ascendent ~i, pentru fiecare autor, ciirj:ile soot ordonate dupa titlu descendent:

Observam ca primul numar din LIMIT este imegistrarea de la care se incepe afi~area~ialdoileanumar este numarul de imegistrari ce urmeaza a fi retumate.

Analog, folosind operatorul NOT LIKE putem alege toate carj:ile al caror titlu nu incepe cu litera P:

DELETE
Putem afla cate imegistrari Stintpentru un criteriu de selectie cu ajutorullui countO. Putem astfel afla cate imegistrari avem in total in tabel: DELETE se folose~tepentru ~tergerea imegistrarilor dintr-un tabel (ne reamintim ca pentru ~tergerea tabelelor ~ia bazelor de date se folose~teDROP). Sintaxa lui DELETE este:

II

sau cate imegistrari Stint in tabel al caror camp 'autor' este Mihai Eminescu:

A~a cum putem afi~a doar imegistrarile ce corespund conditiilor noastre, la tel putem conditiona ~i~tergerealor in functie de criteriile specificate.

Teme de rezolvat: - afi~atitoate titlurile carj:ilorde William Shakespeare; - afi~a!itoate titlurile care conlin litera T oriunde in textul titlului; - afi~a!iclaartitlurile ciiqilor ale ciiror autoricunumelecareseterminacu literaU; - afi~ati numele autorilor care nu se termina cu litera U; Putem folosi ORDER BY pentru a ordona rezultatele unei selectii, cresciitor sau descrescator, in functie de coloana aleasa pentru ordonare. lata, spre exemplu, cum putem afi~a
CHIP SPECIAL - SITE DINAMIC

afi~eaza toate carj:ile de Mihai Eminescu, in timp ce:

Cu ajutorul instructiunii GROUP BY putem "grupa" rezultatele astfel incat sa nu vedem duplicatele ~i sa vedem claar valorile unice. Sa vedem, folosind GROUP BY ce autori avem ~i sa ii ordonam crescator:

va ~terge din tabel toate imegistrarile pentru care campul autor este Mihai Eminescu, lasandu-le pe celelalte neatinse. Observiim dow lucruri: asteriscul a disparut, el fiind inutil. MySQL va ~terge un rand intreg la solicitarea dumneavoastrii, el nu va putea sa ~tearga (logic) 0 coloana sau mai multe aparj:inandunei imegistriiri.1n al

"

~~

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