Documente Academic
Documente Profesional
Documente Cultură
virtual
Coordonator:
Absolvent:
2007
Cuprins
Generaliti .................................................................................................................3
Cap. 1 Tema proiectului...............................................................................................7
Cap. 2 Descrierea aplicaiilor folosite...........................................................................8
2.1 Introducere n HTML................................................................................10
2.2 Introducere n CSS....................................................................................17
2.3.ComenziMySQL....................................................................................... 24
2.3.1 Tranzaciile MySQL folosind PHP...............................32
Cap. 3 Prezentare Site.......................................................................................................45
3.1.Structura bazei de date.................................................................................50
3.2. Administrare pagina....................................................................................52
3.3. Managementul categoriilor.........................................................................54
3.4. Adaugare anun...........................................................................................55
Concluzii...........................................................................................................................57
Anexa Cod Surs...............................................................................................................59
Bibliografie........................................................................................................................69
Generalitaii
Mai mult de 600 de milioane de oameni navigheaza pe internet. Cu ajutorul unui site web
te poi adresa acestor persoane, ii poi expune propria oferta de produse i servicii web la
un pret scazut, 24h /zi, 7 zile /saptamana!
De ce am nevoie de un site web?
Internetul a devenit o parte integranta a vieii de zi cu zi. Milioane de oameni acceseaz
zilnic situri din intreaga lume n cautare de noi i noi informaii care sa le satisfac
necesitaile. Un site web poate oferi companiei dumneavoastra o identitate prin care sa v
evidentiai pe aceast vast piaa de desfacere reprezentat de Internet.
Ce presupune realizarea unei pagini web?
Realizarea unei pagini web este un proces compus din mai multe etape strns legate intre
ele:
Consultant n aceat prima etap se discut scopul sitului, coninutul i
funcionalitatea sa.
Designul paginii web, presupune crearea stucturii de baz a sitului, scheletul pe
care se va aduga coninutul. n general acest lucru e reprezentat de crearea
structurii XHTML i a stilurilor CSS. De asemenea sistemul de navigaie se
implementeaz tot n acest stagiu.
Adugarea coninului util (texte, imagini) impreun cu editarea i adugarea
fiierelor media (imagini, animaii flash, sunete, video) ce vor fi incluse n site.
De obicei, n acest stagiu se face i optimizarea pentru motoarele de cautare
(optimizarea de baza).
Dac fiecare pagin ar avea un nume unic, atunci nu ar exista nici o ambiguitate n
identificarea paginilor. Totui, problema nu este nc rezolvat. S considerm de exemplu
o paralel ntre oameni i pagini. n SUA aproape fiecare persoan are un numr de
asigurare social; care este un identificator unic, astfel nct nu exist dou persoane cu
acelai numr. Totui, cunoscnd numai numrul respectiv nu exist nici o posibilitate de
a gsi adresa persoanei respective, i sigur nu se poate afla dac persoanei respective
trebuie s i se scrie n englez, spaniol sau chinez. Web-ul are practic acelai fel de
probleme.
Soluia aleas identific paginile ntr-un mod care rezolv toate trei problemele n acelai
timp. Fiecare pagin are un URL (Uniform Resource Locater - adresa uniform pentru
localizarea resurselor) care funcioneaz ca nume al paginii general valabil. Un URL are
trei componente: protocolul, numele DNS al mainii pe care este memorat fiierul i un
nume local, care indic n mod unic pagina (de obicei numele fiierului care conine
pagina). De exemplu, URL-ul departamentului din care face parte autorul este:
http://www.cs.vu.nl/welcome.html
Acest URL este format din trei componente: protocolul (http), numele DNS al serverului
(www.cs.vu.nd) i numele fiierului (welcome.html), cu semnele de punctuaie
corespunztoare.
Se utilizeaz notaii care reprezint prescurtri standard. De. exemplu user/ poate s fie
pus n coresponden cu directorul WWW al utilizatorului user, folosind convenia c o
referin la directorul respectiv implic un anumit fiier, de exemplu index.html. De
exemplu
pagina
autorului
poate
fie
referit
ca:
http://www.cs.vu.nl/~ast/
chiar dac de fapt numele fiierului este diferit. Pe multe servere un nume de fiier indic
implicit pagina organizaiei creia i aparine serverul.
Acum ar trebui s fie clar cum funcioneaz hipertextul. Pentru a face o poriune de text
selectabil, cel care scrie pagina trebuie s furnizeze dou elemente: textul prin care se
face selecia i URL-ul paginii care trebuie adus dac textul este selectat. Cnd se face
selecia, programul de navigare caut numele serverului utiliznd DNS-ul. Pe baza adresei
IP a serverului, programul de navigare stabilete o conexiune TCP spre server. Utiliznd
aceast conexiune, se transmite numele fiierului utiliznd protocolul specificat. Bingo.
Acum sosete pagina.
Protocolul http este protocolul nativ pentru Web; e1 este utilizat de ctre serverele de
HTTP.
Protocolul ftp este utilizat pentru accesul la fiiere prin FTP (File Transfer Protocol -protocol pentru transferul de fiiere), protocolul Internet de transfer de fiiere. FTP este
utilizat de peste douzeci de ani i este foarte rspndit. Numeroase servere de FTP din
toat lumea permit ca de oriunde din Internet s se fac o conectare i s se aduc orice
fiier plasat pe un server FTP. Web-ul nu aduce schimbri aici, face doar ca obinerea
fiierelor s se fac mai uor, pentru c FT'P are o interfa mai puin prietenoas. n viitor
probabil c FTP-ul va dispare, deoarece nu exist nici un avantaj pentru o organizaie s
aib un server de FTP n loc de un server de HTTP, care poate s fac tot ce face un server
de FTP, i chiar mai mult (desigur mai exist nite argumente legate de eficien).
Este posibil s se fac acces la un fiier local ca la o pagin de Web, fie utiliznd
protocolul file (fiier), sau pur i simplu utiliznd numele fiierului. Aceast abordare este
similar utilizrii protocolului FTP, dar nu implic existena unui server. Desigur
funcioneaz numai pentru fiiere locale.
{Protocolul news permite unui utilizator de Web s citeasc un articol din tiri ca i cum
ar fi o pagin de Web. Aceasta nseamn de fapt c un program de navigare este n acelai
timp i un cititor de tiri. De fapt multe programe de navigare au butoane sau elemente de
meniu care permit citirea tirilor USENET mai uor dect daca se utilizeaz cititoare de
tiri obinuite.
Protocolul news admite dou formate. Primul format specific un grup de tiri i poate sa
fie utilizat pentru a obine o list de articole de la un server de tiri preconfigurat. Al
doilea format cere identificatorul unui articol, de exemplu AA0134223112@csutah.edu.
Programul de navigare aduce articolul de la serverul corespunztor utiliznd protocolul
NNTP.
Protocolul gopher este utilizat de sistemul Gopher, care a fost proiectat la universitatea
Minnesota. Numele este cel al echipei atletice a universitii, the Golden Gopher, de
asemenea acest nume este utilizat n argou pentru go for; adic o comand de aducere
Gopher-ul a precedat Web-ul cu civa ani. Este o metod de regsire a informaiei,
similar conceptual cu cea utilizat de Web, dar acceptnd numai text i imagini. Cnd un
utilizator se conecteaz la un server de Gopher, va avea la dispoziie un meniu de fiiere i
directoare, fiecare intrare putnd s fie conectat la orice meniu de Gopher oriunde n
lume.
s existe mai multe copii pe servere diferite, pentru a reduce traficul n reea. Problema
este c URL-urile nu ofer nici o posibilitate de indicare a unei pagini fr s se specifice
unde este localizat pagina respectiv. Nu exist nici o metod pentru a spune ceva de
genul: Vreau pagina xyz, dar nu m intereseaz de unde o aduci. Pentru a rezolva aceast
problem i a permite multiplicarea paginilor IETF lucreaz la un sistem de URL
(Universal Resource Identifiers - identificatori universali de resurse). Un URL poate s fie
privit ca un URL generalizat. Acest subiect este n curs de cercetare.
CAPITOLUL 1
Tema proiectului
Proiectarea i realizarea unui Parc Auto virtual cu baz de date structurat n mysql
Din administrarea pagini trebuie sa poi adauga, sterge i modifica inregistrarile din baza
de date.
CAPITOLUL 2
Descrierea tehnologiilor
10
11
mai recent, HTML 4.01. n acelai timp, autorii de browsere cum ar fi Netscape i
Microsoft, au dezvoltat adesea propriile "extensii" HTML n afara procesului standard i
le-au ncorporat n browserele lor. n unele cazuri (cum ar fi tagul Netscape), aceste
extensii au devenit standarde de facto adoptate de autorii de browsere. Cnd navigatorul
ncarc un document HTML, el "citete" documentul n cutarea tag-urilor HTML,
formateaz textul i imaginea i le afieaz pe ecran. Este motivul pentru care acelai
document HTML apare uor diferit cnd este privit utiliznd navigatoare diferite. Stadiile
prin care trece un standard elaborat de W3C sunt:
1. Orice standard i ncepe aventura ca W3C Note.
2. De aici este preluat de ctre un grup particular de lucru (Working Group) i este
discutat pn cnd se ajunge la un consens.
3. n acest moment este publicat ca propunere (Working Draft) i n acest stadiu
oricine poate face comentarii.
4. n momentul n care se obine o susinere i un consens suficient de larg, directorul
W3C decide dac specificaia este gata s devin propunere oficial de
recomandare (Proposed Recommendation).
5. Urmeaz o perioad de 6 sptmni n care toi membrii W3C au sansa s voteze
aceast propunere de recomandare; votul nu este obligatoriu, putndu-se vota n 4
moduri diferite:
*da;
*da, sub rezerva unor mbuntiri;
*nu, pn cnd anumite sarcini nu sunt ndeplinite;
*nu, specificaia trebuie abandonat.
6. Charta W3C stipuleaz necesitatea obinerii consensului complet, astfel c fiecare
vot trebuie s fie un da fr rezerve.
7. Dac toi paii anteriori au fost ndeplinii, specificaia trebuie aprobat n final de
Director i se public sub forma unui standard (W3C Recommendation).
De ce HTML
12
Dar de ce a fost preferat HTML pentru publicaii pe Web, cnd pentru realizarea
publicaiilor electronice exist multe alte tehnologii? Primul motiv este simplitatea. Al
doilea este c permite formatarea textului ASCII cu tag-uri n format ASCII. Rezult de
aici o compresie bun, suport pentru legturi hipertext i uurina n a scrie navigatoare
pentru vizualizarea documentelor.
Varianta 2.0
HTML 2.0, elaborat n Iunie 1994, este standardul pe care ar trebui s-l suporte toate
browserele curente - inclusiv cele n mod text. HTML 2.0 reflect concepia original a
HTML ca un limbaj de marcare independent de obiectele existente, focalizndu-se pe
aezarea lor n pagin, n loc de a specfica exact cum ar trebui s arate acestea. Dac dorii
s fii siguri c toi vizitatorii vor vedea paginile aa cum trebuie, folosii tagurile HTML
2.0.
Varianta 3.0
Specificaia HTML 3.0, enunat n 1995, a ncercat s dezvolte HTML 2.0 prin adugarea
unor faciliti precum tabelele i un mai mare control asupra textului din jurul imaginilor.
Dei unele din noutile HTML 3.0 erau deja folosite de autorii de browsere, multe nu
erau nc oficializate. n unele cazuri, taguri asemntoare implementate de autorii de
browsere au devenit mai rspndite dect tagurile "oficiale". Specificaia HTML 3.0 a
expirat repede, deci nu mai este un standard oficial n prezent.
Varianta 3.2
n Mai 1996, W3C a scos pe pia specificaia HTML 3.2 , care era proiectat s reflecte
i s standardizeze practicile acceptate la scar larg. Deci HTML 3.2 include tagurile
HTML 3.0 care erau adoptate de autorii de browsere precum Netscape i Microsoft plus
noi extensii HTML.
13
n acest moment, HTML 4.0 este larg utilizat i au fost deja publicate specificaiile HTML
4.01. Limbajul HTML d proiectanilor de pagini web posibilitatea:
*s publice documente cu headere, texte, tabele, liste, fotografii, etc...
*s regseasc on-line informaii prin intermediul hiperlink-urilor accesate printr-un
simplu click de mouse
*s proiecteze formulare pentru realizarea tranzaciilor cu servere aflate la distan,
pentru cutri de informaie sau pentru activiti specifice comerului
*s includ foi de calcul tabelar, clipuri video, sunete i alte aplicaii direct n
documente.
Elementul esenial diferit adus de versiunea 4.0 i mai ales 4.01 fa de versiunea 3.2 este
posibilitatea separrii structurii unui document de prezentarea lui prin introducerea
stilurilor de documente (style sheet). Utiliznd limbajul HTML pentru structurarea unui
document i style sheet-urile pentru a stiliza prezentarea acestuia, proiectanii pot obine
mult mai usor independena de periferic/computer/platforma hard-soft, lucru care a facut
HTML-ul att de popular. Un document cu o structur complex poate fi prezentat n
diferite moduri pe medii diferite, permind documentului nsui s se adapteze mai uor
noilor tehnologii (cum ar fi, de exemplu, browserele capabile s vorbeasc, cititoarele
braille, etc...).
n plus, separarea coninutului de partea de prezentare permite modificarea nfirii
chiar a unui ntreg site doar prin modificarea unui style-sheet (a unui document care
descrie stilul). Experiena a demonstrat c o astfel de abordare poate reduce dramatic
costurile de deservire a unui spectru larg de platforme i probleme, facilitnd i o
intreinere ulterioar i modificri mult mai uoare.
HTML este utilizat pentru a structura informaia unei pagini web, pentru a stabili partea
de nceput, titlul, coninutul paginii i ncheierea pagini. Aceste informaii se realizeaz
prin tagurile HTML care explic browserului cum s afieze textul pe ecranul
14
Cod:
Pentru orice document web trebuie sa i se atribuie un tip. Acest tip este specificat n prima
linie a documentului. Este important pentru a se putea deosebi documentul de tip HTML
de cel de tip XHTML sau alte tipuri existente. Pentru documentele de tip HTML exista 3
tipuri i anume strict, transitional i frameset. n mare, documentele de tipul "strict"
exclud din prezentarea lor atributele i elementele cu suport pentru formatarea paginii
15
(CSS), cele "transitionale" includ i aceste atribute iar cele de tip "frameset" sunt n
general construite din mai multe buci (frame)
Urmtoarea linie conine un tag care anun browserul c ncepe un document n format
HTML.
Linia urmtoare specific partea de sus a documentului, antetul (head). n aceast parte
sunt incluse diferite informaii cum ar fi titlul paginii sau diferite taguri care spun
bowserului anumite informaii despre pagina curenta. Aceste taguri sunt cunoscute sub
numele de meta-taguri i au o importan mai mare dect tagurile normale. n cazul
exemplului de mai sus este specificat un meta-tag care spune browserului ce tip de
caractere sunt folosite n pagina curent (este util n cazul n care scriei pagini n mai
multe limbi, browserele i motoarele de cutare vor ti s afieze caracterele din acele
pagini).
Urmtoarea linie din cadrul antetului este linia care conine titlul paginii curente. Este de
preferat ca fiecare pagin de web s aib un titlu ct mai sugestiv (util n cadrul
motoarelor de cutare, dar i dac vrei sa tiprii pagina la imprimant)
Tagul urmtor este un tag de nchidere, i anume se specific browserului c acolo se
termina partea de antet a documentului. Dup antet, urmeaz coninutul efectiv al
documentului, care este specificat prin tagul de deschidere <body>
ntre acest tag i pn cnd browserul ntlneste tagul de nchidere </body> se poate pune
coninutul efectiv al paginii, i anume text, taguri de formatare a textului, elemente de
aranjare n pagin precum i hipertext
Ultima linie din document trebuie sa fie ntotdeauna tagul de nchidere al documentului
HTML i anume tagul </html>
Un document html se poate scrie n orice tip de editor de texte care tie s salveze textul
neformatat (gen Notepad, dar nu i Word care preformateaz textul). Documentele HTML
16
de obicei au extensia .htm sau .html dar pot fi i alte extensii cum ar fi .dhtml sau .xml sau
.php Desigur alte extensii sunt date de tipuri diferite de documente HTML, despre care am
sa vorbesc pe masur ce discutm despre ele. Dup crearea unei pagini, pentru a verifica
dac este compatibil cu standardul, se poate verifica la adresa http://validator.w3.org/
unde gsii un validator automat care verific structura i corectitudinea sintaxei paginii.
17
extern, modificm simultan toate paginile web n care acesta e inclus. Se pot crea efecte
mai sofisticate dect cele produse de codul HTML: suprapunerea unei imagini peste alt
imagine, a unui text peste alt text, impresia de relief, efectul hover, afiarea unor fonturi
mai mari dect h1 etc.
CSS este foarte util n Web design, deoarece le permite developerilor s controleze stilul
i chenarul mai multor pagini web n acelai timp. Ca web developer putei defini un stil
pentru fiecare element HTML i s-l aplicai ctor pagini web doriti. Pentru a face o
schimbare global, schimbai stilul i toate elementele din paginile web vor fi modificate
automat.
Dezavantaj lucrri cu CSS este c pagina coninnd cod CSS poate arata diferit n
navigatoare diferite, deoarece nu toate browserele interpreteaz codul CSS la fel.
Adugnd cod JavaScript, se obtin efecte i mai sofisticate, chiar de animatie. CSS +
JavaScript = DHTML (Dynamic HTML). Aceste efecte spectaculoase justific titulatura
de "artiti CSS" sau "artizani CSS" acordat unor creatori de pagini web.
Foile de stil dau posibilitatea specificrii informaiei despre stil n mai multe feluri.
Stilurile se pot specifica ntr-un singur element HTML, n interiorul elementului <head>
al unei pagini HTML sau ntr-un fiier extern CSS. Dintr-un singur document HTML se
pot face referiri ctre mai multe foi de stil externe. Deci, un stil din interiorul unui element
HTML are cea mai mare prioritate, ceea ce nseamn c va suprascrie fiecare stil declarat
n tagul <head>, ntr-o foaie de stil extern i n browser.
n documentul HTML, codul CSS poate fi introdus n mai multe moduri:
Codul CSS e prezent n pagina web, iar efectul su se aplic asupra ntregului document.
18
Consecin: Orice text cuprins ntre <b>i </b> va fi afiat cu rou, oriunde s-ar afla n
document.
Orice
text
afiat
cu
italice
va
fi
de
culoare
albastr.
Se observ c nu mai avem, n acest caz, o etichet <style>, ci un atribut style al etichetei
<a>. Orice etichet HTML poate beneficia de acest atribut. Pentru formatarea unor
poriuni mari de text, putei folosi containerele div sau span. Totui, aceast abordare nu
satisface principiul separrii codului CSS de textul afisat n browser.
3 Codul CSS se afl ntr-un fiier extern, cu extensia css. Efectul su se aplic ntregului
document.
19
Fiierul extern poate fi scris n Notepad i salvat cu extensia css. Includerea sa n pagina
web se face folosind tag-ul <link>, care trebuie s se afle ntre <head>i </head> (n
antetul
paginii).
20
Cod:
<html>
<head>
<style>
@import url(http://www.cartomatica.net/fis/x.css);
</style>
</head>
<body>
</body>
</html>
Importul trebuie declarat imediat dup tag-ul <style>, naintea oricrei alte linii de cod. n
exemplul alturat, s-a realizat importul n pagina curent a fiierului x.css din directorul
fis al sitului www.cartomatica.net. Desigur, fiierul importat poate avea i o adres
relativ.
Sintaxa CSS este alctuit din trei pri: un selector, o caracteristic i o valoare.
Selectorul este elementul/tagul pe care vrei s-l definii, caracteristica este atributul pe
care dorii s-l schimbai i fiecare caracteristic poate lua o valoare. Caracteristica i
valoarea sunt separate de semnul (:) i sunt ncadrate de acolade:
Cod:
body {color: black}
Dac dorii s specificai mai mult de o caracteristic, trebuie s separai fiecare
caracteristic cu semnul (;). Exemplul de mai jos arat cum s definii un paragraf aliniat
central, cu culoarea roie a textului:
21
Cod:
p {text-align: center; color: red}
Pentru a ntelege mai bine aceasta definiie de stil, putei descrie o caracteristic pe fiecare
rnd, ca n exemplul urmtor:
Cod:
p{
text-align: center;
color: black;
font-family: arial
}
Atributul class
Cu acest atribut putei defini stiluri diferite pentru acelai element. S zicem c vrei dou
tipuri de paragrafe n documentul dvs: unul aliniat la dreapta i unul centrat. Iat cum
putei face asta cu stiluri:
Cod:
p.right {text-align: right}
p.center {text-align: center}
Trebuie s folosii atributul class n documentul dvs. HTML:
Cod:
<p class="right">
22
23
Pentru pornirea serverului de MySQL din Windows trebuie s rulai fisierul mysqld.exe
aflat (dac sa fcut instalarea standard) n c:\mysql\bin\mysqld.exe pe Windows 95/98 sau
c:\mysql\bin\mysqldnt.exe pe NT/2000/XP.
Dac vrei ca serverul de MySQL s porneasc automat la fiecare repornire a Windowsului, putei aduga un shortcut n Start Menu/Start up. Este recomandat ca pe Windows
NT/2000/XP
setai
serviciul
MySQL
porneasc
automat.
n cazul n care dorii s verificai dac serverul MySQL este pornit, scriei urmatoarea
linie de cod n comand prompt:
c:\mysql\bin\mysqladmin version status proc
La Windows NT4 trebuie s avei instalat Service Pack 3 minim ca s ruleze MySQL. Mai
are nevoie i de protocolul TCP/IP.
Dac atunci cnd accesai adresa http://localhost nu se vede o pagina trimis de server (de
obicei conine mesajul "If you can see this, if means that the installation of the Apache
web server software on this system was successful."), verificai nti dac serverul este
pornit i dac nu cumva avei alt server HTTP (PWS, IIS) care ruleaz.
La Windows 95 trebuie s descrcai i s instalai Windows Socket 2 Update de la
Microsoft nainte de a ncepe instalarea Apache. Windows NT 4.0, 98, ME i 2000 nu au
nevoie de acest update.
24
Cu Windows XP, ca s ruleze serverul Apache trebuie s fie instalat Windows XP Service
Pack 1 (minim).
MySQL este cel mai popular sistem de management pentru baze de date relaionale
deoarece este Open Source (cu surse deschise). ntr-o baz de date relaional datele sunt
stocate n mai multe tabele separate, fiind astfel mbuntit viteza i flexibilitatea.
Tabelele pot fi legate ntre ele prin relaii definite de noi, fiind astfel posibil s combinm
la cerere datele din mai multe tabele.
SQL, acronimul pentru "Structured Query Language", este limbajul standard pentru
comunicarea cu bazele de date. Comenzile SQL sunt folosite pentru a interaciona cu baza
de date (de exemplu s adauge, s modifice sau s stearg datele). Alte sisteme de baze de
date care folosesc SQL sunt Microsoft SQL Server, Acces, Oracle, Sybase, etc.
Pentru a ne putea face o baz de date trebuie ca serverul MySQL s fie pornit. n
continuare va trebui s folosim o aplicaie cu ajutorul creia s comunicm cu serverul.
Aplicaia se numeste mysql.exe i se gsete n c:\mysql\bin\. Pentru a rula, din prompul
MSDOS scriem: "c:\mysql\bin\mysql.exe -p -u root" iar cnd ni se cere parola apsm
ENTER (sau scriem parola dac am introdus la instalare vreuna). Dac serverul nu este
pornit vom primi mesajul de eroare "Can't connect to MySQL server on 'localhost'".
25
Cele mai frecvent utilizate comenzi MySQL sunt prezentate n coloana de mai jos. Ele
sunt mult mai multe, dar aici nu doresc dect s fac o scurt prezentare, urmnd ca voi s
studiai n detaliu comenzile utiliznd manualul oficial pe care l gsiti la adresa
http://dev.mysql.com/doc/.
SHOW DATABASES;
USE numele_bazei_de_date
existente
# alegerea bazei de date cu care lucrm n
SHOW TABLES;
SHOW COLUMNS;
continuare
# afieaz tabelele existente n baza curent
# afieaz informaii despre coloanele unui
tabel
CREATE DATABASE numele_bazei;
# creaz o baz de date cu numele respectiv
CREATE TABLE tabel_unu (camp_a# creaz tabelul 'tabel_unu' cu un cmp
TEXT);
numit 'camp_a' al crui tip este TEXT
CREATE TABLE tabel_unu (camp_a TEXT,# creaza tabelul 'tabel_unu' cu un cmp
camp_b INT, camp_c TINYINT);
numele
'numele_bazei'
INSERT INTO tabel (camp1, camp2, camp3) # introduce n tabelul cu numele 'tabel', n
VALUES (valoarea1, valoarea2, valoarea3); 'campul1'
'valoarea1',
'campul2'
INSERT
INTO
tabel
(camp1,
campul1
campul2
campul3
valoarea1
valoarea2
valoarea3
camp2)# Se poate omite una din coloane, dac avem
5 coloane, dar vrem s introducem numai n
3, specificm cmpul i valoarea doar pentru
26
doar
cnd introducem
valori
toate
numele 'tabel'
# afieaz coninutul cmpului 'campul1' din
tabelul 'tabel'
# afieaz coninutul cmpurilor 'campul1' i
FROM
campul1=valoare1 AND
tabel
n cadrul textului.
WHERE# afieaz toate cmpurile care conin
'%valoare2%';
SELECT campul1, campul2 FROM tabel# caut i afieaz toate cmpurile care difer
WHERE campul1 != valoarea3;
de 'valoarea3'
SELECT campul1, campul2 FROM tabel# caut i afieaz toate cmpurile care nu
WHERE campul2 NOT LIKE 'valoarea3%'; ncep cu 'valoare3'
SELECT campul1 FROM tabel ORDER BY# afieaz coninutul cmpului 'campul1' n
campul1 ASC;
ordine cresctoare
SELECT campul1, campul2 FROM tabel# afieaz coninutul cmpului 1 n ordine
27
cmpul
ordine
descresctoare.
# afieaz cte nregistrri sunt n total n
tabel
SELECT count (*) FROM tabel WHERE# cte nregistrri sunt n tabel al cror
campul1=variabila1;
'camp1' este 'variabila1'
SELECT camp1 FROM tabel GROUP BY # afieaz coninutul cmpului 1 grupat dup
camp1 ORDER BY camp1 ASC;
SELECT * FROM tabel LIMIT 0,3;
'camp1' ascendent
# afieaz din tabel ncepnd de la prima
nregistrare nc 3.
# afieaz ncepnd de la nregistrarea 10
Dei MySQL are suport pentru diacritice i setul de caractere 8859-2, este preferabil s nu
folosii diacritice n numele bazelor de date, tabelelor sau cmpurilor. De asemenea, nu
putei folosi ca nume de tabel sau de cmp cuvinte rezervate (nume de funcii, tipuri de
caractere din MySQL precum CREATE, DROP sau COLUMN). Se pot folosi nume de
tabele care conin spaii dar n practic trebuie s ncadrai numele ntre back-ticks `
(semul ` il gsii pe tasta aflat imediat sub Escape i nainte de 1).
28
Exemplu:
CREATE
TABLE
`tabel
al
carui
nume
are
spatii`
(`camp
1`,
TEXT);
29
INDECSI - Cel mai folosit tip de index este id-ul. Id-ul este un numr unic de identificare
pentru un element distinct (un rand) al unui tabel. Un exemplu de id din viaa real este
numerotarea cd-urilor. Cnd avei un cd nou l numerotai i l punei n raft la sfrit iar n
catalog putei s l punei sortat dupa titlu sau dup numrul de ordine. La fel i ntr-o baz
de date, putei crea un cmp care s introduc automat un nr pentru fiecare rnd nou
adugat n baza de date i la afiare putei s l folosii (de exemplu la vizualizarea
ultimilor 10 vizitatori folosii id-ul).
Pentru a creea un index avem urmtoarele comenzi:
S zicem c avem o baz de date numit lista cu un cmp caseta i adugm cmpul
id_casete - comanda este urmtoarea:
ALTER TABLE `caseta` ADD `id_caseta` INT;
ALTER TABLE `caseta` CHANGE `id_caseta` `id_caseta` INT(11) UNSIGNED NOT
NULL;
ALTER TABLE `caseta` ADD PRIMARY KEY (id_caseta);
ALTER TABLE `caseta` CHANGE `id_caseta` `id_caseta` INT(11) UNSIGNED
DEFAULT "0" NOT NULL AUTO_INCREMENT;
i din acest moment, orice caset nou introdus va avea automat un nr de ordine. Este
posibil ca toat niruirea de comenzi de mai sus s se poata face printr-o singur linie de
cod, dar este mai sigur s facei cte o modificare n parte dect toate odat, pentru a
detecta eventualele erori. Este bine s creai un id la nceputul tabelului, cnd nu avei
ntrri n baza de date, pentru a face incrementarea automat, altfel e posibil s v dea erori.
Cu ajutorul id-ului putei afia de exemplu noutaile, cu o comand de genul - afieaz
ultimele 10 intrri sortate dup id..., tiind c ntotdeauna ultima intrare are numarul cel
mai mare...
Ct de mare poate fi un tabel?
MySQL stocheaz fizic datele unui tabel ntr-un fiier pe hard disc i cu ct tabelul e mai mare, cu
att mrimea acestui fiier crete. Versiunea 3.22 a MySQL are o limit de 4 GB pentru mrimea
unui tabel. n versiunile superioare aceast limit este extins pn la 8 milioane TB pentru tipul
de tabel MyISAM. Cu toate acestea, sistemele de operare pot avea propriile limitri ale mrimii
30
fiierelor. Mrimea impicit a tabelelor MySQL este de aproximativ 4 GB. Putei verifica
mrimea maxima pentru un tabel cu ajutorul comenzilor SHOW TABLE STATUS sau
31
32
+---------+-------------+
|
5 | utilizator5 |
6 | utilizator6 |
+---------+-------------+
2 rows n set (0.00 sec)
mysql> Insert into useri(user_name) values ('utilizator7');
Query OK, 1 row affected (0.00 sec)
mysql> Insert into useri(user_name) values ('utilizator8');
Query OK, 1 row affected (0.00 sec)
mysql> rollback;
Query OK, 0 rows affected (0.01 sec)
mysql> Select * from useri; //tabela ramane goala,
deoarece sa dorit renuntarea la inregistrarile anterioare
prin executia lui rollback
Empty set (0.00 sec)
mysql> Start transaction;
Query OK, 0 rows affected (0.00 sec)
mysql> Insert into useri(user_name) values ('utilizator9');
Query OK, 1 row affected (0.00 sec)
mysql> Insert into useri(user_name) values ('utilizator10');
Query OK, 1 row affected (0.00 sec)
mysql> Insert into useri(user_name) values ('utilizator11');
Query OK, 1 row affected (0.00 sec)
33
mysql> commit;
Query OK, 0 rows affected (0.03 sec)
mysql> Select * from useri; // tabela contine inregistrarile
deorece s-a executat commit.
+---------+--------------+
| user_id | user_name
+---------+--------------+
|
9 | utilizator9
10 | utilizator10 |
11 | utilizator11 |
+---------+--------------+
3 rows n set (0.00 sec)
mysql> quit
Motivaii pentru folosirea tranzaciilor
Cteva motive pentru care folosirea tranzaciilor i gsesc justificare ar putea fi:
Necesitatea de a realiza operaii atomice - presupune situaia n care se dorete ca mai
multe operaii separate, s se execute mpreun, ntr-o maniera atomic. Aceast abordare
este util, spre exemplu, n cazul n care dorim s facem modificri asupra mai multor
tabele aflate eventual n baze de date diferite pe maina local sau n reea, modificri care
i au locul doar fcute mpreun. Mai particular, putem da drept exemplu cazul
transferului de bani dintr-un cont n altul, transfer care presupune c, o dat suma de bani
citit i modificat din contul surs, s fie scris i n contul destinaie. Dac operaia nu
decurge n mod atomic, se va ntmpla, spre exemplu, ca suma s nu fie transferat efectiv
34
35
n cazul folosirii tranzaciilor, un numr de patru principii sunt totdeauna garantate pentru
operaiile efectuate. Aceasta poart i numele de proprietile ACID ale tranzaciilor,
denumire care vine de la abrevierea celor patru nume de proprieti: Atomicitate,
Consisten, Izolare i Durabilitate.
Atomicitate - garanteaz c mai multe operaii sunt grupate mpreun i apar ca o singur
unitate continu de lucru. De asemenea, atomicitatea garanteaz c mai multe operaii
sunt executate toate odat sau nici una.
Consisten - garanteaz c starea sistemului rmne consistent dup ce o tranzacie este
terminat. Prin stare consistent se nelege o stare n care sistemul respect o anumit
regul sau, mai general anumite reguli. Sistemul poate trece prin stri temporare de
inconsisten, dar, n final, tranzaciile garanteaz consistena sistemului.
Izolare - permite ca mai muli clieni s citeasc i s scrie ntr-o baza de date fr s tie
unul de altul, deoarece tranzaciile sunt izolate una de alta. Este metoda prin care se
rezolv problemele legate de partajarea resurselor. Acest lucru este util pentru cazul mai
multor clieni care acceseaz baza de date n acelai timp, fiecare avnd impresia c el
este singurul conectat. Tranzaciile asigur blocri automate ale datelor sesibile, care
asigur c o dat ce un client acceseaz zona sensibila (critic), nimeni altcineva nu mai
poate face acest lucru. nc odat trebuie remarcat faptul c, prin folosirea tranzaciilor,
programatorii nu mai trebuie s scrie cod pentru tratarea concurenelor multiple, deoarece
de acest lucru se ocup DBMS-ul. Tot ce trebuie s facem este s specificm tipul de
acces.
Durabilitate - garanteaz c toate actualizrile permanent salvate folosind "commit"
supravieuiesc cderilor de sistem, erorilor de reea, cderii ale hard diskului sau cderilor
de tensiune. Acest lucru este posibil datorit faptului c tranzaciile pstreaz un fiier de
siguran n care sunt nregistrate toate operaiile asupra bazelor de date, nainte ca acestea
s fie efectiv comise. Datele salvate permanent pot fi astfel reconstituite prin reaplicarea
pailor salvai n acest fisier.
36
Niveluri de izolare
Nivelurile de izolare necesit o abordare mai special, mai atent, din partea
programatorilor, tocmai datorit problemelor ce apar n momentul partajrii acelorai
resurse de ctre mai muli clieni.
Programatorul aplicaiei poate specifica nivelul de izolare al tranzaciilor efectuate.
Izolarea poate fi strict sau relaxat. O izolare strict determina separarea total a
tranzaciilor, care se realizeaz prin restricii impuse asupra datelor din tabelele bazei,
soldate cu o scdere a performanelor. De aceea trebuie ales cu grij nivelul de izolare de
care este nevoie.
Care sunt nivelurile de izolare?
READ UNCOMMITTED - Nu ofer nici un fel de izolare, dar garanteaz performane
nalte n ceea ce privete viteaza de acces. Acest nivel de izolare nu este indicat n cazul
conexiunilor concurente i, mai ales, n cele cu date sensibile, cum ar fi sistemul bancar,
din cauza problemelor inevitabile care pot aprea.
READ COMMITTED - Rezolv problema citirilor murdare. Folosind acest nivel de
izolare, nu se vor citi datele care au fost modificate n tabela accesat, fr a fi salvate
definitiv prin "commit".
REPEATABLE READ - Rezolv problemele citirii murdare i citirii nerepetabile. Acesta
este nivelul de izolare implicit pentru servere ca Oracle i MySQL.
SERIALIZABLE - Rezolv problemele citirii murdare, citirii nerepetabile i problema
fantomei. Folosind acest nivel de izolare, tranzaciile sunt izolate total, ceea ce nseamn
37
ca ele se vor executa secvenial, independent una fa de alta. Alegerea acestui nivel va
determina ncetinirea simitoare a tranzaciilor concurente.
Gata cu teoria, hai s vedem cum putem folosi tranzaciile n codul nostru php. Am creat o
clas care ca i utilizare este asemntoare cu folosirea tranzaciilor n .NET i JAVA.
Fiier transaction.php - instanierea i folosirea acestei clase se poate face corect doar dac
avei versiunea PHP 5.X
Cod:
<?php
class tranzactii{
public $conexiune;
private $tablou_interogari;
public $tablou_rezultate;
private $execut=false;
function tranzactii($host,$user,$parola){
$this->conexiune=mysql_connect($host,$user,$parola);
}
public function start($nivel_izolare=3){
if($this->conexiune!=NULL){
if($nivel_izolare==1){
mysql_query('set transaction isolation level
read uncommitted',$this->conexiune)
or die(mysql_error($this->conexiune));
}
elseif($nivel_izolare==2){
mysql_query('set transaction isolation level
38
read committed',$this->conexiune)
or die(mysql_error($this->conexiune));
}
elseif($nivel_izolare==3){
mysql_query('set transaction isolation level
repeatable read',$this->conexiune)
or die(mysql_error($this->conexiune));
}
else{
mysql_query('set transaction isolation level
serializable',$this->conexiune)
or die(mysql_error($this->conexiune));
}
mysql_query('Start Transaction',$this-
>conexiune)
or die(mysql_error($this->conexiune));
}
}
private function pastreaza(){
mysql_query('Commit',$this->conexiune);
}
private function renunta(){
mysql_query('Rollback',$this->conexiune);
}
public function rezultat(){
return $this->execut;
}
39
40
}
}
else{
$this->execut=false;
$this->tablou_rezultate[]=array('SQL
No.'=>$keye,
'DB'=>$valoare[0],'SQL phrase'=>$valoare[1],'SQL
result'=>'No result',
'Error'=>'Am intalnit o problema la selectarea bd-ului');
}
}
if($this->execut==true){
$this->pastreaza();
}
else{
$this->renunta();
}
}
}
catch(Exception $e){
$this->execut=false;
$this->tablou_rezultate[]=array('Exceptie'=>$e>getMessage());
}
}
41
42
SQL dorita.
// Aceasta interogare SQL are sintaxa corect scrisa.
$conexiune->adauga(array('java','Insert into studenti
(nume_student) values (\'Diesel\')'));
// se adauga a doua interogare SQL. Aceasta interogare SQL
are sintaxa incorect scrisa.
$conexiune->adauga(array('java','Insert into studenti
(\'Diesel\')'));
// se executa interogarile SQL adaugate. Prima interogare
SQL este corect scrisa, n consecinta ea va fi executata cu
succes.
// A doua interogare SQL este incorect scrisa, n
consecinta ea nu va fi executata cu succes,
// acest lucru determinand executarea lui rollback. Deci
ambele interogari sql nu sunt salvate n bd.
$conexiune->executa();
// $conexiune->rezultat() ne returneaza TRUE sau FALSE n
functie de rezultatul executiei interogarilor SQL.
// Daca cel putin o interogare SQL nu este executata cu
succes atunci rezultatul lui $conexiune->rezultat() va fi
FALSE.
var_dump($conexiune->rezultat());
// n cazul n care se doreste inchiderea conexiunii cu
MySQL
$conexiune->inchide_conexiune();
// $conexiune->tablou_rezultate va returna un tablou ce va
afisa rezultatele pentru fiecare interogare SQL adaugata.
// Va trebui sa folositi print_r pentru a intelege
structura tabloului.
print_r($conexiune->tablou_rezultate);
?>
</body>
</html>
n cazul n care serverul MySQL este nchis pentru a nu obine Warning la linia 10 din
transaction.php,
putei
pune
nainte
de
instania
clasa.
Tranzaciile pot fi folosite pe MySQL i pe versiuni mai vechi ale acestuia, ns cei de la
MySQL recomand ultima versiune (5.0)
43
CAPITOLUL 3
Prezentare Site
Prima pagin a sit-ului a fost facut n html dup care codul surs a fost imparit n 3
fiiere php :
1) header.inc.php
2) main.inc.php;
3) foot.inc.php;
Pentru a putea folosi funcia include. Insernd toate aceste fiiere intr-un singur fiier
index.php am generat prima pagin a sit-ului de prezentare pentru parcul auto.
header.inc.php conine cod surs html i css
44
Prima pagina a sit-ului, conine 3 butoane, putnd fi extins pe viitor dup necesitai
45
46
47
Conectarea la baza de date se face prin fiierul mysql.data.php aflat n directorul lib.
Aici gsim definite numele bazei de date, serverul pe care se afl aceasta, userul i parola
de acces.
48
Orice pagin are nevoie de un formular de contact, pentru ca vizitatorul sa poat intra n
contact cu firma respectiv.
La acest formular s-a folosit metoda post deoarece metoda POST permite trimiterea unei
cantiti mai mari de date dect metoda GET
49
50
Administrare pagina
51
Userul admin este creat n baza de date cu numele Admin iar parola este criptat n
protocolul MD5
Pentu a modifica parola trebuie accesat administrarea siteului i din meniu alegem
opiunea Modificare Cont
n cmpul Username se introduce utilizatorul i n cmpul Parola noua se introduce
parola care vrei s o avem pe viitor dar pentru a fi sigur ca nu am gresit parola trebuie s o
introducem din nou n cmpul Confirmati parola dupa ce toate cmpurile sunt
completate apsam butonul salvare.
Managementul categoriilor
52
Pentru a aduga un anun nou alegem din meniul de administrare opiunea Adaug
anunuri ne apare meniul Adugati un nou anun cu urmatoarele opiuni
Categoria care este stabilit anterior din meniul Alege o noua categorie
Denumire autovehicul unde va aprea denumirea spre exemplu VW Passat 1.9TDI
Bussines line
Pre:
Moneda: este definit n baza date, se poate selecta EURO sau alte monede definite
imiial
An fabricaie
Combustibil
Capacitatea cilindric
53
Adaugare anun
Lista de anunuri este o previzualizare din admin de unde se pot vizuliza pozele, edita
toate detaliile i sterge anunul.
54
Concluzii
55
De ce sa va faceti website?
Un website de internet este o unealta de marketing, consecintele unui website profesional
sunt comparabile cu o echipa de oameni care ar umbla prin lume icercand sa va faca
publicitate i sa va promoveze produsele i serviciile, diferenta fiind ca un website
profesional va costa infim fata de beneficiile care vi le aduce.
Importanta Internetului n zilele noastre este deja cunoscuta iar exploatarea oportunitatilor
oferite de acesta trebuie sa fie o prioritate pentru o firma moderna mai ales daca
concurenta are deja prezenta online.
Un website asigura prezenta firmei dvs. pe Internet, va face cunoscuta afacerea n
Romania i n lume intr-un mod simplu economic i eficient i nu n ultimul rand va
imbunatateste imaginea.
Un website costa o singura data i ramane permanent, 24 de ore din 24 n atentia
publicului din orice zona a lumii. Oricand, continutul unui website poate fi actualizat sau
modificat dupa bunul Dvs. plac.
56
Bibliografie:
57
www.phpromania.ro
www.oscommerce.com
www.w3schools.com/asp/default.asp
ANEXA
CODUL SURSA
58
Baza de date
masini.sql
-- phpMyAdmin SQL Dump
-- version 2.9.0.1
-- http://www.phpmyadmin.net
--- Host: localhost
-- Generation Time: Mar 01, 2007 at 12:31 PM
-- Server version: 5.0.24
-- PHP Version: 5.1.6
--- Database: `masini`
-USE `masini`;
-- ---------------------------------------------------------- Table structure for table `admin`
-CREATE TABLE `admin` (
`id` int(11) NOT NULL default '0',
`username` varchar(50) collate latin1_general_ci NOT NULL default '',
`password` varchar(50) collate latin1_general_ci NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
--- Dumping data for table `admin`
--
59
60
61
Formularul de contact
Send.php
62
<?
include('lib/config.inc.php');
class Login{
var $query;
function Login($idFld, $usernameFld, $passwordFld, $tbl, $usernameVar, $passwordVar){
$con = new Connection(MYSQL_HOST, MYSQL_USER, MYSQL_PWD, MYSQL_DB);
$this->query = 'select
'.$idFld.', '.$usernameFld.'
from
'.$tbl.'
where
'.$usernameFld.' = "'.$usernameVar.'" and '.$passwordFld.' = MD5("'.$passwordVar.'")';
Login::checkUser();
}
function checkUser(){
$sql = new Query($this->query);
print $sql->err;
if($sql->rows != 0){
$_SESSION['loggedUser']['id'] = $sql->resultArray[0][0];
$_SESSION['loggedUser']['username'] = $sql->resultArray[0][1];
header('location: admin.index.php');
}else{
header('location: index.php?err=1');
}
}
}
$c = new Login('id', 'username', 'password', 'admin', $_POST['username'], $_POST['password']);
?>
Fisierul de cofigurare
mysql.data.php
<?
63
define('MYSQL_HOST', 'localhost');
define('MYSQL_USER', 'root');
define('MYSQL_PWD', 'virusempire');
define('MYSQL_DB', 'masini');
?>
Codul CSS
.link_11px_gray_underline:link{
font-family:Arial, Helvetica, sans-serif;
color:#999999;
font-size:11px;
text-decoration:none;
}
.link_11px_gray_underline:visited{
font-family:Arial, Helvetica, sans-serif;
color:#999999;
font-size:11px;
text-decoration:none;
}
.link_11px_gray_underline:active{
font-family:Arial, Helvetica, sans-serif;
color:#999999;
font-size:11px;
text-decoration:none;
}
.link_11px_gray_underline:hover{
font-family:Arial, Helvetica, sans-serif;
color:#999999;
font-size:11px;
text-decoration:underline;
}
64
.link_11px_orange_underline:link{
font-family:Arial, Helvetica, sans-serif;
color:#FF6632;
font-size:11px;
font-weight:bold;
text-decoration:none;
}
.link_11px_orange_underline:visited{
font-family:Arial, Helvetica, sans-serif;
color:#FF6632;
font-size:11px;
font-weight:bold;
text-decoration:none;
}
.link_11px_orange_underline:active{
font-family:Arial, Helvetica, sans-serif;
color:#FF6632;
font-size:11px;
font-weight:bold;
text-decoration:none;
}
.link_11px_orange_underline:hover{
font-family:Arial, Helvetica, sans-serif;
color:#FF6632;
font-size:11px;
font-weight:bold;
text-decoration:underline;
}
.link_11px_nb_orange_underline:link{
font-family:Arial, Helvetica, sans-serif;
color:#FF6632;
font-size:11px;
text-decoration:none;
65
}
.link_11px_nb_orange_underline:visited{
font-family:Arial, Helvetica, sans-serif;
color:#FF6632;
font-size:11px;
text-decoration:none;
}
.link_11px_nb_orange_underline:active{
font-family:Arial, Helvetica, sans-serif;
color:#FF6632;
font-size:11px;
text-decoration:none;
}
.link_11px_nb_orange_underline:hover{
font-family:Arial, Helvetica, sans-serif;
color:#FF6632;
font-size:11px;
text-decoration:underline;
}
.link_11px_black:link{
font-family:Arial, Helvetica, sans-serif;
color:#000000;
font-size:11px;
text-decoration:none;
}
.link_11px_black:visited{
font-family:Arial, Helvetica, sans-serif;
color:#000000;
font-size:11px;
text-decoration:none;
}
.link_11px_black:active{
66
67
font-size:11px;
border:1px #333333 inset;
}
68