Crearea Si Publicarea Unei Pagini PE Internet
CREAREA ȘI PUBLICAREA UNEI PAGINI PE INTERNET
CUPRINS
NOȚIUNI INTRODUCTIVE
LIMBAJUL HTML
2.1. HTML (Hyper Text Markup Language
2.2. Componentele principale ale unei pagini web
2.3. Culori și fonturi
2.4. Inserarea imaginilor în paginile HTML
2.5. Inserarea de linkuri și ancore
2.6. Inserarea tabelolor
2.7. Liste în HTML
2.8. Metainformațiile
2.8.1. Descrierea generala a unei pagini web
2.8.2. Stabilirea cuvintelor cheie pentru o pagina web
2.8.3. Reactualizarea/reîncarcarea si redirectionarea unei pagini web în
mod automat
2.8.4 Caracteriul spațiu
2.8.5. Diacritice românești
3. LIMBAJUL PHP
3.1 Scurt istoric PHP
3.2 Funcționalitate PHP
3.3. Ce este nou in PHP 5
3.4. Scrierea si executarea scripturilor PHP
3.5. Adaugarea comentariilor în scripturi
3.6. Tipuri de date PHP
3.7. Variabilele
3.8. Constantele
3.9. Operatori PHP
3.10. Structuri de control PHP
3.11.Funcții PHP
3.11.1. Funcții definite de utilizator
3.11.2. Funcții PHP predefinite
3.12. Module cookie și sesiun
3.13. PHP și JavaScript
4. LIMBAJUL MySQL
4.1. Scurt istoric
4.2. Tipuri de date MySQL
4.3. Tipuri de coloane MySQL
4.3.1. Tipuri numerice de coloane
4.3.2. Tipuri de dată si oră
4.3.3. Tipuri de caractere utilizate de coloanele
4.4. Operatori MySOL
4.5. Functii MySQL
4.6. Instrucțiuni MySQL
4.6.1. Instrucțiunea CREATE
4.6.2. Instrucțiunea INSERT
4.6.3. Instrucțiunea DROP
4.6.4. Instrucțiunea SELECT
4.6.5. Instrucțiunea DELETE
4.6.6. Instrucțiunea UPDATE
4.6.7. Instrucțiunea CREATE INDEX
4.6.8. Instrucțiunea ALTER TABLE
4.7. Proiectarea bazei de date
4.8. Relatii între baze de date
4.9. Normalizarea
4.10. Conectarea din PHP la MySQL și selectarea bazei de date
PREZENTAREA APLICAȚIEI
Creearea bazei de date
. Inserarea inregistrarilor în tabele
. Crearea șablonului pubilic
CONCLUZIE
BIBLIOGRAFIE
1. NOȚIUNI INTRODUCTIVE
Vremea paginilor Web statice a trecut. Timp de mulți ani reteaua Web a supraviețuit sub forma unui domeniu în care câteva pagini HTML legate laolalta formau un site. Dar în prezent utilizatori se asteptă să vadă pagini interesante, actualizate frecvent și care le ofera o experiență personalizată. În același timp administratorii Web vor site-uri mai usor de actualizat si intreținut. Din aceste motive, altături de multe altele, construirea unui site numai pe baza fișierelor HTML nu mai este acceptată. Rețeaua Web a devenit un loc pentru aplicații Web dinamice, deseori avand in fundal baze de date.
Site-urile Web dinamice sunt creatii flexibile si puternice, mai concret descrise ca aplicații, decât ca simple site-uri.
Caracteristici ale site-urilor Web dimanice:
Răspund la diferiți parametri (cum ar fi ora din zi sau versiunea browserului Web folosit)
Permit înregistrarea și identificarea utilizatorilor, comerțul electronic și alte procese similare.
În mod natural implică folosirea formularelor HTML, permitiând utilizatorului să efectueze căutări, să introducă informații in formulare.
Deseori au interfețe prin care administratorii pot să actualizeze conținutul site-ului.
Sunt ușor de întreținut, modernizat și dezvoltat.
Evoluția rețelei Internet este strâns legată de evoluția tehnologiilor informatice, a algoritmicii și a limbajelor de programare. O primă revoluționare a spațiului WWW s-a produs odată cu posibilitatea de a introduce imagini în documentele hypertext, prefigurând transformarea banalului și staticului hypertext în ceea ce astazi numim hypermedia. Înglobarea de grafică, sunet, film în documentele web a fost urmată de posibilitatea includerii de secvente de cod executate de browser (secvențe JavaScript sau VBScript), precum și de aplicații (applet-uri) Java. Modul de afișare al documentelor a putut fi apoi controlat mai precis prin utilizarea foilor de stil (Cascading Style Sheets).
Dezvoltarea conceptelor și tehnologiilor web a avut loc și în direcția dinamizarii
conținutului documentelor hypermedia, prin apariția de limbaje pentru programarea aplicațiilor web server-siie (aplicații executate de către server-ul gazdă) Web-ul actual a evoluat în direcția proiectării unor situri capabile sa-și actualizeze conținutul în mod dinamic, de la oră la oră, care să ofere modalități multiple de interacțiune cu vizitatorul (setarea caracteristicilor paginii în funcție de preferințele utilizatorului, afișarea conținutului în funcție de necesitațile informaționale ale vizitatorului, participarea la discuții în forumuri, exprimarea părerii despre un anumit subiect prin intermediul sondajelor, cumpărarea de produse din magazine virtuale, e.t.c), asigurând în același timp un grad ridicat de securitate (accesul pe bază de autentificare a utilizatorului prin metode sigure).
LIMBAJUL HTML
2.1. HTML (Hyper Text Markup Language) :
HTML este un limbaj de marcare (formatare, aranjare) a documentelor cu conținut hypertext adică a paginilor WEB. El utilizează etichete pentru a indica browser-ului cum să afișeze pagina Web și cum să raspundă la acțiunile utilizatorului. Fisierele HTML
sunt fisiere ASCI cu extensia .HTM sau .HTML.
Hypertext reprezintă texte și imagini legate într-o formă complexă în care utilizatorul poate naviga, căuta informații,etc. Hypermedia conține în plus animații, secvențe sonore,
secvențe video.
World Wide Web (WEB) este un ansamblu de documente de natură hypertext distribuite în diverse rețele scrise in limbaj HTML.
2.2. Componentele principale ale unei pagini web
Orice document HTML începe cu notația <html> si se termină cu notația </html>. Astfel de perechi de marcaje sau etichete (acolo unde sunt perechi) se numesc in literatura de specialitate TAG-uri. Un TAG definește etichetele HTML (elementele cu care sunt marcate textul și grafica într-o pagina web, adică blocuri de informație). Tagurile pot fi scrise cu litere mici sau mari.
Prin convenție, toate marcajele HTML încep cu o paranteză unghiulară deschisă "<" și se termină cu o paranteză unghiular închisă ">". Marcajele dintre aceste paranteze transmit comenzi către browser pentru a afișa pagina intr-un anumit mod.
Unele blocuri prezintă delimitator de sfârșit de bloc, in timp ce pentru alte blocuri acest delimitator este opțional sau chiar interzis.
Între cele două marcaje <html> si </html> vom introduce două secțiuni:
secțiunea de antet: <head>…</head>
corpul documentului: <body>…</body>
Blocul <body>…</body> cuprinde conținutul propriu-zis al paginii HTML, adică ceea ce va fi afișat in ferastra browser-ului. Un marcaj poate fi scris atât cu litere mici, cât și cu litere mari. De exemplu <BODY> = <BodY> = <body>. Caracterele "spațiu" și "CR/LF" ce apar între taguri sunt ignorate de catre browser.
Un prim document HTML ar fi ceva de genul acesta:
<html>
<head> </head>
<body> </body>
</html>
În primul rând, titlul unei pagini se obține inserând în secțiunea <head>…</head> urmatoarea linie:
<title>Aceasta este titlul primei pagini de Web</title>
În plus, în secțiunea <body>…</body> putem scrie texte cât dorim. Dacă nu întâlnim nici un marcaj "<" sau ">", atunci interpretorul HTML le va lua ca texte simple și le va afișa pe ecran.
<HTML>
<HEAD>
<TITLE>Exemplul 1</TITLE>
</HEAD>
<BODY>
Aceasta este o pagina html simplă
</BODY>
</HTML>
Tag-ul <BODY> are următoarea structură:
<BODY TEXT=”…” BGCOLOR = “…” BACKGROUND=”…”LINK=”…” ALINK = “…” VLINK=”…”> … </BODY>
TEXT = Specifică o culoare generală pentru textul din pagină. Aceasta culoare va fi aplicată cu tag-ul <FONT COLOR=”…”>;
BGCOLOR = Specifică o culoare pentru fundaului paginii;
BACKGROUND = Specifică o imaginie pentru fundalul paginii;
LINK = Specifică o culoare pentru link-urile din pagina;
ALINK = Specifică o culoare pentru link-urile active din pagină;
VLINK = specifică o culoare pnetru link-urile vizitate.
2.3. Culori și fonturi
Într-un fisier HTML putem specifica culori pentru text, pentru background ( în unele cazuri, depinde și de browser ), culori ale unor componente (obiecte) din pagina HTML.
O culoare poate fi precizată în doua moduri :
prin numele său (în engleză), fiind disponibile cel putin 16 nume de culori: aqua, black, blue, fuchsia, gray, green, lime, maroon, navy, olive, purple, red, silver, teal, white și yellow;
prin codul sau RGB ( Red, Green,Blue), adică un cod care spune cât din culoarea de baza (fiecare din cele trei: rosu, verde și albastru, pe o scara de la 0 la 255) intră în compoziția acestei culori.
Tag-ul <FONT >
Are urmatoarea structura :
<FONT FACE=”…” SIZE=”…” COLOR=”…”> … TEXT … </FONT>
FACE – Specifică denumirea fontului (de exemplu “Verdana”). Puteți, de asemenea să specificați mai multe fonturi despărtite prin virgulă. Dacă cel care va încărca pagina nu are primul font, atunci se va încerca folosirea celui de-al doilea font s.a.m.d.
SIZE – specifică dimensiune fontului. Acest atribut poate lipsi. Poate lua valori de la 1 la 7, 1 cel mai mic, 7 cel mai mare. Implicit este 3.
COLOR – Specifică culoarea textului încadrat in tag-ul <FONT>.
Alte taguri utile când lucrați cu fonturi :
Tag-ul <BIG> are structura <BIG> … text … </BIG>
Textul încadrat astfel va avea dimensiunea cu o unitate mai mare decât cea stabilită (dimensiunea curenta de afisare).
Tag-ul < SMALL > are structura < SMALL > … text … </SMALL>
Textul încadrat astfel va avea dimensiunea cu o unitate mai mică decât cea stabilită (dimensiunea curenta de afisare).
Tagul <B> are strucutura <B> … text … </B>. Determină textul încadrat să fie afișat îngrosat (bold).
Tagul <I> are structura <I>… text … </I>. Determină textul încadrat să fie afișat inclinat (italic).
Tagul <U> are structura <U> … text … </U>. Determină textul încadrat să fie afișat subliniat (underline).
Taguri speciale pentru titluri (headings)
<H1> … </H1>
…
<H6> … </H6>
Sunt folosite pentru a crea titluri in pagină, titluri având una din dimensiunile standart 1-6. În acest caz, <H1> dă dimensiunea cea mai mare, iar <H6> cea mai mică.
2.4. Inserarea imaginilor în paginile HTML
În paginile HTML putem introduce mai mai multe tipuri de imagini, dar cele mai des folosite sunt cele GIF si JPG.
Fisierele GIF sunt imagini ce folosesc cel mult 256 de culori și sunt indicate pentru imagini de dimensiuni mici (ca dimensiune a fișierului, nu ca suprafața) care nu necesită o adâncime mare de culoare. Aceasta este formatul cel mai răspândit pe web.
Fisierele JPG sunt imagini ce folosesc pana la 16,7 milioane de culori si de aceea sunt indicate pentru imagini mai fine, ce necesită claritate, adâncime, dar aceste imagini au, de obicei și dimensiuni mai mari și atunci se incarcă mai greu.
Pentru a insera o imagine intr-o pagina web se utilizeaza tag-ul <IMG>,
Tag-ul <IMG> are structura:
<IMG SRC= “…” ALT =“…” BORDER=”…” WIDTH=”…” HEIGHT=”…” ALIGN=”…”>;
SRC = Stabileste sursa (în engleza = “source” ) imaginii ce trebuie încărcate;
ALT = Stabileste textul (de obicei explicativ) ce va fi afișat de browser atunci când vizitatorul plasează pointer-ul mouse-ului desupra imaginii;
BORDER = Dimensiunile border-ului ce va fi desenat în jurul imaginii;
WIDTH = Lungimea in pixeli a imaginii;
HEIGHT = Înaltimea in pixeli a imaginii;
ALIGN = Stabileste alinierea imaginii in cadrul paginii web. Poate lua urmatoarele valori :
LEFT = Aliniere la stânga; celelalte componente ale paginii sunt dispuse în partea dreaptă a imaginii;
RIGHT = Asemanator LEFT, dar pentru dreapta;
TOP = Aliniere deasupra; partea de sus a textului se aliniaza cu partea de sus a textului care precede imaginiea;
MIDDLE = Alinierea la mijloc; mijlocul imaginii se aliniază ca linia de baza a textului ce precede imaginiea ;
BOTTOM = Aliniere de bază; partea de jos a imaginii se aliniază cu linia de baza a textului.
2.5. Inserarea de linkuri și ancore
Linkurile reprezintă porțiuni de text sau imagini care dacă se execută click pe ele, conduc la încărcarea unui nou fisier HTML. Acestea sunt legaturi între paginile HTML sau link-uri, deumirea standard pe care o vom folosi în cele ce urmează.
Pentru a crea un link folosim tag-ul <A HREF> are structura:
<A HREF = “…” > text sau imagine pe post de link </A>
HREF = specifică fișierului (inclusiv calea relativă la acel fisier, la fel ca la imagini) care trebuie să se încarce dacă utilizatorul execută click pe acest link.
Ancore
Putem construi link-uri nu numai la un alt fișier HTML, ci chiar la o anumită zonă de text din același fișier HTML. Aceasta sunt utile in cadrul paginilor web foarte “lungi”, pentru a naviga în diferite zone ale paginii făra a folosi barele de derulare. Pentru aceasta creăm mai întâi ancora apoi link-ul.
Creăm ancora <A NAME = “nume_ancora”>text pe post de ancora</A>.
Creăm link-ul la ancora <A HERF = “nume_ancora”>margi la … </A> .
Link-uri externe
Uneori avem nevoie să construim link-uri la diverse alte site-uri sau pagini din alte site-uri. Modul de creare a acestora este identic din site-ul de baza, dar trebuie să precizăm în cadrul lor și protocolul HTTP.
2.6. Inserarea tabelolor
Tabelele sunt elemente des folosite în paginile HTML. Rolul lor clasic este de așezare a informației într-un cadru format din celule. Cu toate acestea, cel mai raspândit mod de utilizare a tabelelor in HTML este cel in care se folosesc tabelele inzibile (cu border de grosime zero) pentru a așeza informația în zone și direcții in care altfel nu ar fi posibil.
De exemplu, pentru a aseza informația dintr-o pagină în doua coloane (ca in paginile unui ziar de exemplu) trebuie folosit un table cu border de grosime zero ( invizibil pentru vizitator), tabel având două colane în care se află informația. Nu există un tag special care să facă acest lucru ( informatia asezata pe doua coloane), folosirea unui astfel de tabel este singura solutie in acest caz.
Tag-ul <TABLE>…</TABLE>
Acest tag mărginește întregul tabel. Are numeroase atribute pe care le vom prezenta în cele ce urmează. Tabelul este format din linii, fiecare linie fiind împărțită in celule. De aceea vom avea nevoie și de tag-uri care să mărginească liniile, respectiv celulele. Dar mai întâi să analizăm atributele tag-ului general <TABLE>:
BORDER=’’…’’ Indică grosimea tabelului .Implicit este 1;
CELLSPACING=’’…’’ Indică dimensiunea spațiului (in pixeli) ce trebuie lăsat între celulele tablului;
CELLPADDING=’’…’’ Indică dimensiunea spatiului (pixeli) ce trebuie lasat între marginea unei celule și conținuțul ei.
WIDTH=”…’’ Indică lungimea tabelului. Poate fi specificată în pixeli sau în procente relative la lungimea paginii. (Exemplu: WIDTH=’’600’’ sau WIDTH=’’80%’’.)
HEIGHT=’’…’’ Indică înaltimea tabelului. Se poate specifica în pixeli sau în procente. Nu este recomandabilă folosirea acestui tag. De exemplu: este inutil să specificăm noi că înaltimea unui table sa fie 300 de pixeli dacă informația din table este mai mare și conduce la o inaltime de 400 de pixeli. Cel mai bine este sa lăsăm tabelul “ să și stabilească’’ inălțimea in mod dinamic, in functie de conținut .
ALIGN=’’…’’ Specifică cum să fie aliniat tabelul in pagină sau în containerul in care este inclus (de exemplu, un tabel poate să conțină intr-o celula a sa un alt table; asezarea se va face relative la celula a sa un alt table; specificand cum sa fie aliniat tabelul mic din interior, asezarea se va face relative la celula tabelului mare care-l contine). Valori posibile sunt :LEFT,CENTER sau RIGHT.LEGT este implicita .
BAGCOLOR=’’…’’ Indică culoarea de fundal a tabelului.
BACKGROUND=’’…’’(functionează doar în Internet Explorer). Indică o imagine pe post de background tabelului.
BORDERCOLOR=’’…’’ (funcționează doar in Inernet Explorer)
Specifică culoarea border-ului tabelului
Functionează doar în Internet Explorer. În Netscape border-
ele tabelelor au implicit culoarea gri.
Pentru a marca o linie din table trebuie sa folosim tag-ul <TR> . Acesta are și el mai multe atribute:
ALIGN=’’…’’ Specifică cum să fie aliniat pe orizontală conținutul unui rând din tebel. Valori posibile sunt: LEFT, CENTER sau RIGHT. LEFT este valoare implicită.
VALIGN=’’…’’ Specifică cum sa fie aliniat pe verticală conținutul unui rând din tabel. Valori posibile sunt:TOP, MIDDLE, BOTTOM. MIDDLE este valoare impicită.
BAGCOLOR=’’…’’ Indică culoarea de fundal a liniei tabelului.
BACKGROUND=’’…’’( functionează doar în Internet Explorer) indică o imagine pe post de background al liniei tabelului..
Pentru a marca o celulă din table trebuie sa folosim tag-ul <TD>. O celulă poate să ocupe mai multe celule standard (pe orizontală sau verticală). Acest tag are și el mai multe atribute:
ALIGN=’’…’’ Specifică cum să fie aliniat pe orizontală conținutul unei celule. Valori posibile sunt: LEFT, CENTER sau RIGHT. LEFT este valoarea impicită.
VALIGN=’’…’’ Specifică cum să fie aliniat pe verticală conținutul unei celule. Valori posibile sunt: TOP, MIDDLE, BOTTOM. MIDDLE este valoarea implicită.
ROWSPAN=’’…’’ Specifică numărul de celule standard pe care celulele respective le ocupă relativ la linii (pe câte linii se intinde).
COLSPAN=’’…’’ Specifică numarul de celule standard pe care celula respectivă le ocupă relativ la colane (pe câte coloane se intinde).
WIDTH=’’…’’ specifică lungimea în pixeli a celulei respective.
BAGCOLOR=’’…’’ (funcționează doar în Internet Explorer). Indică o imagine pe post de Backround.
2.7. Liste in HTML
O listă în HTML este o succesiune de elemente, fiecare element fiind marcat printr-un număr, printr-un bullet(un bullet este un punct îngroșat având forma de disc, de cerc sau de patrat), în funcție de tipul listei.
Putem avea trei tipuri de liste: neordonate, orodante, sau liste de definiții .
Liste neordonate
O listă neordonată este o lista în care elementele sunt marcate nu prin numere (deci elementele nu sunt numerotate, de aici si numele de neordonată), ci prin ceea ce vorbitorii de limba engleza numesc bullet-uri( punct îngroșat în formă de disc, cerc sau pătrat). Astfel, începutul fiecărui element din listă va fi marcat prin prezența unui bullet, având posibilitatea să alegem tipul acestuia.
Pentru a realiza o lista in HTML trebuie să folosim două tag-uri. Unul marchează întreaga listă, iar altul marchează fiecare element în parte.
Tag-ul <UL> are structura <UL TYPE =’’…’’>…</UL>
Este folosit pentru a marca întreaga listă neordonată.
TYPE=’’…’’ Atributul TYPE specifică tipul bullet-ului. Poate lua valorile: disc, circle sau square. Valoarea disc este implicită. Pentru o lista cu bullet-uri de tip disc nu mai trebuie să specificați si atributul TYPE=’’disc’’, ci incepeti lista doar cu <UL>.
Tag-ul <LI> are structura <LI>…</LI>
Marchează un element al unei liste. Se folosește atât în listele ordonate, cât și în cele neordonate.
Liste ordonate
O listă ordonată este o listă în care elementele sunt marcate fie cu numere (1,2,3,…), fie cu litere (a,b,c… sau cu litere mari A,B,C…), fie cu notații matematice(i,ii,iii,…sau cu I, II, III …) .
Tag-ul <OL> are structura <OL TYPE= ‘’…’’ START=’’…’’> … </OL>
Este folosit pentru a marca o listă ordonată.
TYPE=’’…’’ Atributul TYPE specifică cum vor fi numerotate elementele listei. Poate lua valorile:1, a, A, I, l . Valoarea 1 este implicită. Daca TYPE=’’a’’ elementele listei vor fi numerotate a,b,c s.a.m.d. Putem folosi, în plus, atributul START ca să indicăm de la ce valoare incepe numerotarea.
Liste de definiții
Într-o astfel de listă, elementele sunt cuplate termen-definiție. Termenul apare izolat pe un rând, iar definiția pe rândul urmator, cu alineat, puțin mai la dreapta.
Tag-ul <DL> are structura <DL>…</DL>
Marchează o lista de definiții. Pentru a marca un termen de definiție il vom încadra în tag-ul <DT> , iar pentru a marca o definiție a unui termen o vom încadra cu tag-ul <DD>.
Liste imbricate
Este posibil (și uneori chiar este necesar) să avem liste imbricate, adică liste incluse în interiorul altor liste. În astfel de cazuri, lista interioară (cea folosită pe post de element al listei mai mari) nu mai trebuie să fie inclusă intr-un tag<LI>.
Listele interioare sunt considerate un fel de element al listei mai mari din care fac parte. Cu toate acestea ele nu mai trebuie delimitate cu tag-uri <LI>.
Listele interioare sunt indentate la dreapta fata de restul elementelor listei mai mari.
2.8. Metainformațiile
Metainformațiile sunt în general informații despre modul în care a fost creată o pagină Web și sunt informații pe care autorul paginii le poate introduce în mod opțional. Ele sunt conținute în fișierul sursă HTML, dar nu sunt vizibile în pagina web atunci când aceasta este încărcată de browser. Aceste informații sunt stocate de server-ele web în diverse scopuri.
Iată câteva dintre tipurile de metainformații ce pot fi prezente într-o pagina web:
descirerea generală a paginii/site-ului
cuvinte cheie
autorul
data creării
administratorul site-ului
Metainformațiile se introduc cu ajutorul unui tag META plasat în interiorul tag-ului HEAD.
Tag-ul <> are structura:
< HTTP-EQUIV=”…” NAME=”…” CONTENT=”…”>
Se observă că nu are tag corespunzător de sfârșit. Atributele sunt folosite în perechi name-contenet sau http-equiv/content; într-o pagină Web se poate folosi tag-ul META de mai multe ori.
2.8.1. Descrierea generală a unei pagini web.
Pentru a face cunoscut motoarelor de căutare scopul în care a fost create o pagina web se insereaza un tag META în urmatoarea configurație:
<META NAME = “description” content = “descirerea paginii”>
2.8.2. Stabilirea cuvintelor cheie pentru o pagină web.
Cuvinetele cheie sunt utilizate pentru a regăsi informații prin intermediul unui motor de căutare. Selectarea lor trebuie facută cu multă atenție. Pentru a stabili cuvintele cheie se intereseaza un tag META cu urmatoarea cofigurație:
<META NAME = “keywords” content = “cuvinte cheie, cât mai multe separate prin virgula”>
Introducerea cuvintelor cheie în pagină și în general, a metainformațiilor, nu înseamnă regăsirea lor automată în bazele de date ale serverelor de web, în speță a motoarelor de căutare.
Pentru a vă înscrie în pagina/site-ul vostru la diverse motoare de căutare trebuie să vizitați site-urile acestora și să vă înregistrați (la cât mai multe posibil și in general la cele mai importante : Google, Yahoo, etc.) completând formularele de înregistrale pe care acesta le pun la dispoziție. Atentie: înscrierea la aceste motoare nu se face instantaneu; după completarea formularului mai dureaza un timp, depinde de la caz la caz, până când cererea este analizată de adminstratorii motorului de căutare respective și abia apoi introdusă în baza lor de date.
Modul în care cuvintele cheie ale unui site sunt stabilite de un motor de căutare depinde iarăși de la caz la caz: unele motoare de căutare se orientează după tag-ul META, altele consideră drept cuvinte cheie primele 100 de cuvinte din continuțul primei pagini a site-ului vostru.
Dacă pe post de cuvânt este o cheie sintagmă sau o alăturare de mai multe cuvinte (un nume, de exemplu) este bine să constituiți toate combinațiile acestora, mărind astfel șansele de reușită a cuvintelor cheie.
2.8.3. Reactualizarea/reincarcarea și redirectionarea unei pagini web în mod automat
O utilizare specială a atributului HTTP-EQUIV este aceea de a stabil reîncărcarea automată în browser a unei pagini sau da a redirecta vizitatorul in alta pagină.
Pentru aceasta se foloseste tag-ul META cu atributul HTTP-EQUIV având valoarea refresh:
reincarcarea paginii curente din 10 in 10 secunde:
<META HTTP-EQUIV =”refresh” CONTENENT = “10”>
redirectarea in alta pagina
<META HTTP-EQUIV =”refresh” CONTENENT = “5; URL=http://www.vrancea.ro”>
Asteapta 5 secunde dupa care incarca www.vrancea.ro
Un astfel de caracater poate fi inculs totus într-un document HTML folosind o entitate speciala (cod) pentru acel character. O astfel de entitate începe cu ampersand (&)urmat de un grup de litere și cifre și se incheiei cu punct si virgula (;).
2.8.4. Caracteriul spațiu
Un caracter special, des folosit, este caracterul spațiu. El este folosit evident pentru a introduce mai multe spați între doua cuvinte, deoarece spațierea simplă între două cuvinte, în cod sursă HTML, este ignorată de browser.
Pentru ca browseul să lase mai multe spații între cuvinte trebuie să indicăm spațiile prin folosirea caracterului special spatiu, respectiv prin folosirea în codul sursa a entitații ce desemneaza caracterul spațiu si anume  .
2.8.5. Diacritice românești
În mod analog pot fi folosite diacritice românești. Atunci cand doriți să introduceți unul dintre caracterele ă,â,î,ș,ț,Ă,Â,Î,Ș,Ț veți introduce în codul sursa HTML o entitate coresunzatoare acelui caracter.
De asemenea trebuie semnalat browser-ului că se dorește folosirea caractereleor românsești folosind, in zona HEAD a paginii un tag META in urmatoarea compozitie:
<meta http-equiv=Content-Type content=” text/html;
Charset=ISO-8859-2”>
Aceasta indică browser-ului că vor fi afișate caractere din setul standard ISO-8859-2 , set care contine si caractere speciale românești.
3. LIMBAJUL PHP
3.1. Scurt istoric PHP
Inițial, PHP era acronim pentru “Personal Home Page” (pagină de bază personală), un limbaj de scriptare creat in 1994 de Rasmus Lerdorf pentru a contabiliza vizitatorii CV-ului personal, publicat în Internet. PHP-ul este făcut public în debutul anului 1995 sub denumirea de Personal Home Page Tools, fiind considerat un analizor simplist care interpreta câteva macrouri ce puteau fi incluse în cadrul documentelor HTML, permițând contorizarea accesului la paginile Web sau accesarea unei carți de oaspeți (guestbook). Analizorul a fost rescris la mijlocul aceluiași an și denumit PHP/FI 2.0, unde FI era o alta aplicație scrisă de Rasmus Lenford, un interpretor de formulare HTML. A fost adăugat și suportul pentru bazele de date MySQL și astfel PHP/FI a început să aibă succes, fiind disponibil gratuit pe Web. Se estimează că la sfârșitul lui 1996 cel puțin 15 mii de site-uri Web utilizau PHP/FI, iar în anul 1997 numărul acestora era de 50 de mii.
După ce funcționalitatea și utitatea limbajului au fost dezvoltate (și pe masură ce a inceput sa fie folosit în contexte cu caracter mai profesional), numele limbajului a devenit “PHP: Hypertext Preprocessor” (preprocesor de hypertext).
3.2. Funcționalitate PHP
În conformitate cu site-ul Web Php oficial aflat la adresa www.php.net, PHP este “un limbaj de scriptare înglobat în HTML”. A spune că PHP este înglobat în HTML înseamnă că scripturile PHP pot fi întrețesute cu cod HTML, ceea ce face mult mai ușoară dezvoltarea site-urilor Web dinamice. PHP este un limbaj de script care funcționează alături de un server Web. Este de notat diferența cu alte limbaje script CGI scrise în limbaje precum Perl sau C: în loc de a scrie un program cu o multitudine de linii de comanda afișate în final într-o pagină HTML, veți scrie o pagină HTML cu codul inclus pentru a realiza o acțiune precisă (în cazul nostru se va afișa un text).
Codul PHP este inclus între tag-urile speciale de început și de sfârșit care permit utilizatorului să treacă din "modul HTML" în "modul PHP".
De asemenea este un limbaj de scriptare, nu un limbaj de programare propriu-zis, ceea ce înseamnă că PHP a fost conceput pentru scrierea scripturilor Web, nu a unor aplicații independente. Scripturile sunt rulate numai dupa ce apare un eveniment – de exemplu atunci când un utilizator transmite un formular sau vizitează o adresă URL.
Ca o completare pentru această definiție putem spune că PHP este o tehnologie pe parte de server, interplatformă, ambele descrieri fiind importante.
Sintagma “pe parte de server ” se referă la faptul că acțiunile unui script PHP sunt executate pe server (nu pe client, respectiv calculatorul pe care ruleaza browserul utilizatorului care vizează un site Web).
Natura interplatformă a limbajului înseamnă că PHP rulează pe majoritatea sistemelor de operare, inclusiv pe Windows, Unix (cu multiple variante ale acestuia) și Macintosh.
Mai important este faptul că scripturile scrise pe un server funcționează în mod normal și pe alte servere, asa cum sunt sau cu mici modificări.
3.3. Ce este nou in PHP 5?
PHP 5, ca si PHP 4, reprezintă o dezvoltare majoră a acestui popular limbaj de progrmare. Cele mai importante modificări din PHP 5 – din perspectiva progrmatorului – sunt legate de progrmarea orientată spre obiecte (OOP : Object Oriented Programming).
PHP aceeptă obiecte de mai mult timp, dar acum o face într-un mod mai apropiat de conceptele OOP.
Pe lângă modificarile legate de OOP, PHP 5 foloseste o noua versiune Yend Engine (motorul procesorului PHP), având ca rezultat perfomanțe superioare. De exemplu PHP 5 extinde funcționalitatea limbajului, incluzând un numar mare de functii noi, precum si un set diferit de extensii.
3.4. Scrierea și executarea scripturilor PHP
Orice program (sau secțiune de cod) PHP este specificat prin două etichete (tags), unul de început și altul de sfârșit care indică interpretorului PHP că textul delimitat de ele reprezintă cod PHP. Codul PHP este delimitat de unul din următoarele seturi de etichete de deschidere și închidere:
<?php -stilul implicit utilizat și recomandat;
?>
<script language="php"?> – stilul de marcaj script;
</script>
<? -stil de etichetă scurtă;
?>
<% – etichete tip ASP, folosirea lor necesită anumite setări pe server.
%>
Posibitatea de utilizare a acestor stiluri poate fi activată in fisierul de configurare php.ini.
Între aceste etichete, scripturile PHP sunt formate din instructiuni PHP, care se termină cu un caracter punct și virgula. Acest caracter este important deoarece arată unde se termină linia curentă și veți primi un mesaj de eroare daca nu-l folosim.
Primul exemplu de script va fi unul simplu, continând o singură instrucțiune phpinfo(). Această instrucțiune folosește funcția PHP phpinfo() pentru a afișa informații despre versiunea PHP pe care o folosim.
<?php
phpinfo();
?>
În acest caz funcția phpinfo() crează un tabel HTML conținând informații despre instalarea PHP.
Fișierele PHP se salvează cu extensia .php și se pot scrie cu Notepad sau, cel mai indicat, cu un editor specializat care va indica și numarul liniilor, lucru util la depanarea scripturilor.
Când PHP-ul parcurge un fișier, de fapt "citeste" textul până când întâlnește una din etichetele speciale care îi spune să înceapă să interpreteze textul ca pe cod PHP. Se executată codul până când este întâlnită eticheta de închidere. Apoi, se "citește" din nou textul mai departe. Acesta este motivul pentru care se poate adauga cod PHP în interiorul HTML-ului.
3.5. Adaugarea comentariilor în scripturi
Scripturile PHP pot fi comentate de programator pentru o mai bună înțelegere a codului. PHP aceepta urmatoarele tipuri de comentarii.
comentarii introduse pe o singură linie – incep cu două slash-uri „//”
comentarii introduse pe mai multe linii – încep cu „/*” și se termină cu „ */”.
comentarii în stilul shell-ului Unix – pe o singură linie înaintea lor folosindu-se caracterul „#”
3.6. Tipuri de date PHP
PHP are opt tipuri de date. Patru dintre acestea sunt tipuri scalare (boolean, integer, float si string), două sunt tipuri compuse (array și object, iar alte două sunt tipuri speciale (resource și null).
Tipul boolean:
Variabilele de acest tip pot avea doar două valori: ADEVARAT sau FALS. Aceste valori pot fi indicate prin cuvintele cheie TRUE sau FALSE (pentru ambele nu se face distincție între literele mari și literele mici). Valoarea 0 este considerată FALSE, iar toate variabilele diferite de 0 sau care au atribuită o valoare sunt considerate TRUE.
Tipul integer:
O variabilă de tip integer reprezintă o valoare din mulțimea numerelor întregi. Acest număr poate fi specificat în baza 10, în baza 16 sau în baza 8, convențiile fiind aceleași ca și în limbajele C/C++ sau Java. Modul de reprezentare depinde de platforma utilizată; de obicei se folosește reprezentarea pe 32 de biți. Interpretorul PHP nu oferă suport pentru numerele întregi fără semn.
Tipul float:
O variabilă de tip float poate fi specificată folosind fie forma zecimală, fie cea stiințifică (cea cu exponent). La fel ca și în cazul tipului integer, precizia variabilelor de tipul float este dependentă de platforma utilizată.
Tipul string:
O variabilă de tip string reprezintă un șir de caractere. Un caracter se reprezintă pe un octet, deci sunt 256 de caractere distincte. Lungimea variabilelor de tip string nu este limitată de către interpretor și se specifică prin folosirea ghilimelelor simple sau prin folosirea ghilimelelor duble. Exemplu: $nume=”exemplu”; sau $nume=’exemplu’;. Cea mai simplă cale pentru a specifica un sir este sa îl încadrăm între ghilimele simple ( ' ), dar eventualele ghilimele simple conținute între primele vor fi precedate de caracterul \ . În această situație variabilele și caracterele speciale vor fi ignorate. Dacă șirul este definit prin ghilimele duble (") PHP-ul interpretează mai multe secvențe pentru caracterele speciale ( \n – rând nou, \r – sfarșit de linie, \t – tab orizontal, \\ – backslash, \$ – simbol dolar, \" – ghilimele duble).
Pentru a accesa un anumit caracter din șirul de caractere, se folosește, după numele variabilei de tip string, indicile caracterului care trebuie accesat scris între acolade. De exemplu, $str{0} returnează primul character din șirul de caractere $str.
În cazul în care dorim să concatenăm două șiruri de caractere, vom folosi operatorul ".". Folosirea operatorului "+" nu va concatena cele doua siruri.
Tipul array:
Pentru a crea o variabilă de tip matrice folosim functia array( ). Vectorii în PHP sunt niște mulțimi formate din chei. Fiecărei cheie din vector i se atașează o valoare. Exemplu: array (cheie => valoare, cheie => valoare, …);. Acest tip de date este optimizat astfel încât să poată fi folosit în locul următoarelor structuri de date: liste, tabele de dispersie, dicționare, colecții, stive, cozi și altele.
De exemplu, următoarea instrucțiune PHP va construi un vector cu două elemente, dintre care unul este de tip string, iar celălalt de tip boolean:
$a = array ('ch' => 'string', 10 => TRUE);
Variabila $a reprezintă un vector, $a["ch"] are valoarea string, iar $a[10] are valoarea TRUE.
În cazul în care nu se specifică o cheie pentru o valoare, atunci acea valoare va fi atașată unei chei care va fi cheia maximă de tip integer folosită anterior, la care se adaugă valoarea 1. Cheile pot avea și valori negative. Dacă nu există chei de tip integer, atunci valoarea va fi atașată cheii 0. Dacă se folosește valoarea logică TRUE ca și cheie, atunci aceasta va fi convertită la cheia de tip întreg 1, iar valoarea FALSE va fi convertită la numarul întreg 0. Nu se pot folosi pentru chei variabile de tipul array sau object.
O variabilă de tip array se poate modifica prin setarea explicita de valori. Dacă se folosește un vector care nu a fost definit anterior, atunci acesta este creat automat.
Tipul object:
Pentru a defini un obiect care poate fi folosit pentru afișarea mesajului „Mesaj!”, se scrie următoarea secvență:
<?php
class AfisareMesaj
{
function AfiseazaMesaj()
{
echo 'Mesaj!';
}
}
$a = new AfisareMesaj;
echo $a -> AfiseazaMesaj();
?>
Pentru a utiliza o variabilă de tip obiect, va trebui să realizăm o instanțiere prin intermediul instrucțiunii new. Astfel, variabila $a devine un obiect ale carui metode pot fi utilizate. Pentru afișarea propriu-zisă a mesajului va trebui să executăm metoda AfiseazaMesaj() printr-o instructiune de tipul $a -> AfiseazaMesaj();
Orice variabila de un anumit tip poate fi convertita intr-un obiect.
Tipul resource:
Variabilele de tip resource sunt folosite pentru păstrarea unor referințe către anumite resurse externe cum ar fi conexiuni la baze de date, fișiere, etc. Resursele sunt create și utilizate de anumite funcții speciale.
Tipul NULL:
Valoarea specială NULL este atribuită oricărei variabile care nu a fost inițializată. Această valoare este singura pe care o pot avea variabilele de tip NULL; valoarea specială NULL înseamnă că o variabilă de acest tip nu are nici o valoare.
3.7. Variabilele
Prin variabilă se înțelege o dată a carei valoare se poate schimba în cursul execuției scriptului care o contine.
O variabilă este deci un container de date care poartă un nume și i se poate atribui o valoare care poate fi modificată de mai multe ori sau salvată într-o bază de date. Numele dat variabilei începe cu simbolul $ urmat de orice litera mică (a-z) sau mare (A-Z) sau cu caracterul _ , dar niciodată cu o cifră și nu poate conține spații goale. Exemplu: $nume.
Este recomandat ca numele variabilei să fie cât mai sugestiv pentru a evita încurcăturile în timpul scrierii scriptului. Pentru a atribui o valoare unei variabile, folosim semnul egal (=), apoi punem între ghilimele valoarea dorită. Dacă valorea este de tip număr, atunci nu mai este nevoie de ghilimele.
Tipul unei variabile se refera la genul de date care sunt introduse în ea. În PHP, de obicei, tipul unei variabile nu este specificat de către programator, ci este stabilit în timpul execuției, în funcție de contextul în care este folosită variabila.
Pe lângă acestea, mai există și asa numitele tablouri superglobale:
$GLOBALS = pot fi accesate toate variabilele globale care sunt accesibile script-ului PHP curent;
$_SERVER = conține o serie de variabile ale căror valori sunt setate de server-ul web; majoritatea valorilor variabilelor din acest vector depind de mediul de execuție al script-ului curent;
$_GET și $_POST conțin variabile primite de script prin intermediul unor transferuri care folosesc metodele HTTP get, respectiv post. De exemplu, prin intermediul acestor vectori, pot fi accesate valorile câmpurilor dintr-un formular care a fost completat și transmis folosind una dintre cele doua metode;
$_COOKIE conține valorile variabilelor care cuprind informații referitoare la cookie-urile păstrate pe calculatorul utilizatorului care accesează pagina web;
$_FILES conține variabile primite de script prin intermediul încărcărilor de fișiere prin metoda post;
$_ENV conține variabile disponibile prin intermediul mediului în care este executat
$_REQUEST conține variabile disponibile prin intermediul oricărui tip de mecanism cu ajutorul căruia utilizatorul poate introduce date;
$_SESSION conține variabile care corespund sesiunii curente a script-ului.
3.8. Constantele
O constană este un identificator pentru o dată scalară. Constantele se supun următoarelor reguli de definire și utilizare:
numele constantelor nu sunt precedate de semnul $;
numele unei constante începe întodeauna cu o literă sau o liniuță de subliniere, urmată de un numar oarecare de cifre, litere, liniute de subliniere;
numele constantelor sunt –in cazul implicit – case senzitive și, prin convenție, se scriu întodeauna cu majuscule.
odată definită o nu își mai poate schimba valoarea pe percursul execuției unui script; există totuș excepți în cazul constantelor predefinite _FILE și _LINE, numite constante magice;
constantele pot avea numai valori scalare (întreg, real, boolean, sir);
constantele pot fi aceesate de oriunde din interiorul scriptului, adică nu se pun probleme legate de domeniul de existență, ca în cazul variabilelor, adică acest domeniu este global.
Constantele sunt create cu ajutorul funcției define, care primeste ca argument numele constantei și valoarea pe care vreți să o atribuiți (exemplu: DEFINE (“pi”, 3.14)). Numele constantei este totdeuna încadrat între ghilimele, în timp ce valoarea este pusă între ghilimele numai dacă reprezintă un șir de caractere.
3.9. OPERATORI PHP
Calculele se efectuează prin intermediul operatorilor. PHP utilizează următoarele tipuri de operatori:
operatori aritmetici (operatori binari) :
+ Adunare $a + $b
– Scadere $a – $b
* Inmultire $a * $b
/ Impartire $a / $b
% Modulo $a % $b
operatori de atribuire
= Atribuire: atribuie operandului din stânga valoarea expresiei din
dreapta
+= Acești operatori combină operatorii aritmetici binari și pe cei
– = care acționeză asupra șirurilor de caractere.
*=
/=
%=
.=
operatori la nivel de bit
AND Simbol &
OR Simbol |
XOR Simbol ^
shift left Simbol <<
shift right Simbol >>
operatori de comparație
= Egal $a = $b
= = Identic $a = = $b
!= Diferit $a != $b
<> Diferit $a <> $b
< Mai mic $a < $b
> Mai mare $a > $b
<= Mai mic sau egal $a <= $b
>= Mai mare sau egal $a >= $b
operatori de control al erorilor
@ Permite ignorarea erorilor generate de către interpretorul PHP,
poate fi plasat înaitea variabilelor, constantelor, expresiilor și
apelurilor de funcții, dar nu și în fața definițiilor de funcți și
clase sau a structurii conditionale.
operatori de incrementare/decrementare
++$a Incrementează variabila $a cu 1 și întoarce noua valoare;
$a++ Întoarce valoarea variabilei $a și apoi o incrementează cu 1;
–$a Decrementeză variabila $a cu 1 și întoarce noua valoare;
$a– Întoarce valoarea variabilei $a și apoi o decrementează cu 1;
operatori logici
! (NOT) , && (AND), | | (OR), and (AND), or (OR).
!$b Returnează true dacă $b este false și invers
$a && $b Returnează true dacă atât $a cât și $b sunt true și false în caz
contrar
$a | | $b Returnează true dacă $a, $b sau ambele sunt true și false în caz
contrar.
$a and $b Identic cu &&, dar are o prioritate mai scăzută.
$a or $b Identic cu | |, dar are o prioritate mai scăzută.
operatori pentru șiruri de caractere
Simbol punct (.): Operatorul de concatenare întoarce ceea ce rezultă din
concatenarea operanzilor aflați în partea stângă și în partea
dreaptă.
operatori de execuție
„ Operatorul de executie permite executarea unor comenzi ale
shell-ului sitemului de operare.
3.10. STRUCTURI DE CONTROL PHP
Structurile de control reprezintă intrucțiunile limbajului PHP. Pot fi de mai mult tipuri:
structura secvențială: o serie de instrucțiunii care se execută în ordinea intalnită în program;
structură decizională: permite ramificarea programului în funcție de valoarea unei expresii, dacă expresia are valoare TRUE este executat un anumit grup de intrucțiunii sprecificate, dacă expresia are valoarea FALSE este executat alt grup de instrucțiuni;
structură repetitivă cu test inițial: presupune execuția repetată a unei instrucțiuni sau a unui grup de instruciuni, atat timp cant expresia este adevărată;
structură repetitivă cu test final: spre deosebire de structura repetitivă cu test inițial, valoare expresiei se testează după ce intrucțiunile sunt executate;
structura selectivă: este o structură decizională generalizată care permite execuția unei singure instrucțiuni dintr-un grup de instrucțiuni.
Instrucțiunea if…else
Sintaxă:
if (expresie)
{
grup de instrucțiuni1
}
else
{
grup de instrucțiuni2
}
Instrucțiunea elseif
Sintaxă:
if (expresie1)
{
grup de instrucțiuni1
}
elseif (expresie2)
{
grup de instrucțiuni2
}
else
{
grup de instucțiuni3
}
Ceea ce urmează după elseif este executat numai dacă valoarea expresiei1 este FALSE și expresia expresie2 este TRUE. În cazul în care expresie1 și expresie2 au valoarea de adevar FALSE atunci se trece pe ramura lui else și se execută grupul de instrucțiuni3.
Instrucțiunea while
While este o instrucțiune de tip buclă. Atât timp cât expresia este adevarată se repetă bucla. Sintaxa este următoarea:
while (condiție)
{
bloc instrucțiuni;
}
Instrucțiunea for
Structura repetitiva for este utilizată pentru a implementa structura repetitivă cu test inițial. Sintaxa este următoarea:
for (expresie1; conditie; expresie2)
{
instructiuni
}
Prima expresie este evaluată o singură dată, înainte de începerea execuției ciclului. Expresia condiție este testată înaintea fiecărei repetări a buclei. Dacă expresia returnează fals, repetarea se oprește. Expresia2 este executată la sfarșitul fiecărei repetări. Instrucțiunea se execută la fiecare repetare a buclei. Oricare dintre cele trei expresii poate lipsi; în cazul în care o expresie lipsește, se consideră ca ea are valoarea true.
Instrucțiunea foreach
Instrucțiunea foreach este utilizată pentru parcurgerea iterativă a tablourilor, fiind deosebit de utilă în cazul tablourilor asociative, caz în care nu este posibilă utilizarea instrucțiunii for.
Această structură poate fi folosită pentru a realiza o repetare printre toate elementele unui vector. Asadar, ea nu poate fi folosită decât împreună cu vectorii; utilizarea sa asupra unei variabile de alt tip duce la aparitia de erori.
Există două sintaxe acceptate pentru această structură și anume:
foreach(expresie_vectorială as $valoare)
{
//instructiune
}
foreach(expresie_vectoriala as $cheie => $valoare)
{
//instructiune
}
Dacă se utilizează prima variantă, atunci, la fiecare iterație valoarea elementului curent este atribuită variabilei $valoare, și apoi se trece la elementul următor (a cărui valoare va fi atribuită variabilei la următoarea iterație). Executia ciclului se încheie în momentul în care nu mai există alte elemente în vector. Singura diferență care apare în cazul utilizării celei de-a doua variante este faptul că la fiecare iterație valoarea cheii elementului curent este atribuită variabilei $cheie.
Instructiunea SWITCH
Această instrucțiune funcționează asemănător cu cea if, însa permite condițiilor să aibe mai mult de 2 valori. Într-o instrucțiune if, condiția poate fi adevarată sau falsă, însă într-o instrucțiune switch condiția poate lua orice număr de valori diferite. Această instrucțiune trebuie să conțină o instrucțiune case care să manevreze fiecare valoare pe care o doriți. Sintaxa :
switch(variabilă)
{
case ‘valoare1’: /* bloc instrucțiuni */
break;
……………………………………………
case ‘valoaren’: /* bloc instrucțiuni */
break;
default: /* bloc instrucțiuni */
break;
}
Instrucțiunea BREAK
Instrucțiunea break poate fi utilizată pentru întreruperea forțată a execuției secvențelor de instrucțiuni corespunzătoare structurilor for, foreach, while, do – while și switch. Break acceptă opțional un argument numeric care indică numărul de structuri imbricate a căror funcționare este oprită.
Instrucțiunea CONTINUE
Această instrucțiune este folosită pentru a întrerupe execuția secvenței de instrucțiuni din interiorul unui ciclu și trecerea la următoarea iterație.
Instructiunea REQUIRE
Această instrucțiune permite includerea și evaluarea unui fisier într-un script. Instrucțiunea este deosebit de utilă atunci când mai multe scripturi PHP conțin secvențe identice de cod. Fișierul care va fi inclus într-un script poate avea una dintre extensiile: php,inc.
Instucțiunea require_once() funcționează similar cu require() , cu excepția faptului că, fișierul a fost deja inclus în script, el nu va mai fi inclus încă o dată.
Instrucțiunea INCLUDE
Ca si require(), instrucțiunea include() permite includerea și evaluarea fisierelor în scripturile PHP. Deosebirea între cele două instrucțiuni constă în aceea că, dacă fișierul care se dorește inclus nu există, sau calea acestuia nu este specificată corect, require produce o eroare Fatal Error, iar include() produce numai un avertisment (Warning).
Instrucțiunea include_once() funcționează similar cu require() , cu excepția faptului că, fișierul a fost deja inclus în script, el nu va mai fi inclus încă o dată.
3.11. FUNCTII PHP
Vom defini mai întâi notiunea de funcție. O funcție reprezintă o secvență de cod care realizează o anumită operație și care poate fi apelată în mod repetat. Se poate spune că o funcție reprezintă un set de instrucțiuni care realizează o sarcină specifică.
3.11.1. Funcții definite de utilizator
În PHP o funcție se defineste astfel:
function nume_funcție ($arg_1, $arg_2,…, $arg_n)
{
//corpul funcției
[return valoare intoarsă;]
}
În definirea unei funcții PHP sunt incluse următoarele trei elemente:
numele funcției precedat de cuvântul cheie function;
listă de argumente –numită și listă de parametri – plasată între două paranteze rotunde (aceasă listă poate să fie si vidă);
corpul funcției care constă din una sau mai multe instrucțiuni incluse între paratezele acolade.
Funcțiile pot returna valori. Dacă este necesar ca funcția să întoarcă o valoare se utiliză instrucțiunea return. Pot fi întoarse obiecte de orice tip inclusiv tablouri și obiecte. Dacă intâlnim instrucțiunea return în corpul unei funcți, aceasta determină încheierea imediată a execuției funcției.
3.11.2. Funcții PHP predefinite
PHP are peste 1000 de funcții predefinite. O funcție predefinită este caracterizată printr-un prototip. Acesta cuprinde: tipul de date întoarse de funcție, numele funcției, listă argumente și tipul acestora. Voi enumera cateva din tipurile de funcții predefinite în PHP:
funcții de lucru cu tablouri
funcții matematice
funcți pentru dată și timp
funcții de lucru cu șiruri
funcții de lucru cu directoare și fisiere
funcți de lucru cu diferite baze de date.
3.12. Module cookie și sesiuni
Înainte de apariția modulelor cookie, navigarea în Web era “o călătorie fără istorie”. Deși browserul păstra o listă a paginilor vizitate, permițând revenirea la pagina anterioara prin butonul Back, serverul nu păstra nici o înregistrare a utilizatorilor și a paginilor stocate. În absența capacității unui server de a urmări un utilizator, nu puteau fi create coșuri de cumpărături și nu putea fi personalizată navigarea pe un site Web.
Valorile celor mai multe variabile Php se pierd la încheierea execuției scriptului. Acesta este un dezavantaj major, deoarece valorile unor variabile, ar trebui păstrate, astfel încât utilizatorul revine la o pagină dechisă anterior sau deschide alte pagini a căror accesare necesită valoarea unei variabile precizată deja, aceasta sa nu i mai fie solicitată.
Modulele cookie reprezintă o metodă folosită de server pentru a solicita informații pe calculatorul utilizatorului. În acest mod un site poate urmări un utilizator care îl vizitează.
Modulele cookie trebuie transmise înaintea oricărei alte informații. Dacă serverul încearcă să transmită un modul cookie după ce browserul Web a primit deja cod HTML, va apărea un mesaj de eroare și modulul cookie nu va fi transmis.
Modulele cookie sunt transmise folosind funcția setcookie():
setcookie(nume,valoare, expirare, cale_de_acces, domeniu, securitate);
Argumentul ‘expirare’ este folosit pentru a stabili durata limitată a unui modul cookie, specificată în secunde. Argumentele ‘cale de acces’și ‘domeniu’ sunt folosite pentru a limita modulul cookie la un anumit dosar de pe un site Web sau la o anumită gazdă.
Pentru a regăsi o valoare stocată într-un modul cookie trebuie să referim tabloul supreglobal $_COOKIE, folosind pentru cheie numele modulului cookie.
Pentru ștergerea modulului cookie trebuie folosită instrucțiunea setcookie(nume).
Sesiunile reprezintă un pas înainte față de modulele cookie, deoarece permit aplicațiilor Web să stocheze și să regăsească mult mai multe infomații decât dacă s-ar folosi doar de modulele cookie.
O altă metodă de a face ca datele să fie disponibile pentru mai multe pagini de pe un site Web este folosirea sesiunilor. Ideea de bază a unei sesiuni este că datele sunt stocate pe server, nu în browserul Web și este folosit un autentificator de sesiune pentru a localiza înregistrarea unui anumit utilizator. Acest indicator de sesiune este stocat în mod normal în browserul Web, într-un modul cookie, -dar datele confidențiale precum identificatorul și numele utilizatorului – sunt păstrate întodeuna pe server.
Cea mai importantă regulă referitoare la sesiuni este că toate paginile pe care le folosesc trebuie să înceapă prin apelarea funcției: SESSION_START(). Această funcție cere modulului PHP să creeze o nouă sesiune sau să obțină accesul la o sesiune existentă.
După crearea sesiunii, pentru înregistrare valori în sesiune folosim următoarea sintaxă:
$_SESSION[‘cheie’]=’valoare’;
Pentru a referi o variabilă din sesiune se va folosi sintaxa:
$_SESSION[‘VAR’];
3.13. PHP și JavaScript
În ciuda limitărilor și a problemelor de compatibilitate dintre browsere, JavaScript este în continuare o tehnologie foarte populară și utilă pentru paginile Web realizate în prezent.
Cea mai semnificativă diferență între cele două limbaje, o reprezintă faptul că JavaScript este dedicat pentru client (ceea ce înseamnă că rulează în browserul Web), iar PHP este dedicat pentru sever. Ca urmare JavaScript poate detecta dimensiunea ferestrei browserului în pixeli, poate crea ferestre pop-up și poate efectua operați speciale cu mouse-ul pentru imagini în vreme ce PHP nu poate executa aceste operații.
Deși nu poate face astfel de lucruri, limbajul PHP poate fi utilizat împreuna cu JavaScript (la fel cum poate crea cod HTML)
Transmiterea datelor Javascript către PHP
Transmiterea dateler din PHP în Javascript este la fel de simplă precum crearea oricarui formular HTML. Transferul datelor din JavaScript in PHP este puțin mai compliat. Există trei metode pentru această operație:
Utilizarea limbajului JavaScript pentru configurarea unui modul cookie și apoi extragerea acestui modul pe alta pagină cu ajutorul limbajului PHP;
Adăugarea variabilei și valorii la o adresă URL în JavaScript și apoi utilizarea limbajului JavaScript pentru redirecționarea browserului Web către aceea adresă URL ;
Utilizarea limbajului JavaSript pentru a configura valoarea unui tip de intrare ascunsă întru-un formula HTML și apoi instruirea utilizatorului, pentru a transmite formularul către scriptul PHP.
În orice transfer JavaScript-PHP o pagină HTML trebuie să utilizeze JavaScript pentru a efectua detectarea, iar apoi trebuie folosit un script PHP separat pentru recepționarea informației. Nu puteți transera datele JavaScript către PHP fără a cere o pagină PHP de pe server după ce JavaScrip si a teminat treaba.
4. LIMBAJUL MySQL
4.1. Scurt Istoric
MySQL este cel mai popular și cel mai bun sistem de gestiune al bazelor de date open-source din lume. MySQL a fost produs de compania suedeză MySQL AB și distribuit sub Licența Publică Generală GNU.
Ca si Php, MySQL oferă performante excelente, portabilitate si fiabilitate, fiind gratuit sau la un pret foarte mic. Licența GNU GPL nu permite încorporarea MySQL în soft-uri comerciale; cei care doresc să facă acest lucru pot achiziționa, contra cost, o licență comercială de la compania producătoare.
MySQL este un sistem de gestiune al bazelor de date (DBMS – database management system) pentru baze de date relaționale (ca urmare MySQL este un sistem RDBM).
În termenii cei mai simpli, o baza de date este o colectie de date corelată sub forma de text, numere sau fisiere binare stocate și organizate de un sistem DBMS. O bază de date (in cazul nostru MySQL) este un program ce poate stoca o cantitate foarte mare de informații și o poate organiza într-un format ce este usor accesibil in mod direct sau de catre un alt program (in cazul nostru PHP).
Exista multe tipuri de baze de date, de la cele sub formă unui fisier simplu la cele relaționale și orientate spre obiecte.
O baza de date relațională folosește tabele multiple pentru stocarea informațiilor sub formă unor componente distincte. Până la inceputul anilor 70 (când a fost dezvoltat acest concept), bazele de date semănau mai mult cu niste foi de calcul tabelar, cu un tabel unic, imens, în care erau stocate toate datele. Deși necesită un efort conceptual mai mare în timpul fazelor de proiectare și programare, bazele de date relaționale oferă o îmbunătățire a nivelului de fiabilitate și integritate a datelor care compensează efortul suplimentar. Mai mult, bazele de date faciliteaza operațiile de căutare și permit utilizarea concurentă.
O bază de date vă permite să stocați, să căutați, șa sortați și să vă regăsiți datele în mod eficient.
Deci, MySQL este un server multi-user (mai mulți utilizatori) și multi-thread (mai multe fire de execuție). Utilizeaza SQL (Structured Query Language), limbajul standard de interogare a bazelor de date din întreaga lume. MySQL este disponibil în mod public din 1996, dar istoria dezvoltarii sale incepe in 1979.
Pentru a administra bazele de date MySQL se poate folosi modul linie de comandă sau, prin descărcare de pe internet, o interfață grafică: MySQL Administrator și MySQL Query Browser. Un alt instrument de management al acestor baze de date este aplicația gratuită, scrisă în PHP, phpMyAdmin.
Prin încorporarea unei baze de date într-o aplicatie Web, o parte din datele generate de Php pot fi regăsite cu MySQL. Aceasta reprezintă încă un pas pentru îndepartarea de conținutul static (codat in program) al unui site, către un conținut flexibil, deoarece flexibilitatea este un atribut cheie al unui site Web dinamic.
4.2. Tipuri de date MySQL
Sistemul MySQL utilizează următoarele tipuri de date:
Tipul numeric
Numerele pot fi intregi (scrise în format zecimal sau în format hexazecimal) sau în virgulă mobilă. Se aceeptă și notația ștințifică.
Tipul șir de caracter
Un șir de caractere este o secvență de caractere încadrată între ghilimele (simple sau duble).
Pentru a introduce într-un șir anumite caractere care au semnificații specială se
vor folosi secvențele escape. O secvență escape conține un caracter backslash
urmat de caracterul special care trebuie folosit în șir.
Tipul dată și oră
În MySQL datele sunt reprezentate în ordinea: an-luna-zi, iar ora este reprezentata sub forma: ora:minute:secunde. Exemplu data -“1985-05-09”
ora – “” .
Valoarea NULL
Valoarea NULL este o valoare fără tip. Este echivalent cu a spune că un câmp nu conține nici o valoare.
4.3. Tipuri de coloane MySQL
La crearea unui tabel trebuie specificat tipul fiecărei coloane. Diferența dintre un tip de dată și un tip de coloană constă în faptul că tipul de coloană precizează și categoria de valori pe care o poate avea aceasta.
4.3.1.Tipuri numerice de coloane utilizate în MySQL:
TINYINT [ (M) ] [UNSIGNED] [ZEROFILL]: desemnează un intreg foarte mic cuprins între -128 și 127 sau între 0 și 256 dacă este precizat atributul UNSIGNED, necesită un spațiu de stocare de un octet;
SMALLINT [ (M) ] [UNSIGNED] [ZEROFILL]: desemnează un întreg mic cuprins între -32765 și 32767, necesită un spațiu de stocare de doi octeți;
MEDIUMINT [ (M) ] [UNSIGNED] [ZEROFILL]: desemnează un întreg cuprins între -8388608 și 8388607, necesită un spațiu de stocare de trei octeti;
INT [ (M) ] [UNSIGNED] [ZEROFILL]: desemnează un întreg de marime normală cuprins între -2147483648 și 2147483647, necesită un spațiu de stocare de patru octeți.
INTEGER [ (M) ] [UNSIGNED] [ZEROFILL] echivalent cu INT;
BIGINT [ (M) ] [UNSIGNED] [ZEROFILL]: desemnează un întreg mare reprezentat pe 8 octeți;
FLOAT [ (M, D) ] [ZEROFILL]: desemnează un număr în virgulă mobilă cu simplă precizie;
DOUBLE [ (M, D) ] [ZEROFILL]: desemnează un număr în virgulă mobilă cu dublă precizie;
DOUBLE PRECISON [ (M, D) ] [ZEROFILL]: sinonim cu DOUBLE
REAL [ (M, D) ] [ZEROFILL]: sinonim cu DOUBLE
DECIMAL [ (M, D) ] [ZEROFILL]
Semnificația atributelor este următoarea:
– atributul UNSIGNED arată că nu sunt valori negative;
– atributul ZEROFILL determină completarea impicită cu zerouri a valorilor coloanelor tabelului.
4.3.2. Tipuri de dată si ora utilizate în MySQL:
DATE: desemneză o dată sub forma AAAA-LL-ZZ
DATETIME: desemează o combinație între dată și oră AAAA-LL-ZZ HH:MM:SS
TIMESPTAMP: desemnează o valoare amprentă de timp. Poate fi utilizată
pentru a stoca data și ora la care a fost creată înregistrarea.
TIME desemneză o valoare de tip oră;
YEAR: desemnează un an. Spațiul de afișare poate să fie de 4 sau de 2 caractere.
4.3.3. Tipuri de caractere utilizate de coloanele MySQL sunt:
CHAR (N): desemnează un șir de caractere de lungime fixă care poate conține maxim N caractere. Necesită un spațiu de stocare de N octeți (cuprins între 1 și 255)
VARCHAR (N): desemnează un șir de caractere de lungime variabilă
BLOB: denumește un obiect binar mare.
TEXT: sunt practic identice cu cele BLOB, cu excepția faptului că , la sortare
și comparare , valoarea BLOB sunt case sensitive, iar valorile text sunt case insensitive
ENUM: definește un obiect șir a cărui valoare este aleasă dintr-o listă de valori permise, care sunt enumerate explicit în momentul în care se crează tabelul.
SET: definește un obiect șir care este asemănător cu ENUM . Totuș, principala diferență dintre cele două tipuri este aceea că valoarile dintr-o coloană de tip SET pot conține oricare membru al listei, chiar pe toți.
4.4. Operatori MySOL
Operatori aritmetici: +(adunarea), -(scăderea), *(înmulțirea), /(împărțirea);
Operatori de comparație: =(egalitate), !=, < >(inegalitate), <(mai mic), >(mai mare), <=(mai mic sau egal), >=(mai mare sau egal),
IS NULL (acest operator testează dacă o valoare este NULL),
IS NOT NULL (acest operator testează dacă o valoare nu este NULL)
expresie BEETWEEN min AND max
expresie IN (val1, val2, val3, … , valn): rezultatul este 1 dacă expresia se
găsește în lista de valori cuprinsă între paranteze si 0 în caz contrar
expresie NOT IN (val1, val2, val3, … , valn): rezultatul este 0 dacă expresia se găsește în lista de valori cuprinsă între paranteze și 1 în caz contrar
INTERVAL (N, N1, N2, …): întoarce valoarea 0 dacă N<N1, 1 dacă N<N2 și așa mai departe;
Operatori logici: ! (NOT), || (OR), && (AND)
Operatori la nivel de bit: | (OR), & (AND), >>(deplasează operandul din partea stângă spre dreapta cu un număr de poziții egal cu operandul din dreapta),
<< (deplasează operandul din partea stângă spre stânga cu un număr de poziții
egal cu operandul din dreapta);
4.5. Functii MySQL
Funcții care au ca argumente șiruri de caractere
CONCAT(șir1, șir2, șir3, …): funcția întoarce un șir rezultat prin concatenarea șirurilor primite ca argument și NULL dacă oricare dintre argumente este NULL;
LENGTH(șir): funcția întoarce lungimea șirului transmis ca argument;
LOWER(șir): funcția întoarce șirul trimis ca argument în care majusculele sunt convertite în minuscule;
LTRIM(șir): funcția întoarce șirul eliminând spațiile de la începutul acestuia
REVERSE(șir): funcția întoarce un șir alcătuit din caracterele șirului dat ca argument în ordine inversă;
RTRIM(șir): funcția întoarce șirul dat ca argument eliminând spațiile de la sfârșitul acestuia și NULL dacă șirul șir este NULL;
TRIM(șir): funcția întoace șirul tranșmis ca argument fără eventualele spații de la începutul și sfârșitul acestuia.
UPPER(șir): funcția întoarce șirul trimis ca argument în care minusculele sunt convertite în majuscule;
Funcții numerice
ABS(x): funcția întoarce valoarea absolută a argumentului x;
CEILING(x): funcția întoace cel mai mic întreg care este mai mic decat argumentul x;
FLOOR(x): funcția întoace cel mai mare întreg care este mai mic decat argumentul x;
MOD(a,b): funcția întoace restul împărțiri numarului întreg a la numărul
întreg b;
(): funcția întroace o valoare aleatoare (număr în virgulă mobilă cu 14 zecimale) cuprinsă în intervalul 0.0-1.0;
ROUND(x): funcția întoace valoarea lui x rotunjită la cel mai apropiat întreg;
ROUND(x,n): funcția întoarce valoarea lui x rotunjită la un număr cu n cifre zecimale;
SQRT(x): funcția întoarce rădăcina pătrată a argumentului x, dacă argumentul este negativ funcția întoarce valoarea NULL;
TRUNCATE(x,n): funcția întoace valoarea argumentului x trunchiată la n zecimale.
Funcții de tip dată și oră
CURDATE(): funcția întoarce data curentă ca un șir “AAAA-LL-ZZ”;
CURTIME(): funcția întoarce ora curentă ca un șir “hh:mm:ss”;
DATA_ADD(data, INTERVAL expresie timp): funcției i se furnizează argumentul data și adaugă algebric la aceasta un interval expresie;
DATE_FORMAT(data, șir_format);
DATE_SUB(data, INTERVAL expresie timp): funcția realizează calcule similar cu DATA_ADD, cu excepția faptului că expresia se scade din dată:
NOW: funcția întoarce un șir care reprezintă data și ora curentă;
4.6. INSTRUCȚIUNI MySQL
4.6.1. Instrucțiunea CREATE
Această instrucțiune poate fi folosită atât pentru crearea unei baze de date, cât și pentru crearea unui tabel. Pentru crearea unei baze de date sintaxa este următoarea:
CREATE DATABASE numele_baza_de_date;
Sintaxa pentru crearea tabelului este:
CREATE TABLE nume_tabel (coloana_1, coloana_2,…, coloana_n);
Coloanele vor fi separate prin virgula iar fiecare coloana va avea un nume si tip.
4.6.2. Instrucțiunea INSERT
După crearea bazei de date și a tabelelor putem începe să le populăm, folosind comanda insert. Sintaxa este urmatoarea:
INSERT [LOW PRIORITY|DELAYED] [IGNORE] [INTO]
nume_tabel VALUES (val1,val2,…)
Optiunea LOW PRIORITY amână execuția instrucțiunii până ce nici un utilizator nu mai citește din tabel, iar opțiunea DELAYER pune înregistrarea într-o coadă de așteptare pentru o introducere ulterioară. Optiunea IGNORE permite ignorarea înregistrarilor care dubleză valorile cheilor unice.
4.6.3. Instrucțiunea DROP
Această instrucțiune se folosește pentru a șterge un tabel, o bază de date, un index sau o coloană dintr-un tabel. Sintaxa sa este următoarea:
DROP TABLE [IN EXISTS] nume_tabel;
DROP DATABASE [IN EXISTS] nume_baza_de_date;
4.6.4. Instrucțiunea SELECT
Regăsirea informațiilor stocate se realizează cu ajutorul instrucțiunii SELECT. Conform manualului MySQL, aceasta are sintaxa:
SELECT [opțiuni selectare] obiecte selectate
[INTO OUTFILE ‘nume fișier’ opțiuni export]
[FROM talele din care se selectează]
[WHERE condiții care trebuie îndeplinite de date]
[GROUP BY col1, col2,…]
[HAVING expresie]
[ORDER BY nume_col[ASC|DESC]]
[LIMIT [inițial], nr_înregistrări]
unde:
opțiuni selectare precizează dacă vor fi sau nu înregistrări duplicate;
obiecte selectate indică tipul obiectelor pe care dorește să le vadă utilizatorul;
nume fișier este numele fișierului în care se scrie dacă se dorește rezultatul interogării;
Clauza WHERE se folosește în cazul în care se dorește afișarea unor date care îndeplinesc anumite condiții. Condițiile se pot specifica în raport cu valorile coloanelor.
Clauza ORDER BY se folosește în cazul în care se dorește sortarea rezultatelor interogărilor. Ordinea de sortare se stabilește cu atributele ASC (ascendent) și DESC (descendent).
Clauza LIMIT se folosește atunci când rezultatul unei interogari este prea mare (conține prea multe linii), pentru a limita numarul de înregistrări.
Clauza GROUP BY grupează înregistrările aflate în rezultatul intors de instrucțiunea SELECT, conform coloanelor precizate în lista care urmează clauzei.
4.6.5. Instrucțiunea DELETE
Ștergerea înregistrarilor incluse în tabelele MySQL se realizează prin utilizarea instrucțiunii DELETE. Aceasta are următoarea sintaxă:
DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM nume_tabel
[WHERE condiție]
[ORDER BY …] [LIMIT număr_linii]
4.6.6. Instrucțiunea UPDATE
Această instucțiune este folosită atunci cand utilizatorul constată că una sau mai multe dintre înregistrări conține date incorecte, incomplete sau neactualizate.
UPDATE [LOW_PRIORITY] [IGNORE] nume_tabel
SET col_nume1=expr1 [, col_nume2=expr2 …]
[WHERE condiție]
[ORDER BY …]
[LIMIT număr_linii]
4.6.7. Instrucțiunea CREATE INDEX
În mod obișnuit indexurile sunt create în același timp cu tabelele care le conțin utilizând instrucțiunea CREATE TABLE. Instucțiunea CREATE TABLE permite, totuși, adăugarea indexurilor după crearea tabelului.
Sintaxă:
CREATE [UNIQUE|FULLTEXT] nume index ON
nume tabel (nume_coloană_index [(lungime)], …)
4.6.8. Instrucțiunea ALTER TABLE
Instrucținea ALTER TABLE pemite modificarea strucurii unui tabel. Are următoarea sintaxă:
ALTER [IGNORE] TABLE nume_tabel1
specificator [, specificator…]
4.7. Proiectarea bazei de date
Primul pas în crearea și utilizarea unei baze de date este stabilirea structurii acesteia. Proiectarea bazei de date numită și modelarea bazei de date, este un pas esențial pentru gestionarea, cu succes, pe termen lung a informatiilor.
Cheile sunt date prin care sunt identificate rânduri de informatii dintr-un tabel.
O cheie primară este un identificator unic care trebuie să respecte anumite reguri:
să aibă intodeauna o valoare (nu poate fi NULL);
să nu-și schimbe niciodată valoarea;
să aibă o valoare unică pentru fiecare înregistrare din tabel.
4.8. Relații între baze de date
Relațiile dintre bazele de date presupune modul în care datele dintr-un tabel sunt legate de cele din alt tabel. O relație între două tabele poate fi de tip unu-la-unu, unu-la-multe, sau multe-la-multe.
Relație unu-la-unu este prezentată în Figura 4.1:
Figura 4.1
Relație unu-la-multe este prezentată în Figura 4.2:
Figura 4.2
Relație multe-la-multe este prezentată în Figura 4.3:
Figura 4.3
4.9. Normalizarea
Normalizarea a fost dezvoltată de un cercetător de la IBM E.F. Codd, la începutl anilor ’70, tot el a dezvoltat și bazele de date relaționale.
Normalizarea unei baze de date constă în principal în descompunerea modelului bazei de date în mai multe relații astfel încât să se reducă la maxim redundanța datelor și implicit să se elimine anomaliile de actualizare, ștergere și inserare.
Există mai multe nivele de normalizare a relațiilor, primele patru nivele sunt definite în termenii dependentelor funcționale și sunt: prima, a doua, a treia formă normală și forma normală Boyce – Codd (notate FN1, FN2, FN3 și FNBC). A patra formă normală (FN4) și a cincea formă normală (FN5) sunt definite în termenii dependentelor multivalorice, respectiv a dependentelor de cuplare. Diferitele nivele de normalizare impun condiții din ce în ce mai restrictive asupra relațiilor. Astfel o relație aflată pe un nivel de normalizare satisface toate restricțiile cerute de nivelele inferioare de normalizare.
Forma normală 1 (1NF )
Toate tabelele bazei de date pentru a fi în prima formă normală trebuie să aibă următoarele două prorietati:
Fiecare coloană trebuie să conțină o singură valoare (descrisă uneori ca fiind indivizibilă);
Nici un tabel nu poate avea coloane repetate pentru date corelate.
Forma normală 2 (2NF)
Pentru ca o bază de date să fie în a doua formă normală trebuie să fie deja în prima formă normală, apoi trebuie să indentificați coloanlele ale căror valori se repetă pe mai multe rânduri. Aceste coloane trebuie transformate în valori proprii, apoi legate de tabelul original
Forma normală 3 (3NF)
O bază de date este în a treia formă normală dacă este deja în a doua formă normală și dacă toate coloanele care nu conțin chei sunt dependente de cheia primară.
Aducerea unei baze de date pe o formă normală superioară presupune extragerea unor atribute din relațiile existente și crearea pe baza lor a unor noi relații astfel încât rezultatul să respecte forma normală în cauză. În aplicațiile reale, dacă se reușește aducerea datelor în a treia formă normală, este suficient.
4.10. Conectarea din PHP la MySQL și selectarea bazei de date
Prima operație care trebuie efectuată atunci când se dorește accesul din PHP la o bază de date constă în stabilirea conexiunii cu serverul MySQL. Aceasta se realizează prin folosirea unei funcții cu nume sugestiv, mysql_connect():
$dbc=mysql_connect($host, $user, $password );
Această funcție deschide o conexiune cu serverul MySQL. Funcției mysql_connect() i se transmit trei argumente:
numele calculatorului pe care este instalat programul MySQL (gazda);
numele utilizatorului;
parola utilizatorului;
Dacă este realizată conexiunea, variabila $dbc va deveni un punct de referință pentru toate interacțiunile ulterioare cu baza de date.
În Figura 4.4 este prezentat modul de lucru al celor mai multe aplicații Web folosind PHP și MySQL.
După conetarea la MySQL urmează selectarea bazei de date, această comandă este echivaletă cu execuția comenzi: Use nume_baza_de_date în clientul mysql și este realizată prin apelarea funcției mysql_slect_db():
mysql_select_db($datebase_name);
După ce am realizat conetarea la server și am selectat o bază de date, vom începe execuția interogărilor. Acestea pot fi interogări elementare, cum ar fi inserări, actualizări sau ștergeri, ori uniuni complexe care returnează grupuri multiple. Funcția folosită pentru execuția unei interogari este mysql_query():
$result=mysql_query($query) ;
În cazul interogărilor simple, precum INSERT, UPDATA, DELETE (care nu returnează întregistrări), variabila $result va fi TRUE sau FALSE, în funcție de succesul interogării. Pentru interogările complexe, care returnează înregistrări (SELECT, SHOW, DESCRIBE și EXPLAIN), variabila $result va fi o legătură către o resursă reprezentând rezultatele interogării, dacă interogarea a fost executată cu succes, și FALSE în caz contrar.
Principalul instrument pentru manipularea instrucțiunii SELECT, este funcția mysql_feach_array(), care primește ca argument variabila reprezentând rezultatul interogării și returnează rândurile de date unul câte unul, sub formă de tablou.
Actualizarea înregistrărilor dintr-o bază de date cu un script Php se realizează prin intermediul instrucțiunii UPDATE, iar execuția cu succes a interogării poate fi verificată cu funcția Php mysql_affected_rows().
În timp ce funcția mysql_num_rows() retunrează numărul de rânduri gnerate de o interogare SELECT, funcția mysql_affected_rows() returneză numărul de rânduri afectate de o interogare INSERT, UPDATE sau DELETE.
Funcția este folosită astfel:
$num= mysql_affected_rows($dbc)
Un ultim pas al scripturilor, deși obțional, constă în închiderea conexiunii la MySQL:
mysql_close();
Apelarea acestei funcții nu este oblicatorie deoarec PHP inchide automat conexiunea la sfârșitul scriptului, dar este recomandabilă, ca stil bun de programare.
5. PREZENTAREA APLICAȚIEI
Dezvoltarea site-urilor Web pentru comeț electronic reprezintă o aplicație importantă a limbajelor PHP și MySOL. Pentru orice tip de aplicație pentru comerț electronic există trei tipuri principale de date care trebuiesc stocate:
informații despre produse;
informații despre clienți;
informații despre comenzi.
Aplicația se concentrează pe funcționalitatea de bază a unui site pentru comerț
electronic si presupune: produselor pentru public, creara unui coș pentru cumpărături și înregistrarea comenților într-o bază de date.
Aplicația reprezintă un magazin virtual pentru telefoane mobine.
Din punct de vedere tehnologic aplicația de fată utilizează pachetul WAMP.
WAMP este o suită de aplicatii care îți dau posibilitatea de a instala rapid un server web, o baza de date MySQL și limbajul de programare PHP. Instalarea și configurarea suitei se face automat și poate fi controlata din centrul de comanda, folosind un sistem de meniuri intuitive. Acest pachet care la versiunea 2 oferă Apache 2.2.8, MySQL 5.0.51a și PHP 5.2.5 este disponibil free la adresa http://www.wampserver.com/. Serverul Web Apache este cel mai raspândit server utilizat in lume, în special pentru sistemele de operare diferite de Windows.
5.1. Creearea bazei de date
Baza de date utilizată o vom numi “magazinvirtual”. Mai întâi vom creea această baza de date prin comanda:
CREATE DATABASE magazinvirtual;
Baza de date “magazinvirtual” va conține trei tabele:
tabelul categorii: contine informațiile despre categoriile de produse disponibile;
tabelul produse: conține informatiile despre produsele;
tabelul utilizatori: conține informații despre utilizatori acestui magazin virtual.
1. Tabelul 5.1 prezintă structura tabelului categorii:
Tabel 5.1
Pentru crearea acestui tabel se va folosi urmatoarea interogare:
CREATE TABLE `categorii` (
`id` int(11) NOT NULL auto_increment,
`nume` varchar(64) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM;
Tabelul 5.2 prezinta structura tebelului produse:
Tabel 5.2
Pentru creearea acestui tabel se va folosi urmatoarea interogare:
CREATE TABLE `produse` (
`id` int(11) NOT NULL auto_increment,
`nume` varchar(64) NOT NULL,
`descriere` text NOT NULL,
`pret` float NOT NULL,
`categorie_fk` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM ;
3. Tabelul 5.3 prezintă structura tabelului utilizatori:
Tabelul 5.3
Pentru creearea acestui tabel se va folosi urmatoarea interogare:
CREATE TABLE `utilizatori` (
`id` int(11) NOT NULL auto_increment,
`nume_prenume` varchar(60) NOT NULL,
`adresa` varchar(255) NOT NULL,
`telefon` varchar(20) NOT NULL,
`email` varchar(64) NOT NULL,
`parola` varchar(32) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `email` (`email`)
) ENGINE=MyISAM ;
Dupa crearea celor trei tabele baza de date in phpMyAdmin va arata in felul urmator:
Figura 5.1
Diagrama de relatii între entitati descrie legaturile existente între cele trei tabele și este prezentată în Figura 5.2:
Figura 5.2
Din figura de mai sus se observă tipul relațiilor dintre cele trei tabele. Între tabelul categorii și tabelul produse exista relația “unu la multe” (mai multe produse au aceeași categorie). Între tabelul utilizatori și tabelul produse există relația “unu la multe” (un utilizator poate selecta mai multe produse).
5.2. Inserarea inregistrarilor în tabele
Pentru tabelul categorii avem înregistrarile prezentate în Tabelul 5.4:
INSERT INTO `categorii` (`id`, `nume`) VALUES
(1, 'Nokia'),
(2, 'LG'),
(3, 'Siemens'),
(4, 'Samsung'),
(5, 'SonyEricson'),
(6, 'Panasonic'),
(7, 'Philips'),
(11, 'Motorola');
Pentru tabelul utilizatori sunt inregistrați useri ca în Tabelul 5.5:
Pentru tabelul utilizatori sunt inregistrati urmatorii useri:
Tabel 5.5
Pentru tabelul produse primele 10 inregistrati de produse sunt prezentate în Tablul 5.6:
Tabel 5.6
5.3. Crearea șablonului pubic
Pagina de start a site-ului Magazin Virtual este prezentată în Figura 5.3
Acțiunile care se pot realiza pe acest site sunt următoarele:
"home": pagina principală a site-ului;
"inregistrare": crează un cont pentru utilizatori. Vizitatorul site-ului trebui să completeze un formular de înregistrare;
"autentificare": realizează autentificarea utilizatorului printr-o adresa email și o parolă;
"iesire" : folosit pentru ieșire din cont;
"contact" : oferă informații despre firmă: numar de telefon, adresa de email ;
"intrebare" : permite trimiterea prin email a întrebărilor despre produse;
"categorie": reprezintă categoriile de produse ce pot fi vizualizate și comandate
"adauga_cos" : folosit pentru a adăuga un nou produs în coș;
"cos": oferă informații despre lista de produse selectate de utilizator;
"sterge_cos": permite ștergerea produselor din coșul de cumpărături;
"trimite_comanda": realizează trimiterea comenzi.
Aceste acțiuni sunt definite în scriptul index.php ca elemente ale tabloului $actions.
// initializare tablou cu actiuni
$actions = array("home", "autentificare", "iesire", "inregistrare", "contact", "intrebare", "categorie", "adauga_cos", "cos", "sterge_cos",
"trimite_comanda");
if (in_array($_GET['action'], $actions))
{
$position = $_GET['action'];
}
else
{
$position = "home";
}
În cazul în care utilzatorul nu efectuează nici o acțiune site-ul va rămâne la acțiunea “home”.
Pentru inregistrarea utilizatorului acesta va trebui să completeze un formular cu date personale: Nume și prenume, Adresa, Telefon, Email, Password. Codul sursa pentru acest formular este descris in scriptul main.inc.php:
<form action="index.php?action=inregistrare" method="POST">
<table width="100%" style="background-color: efefef; padding: 20px;">
<tr>
<td style="width: 150px;">Nume si prenume:</td>
<td><input type="text" name="nume_prenume"></td>
</tr>
<tr>
<td>Adresa:</td>
<td><input type="text" name="adresa"></td>
</tr>
<tr>
<td>Telefon:</td>
<td><input type="text" name="telefon"></td>
</tr>
<tr>
<td>Email:</td>
<td><input type="text" name="email"></td>
</tr>
<tr>
<td>Parola:</td>
<td><input type="parola" name="parola"></td>
</tr>
<tr>
<td colspan="2" align="center">
<br><br>
<input type="submit" name="inregistrare" value="Inregistrare gratuita!">
<input type="button" value="Anulare"
onclick="document.location='index.php'">
</td>
</tr>
</table>
</form>
În Figura 5.4 este prezentat formularul de înscriere lansat în urma acțiunii “înregistrare”.
Figura 5.4
Pentru autentificarea unui utilizator se va introduce adresa de email, parola și se va da click pe butonul pentru autentificare. În cazul în care adresa de email sau parola sunt scrise greșit se va afișa un mesaj de tip alert: “Email sau parolă introduse greșit!”, după care se revine la pagina anterioară pentru a reintroduce email-ul și parola.
În scriuptul index.php sunt definite aceste operații:
if ($position == "autentificare")
{
if (autentificare($_POST['email'], $_POST['parola']))
{
}
else
{
echo "<script>alert('Email sau parola introduse gresit!');</script>";
echo "<script>document.location='index.php';</script>";
}
Scriptul funcțion.inc.php descrie funcția de autentificare care primește ca argumente variabilele $email. și $parola. Acestor variabile li se atribuie valorile introduse de utilizator, iar apoi se realizează selectarea din baza de date a utilizatorilor a căror adresă de email și parolă corespunde cu cele introduse de utilizator.
<?php
function autentificare($email, $parola)
{
global $dbh;
$email = mysql_real_escape_string($email);
$parola = mysql_real_escape_string($parola);
$sql =
"
SELECT
*
FROM
utilizatori
WHERE
email = '$email' AND
parola = MD5('$parola')
";
$stmt = $dbh->prepare($sql);
$stmt->execute();
if($row = $stmt->fetch(PDO::FETCH_ASSOC))
{
$_SESSION['vs']['autentificat'] = TRUE;
$_SESSION['vs']['utilizator'] = $row;
header("location:index.php");
}
else
return false;
}
?>
În Figura 5.5 este prezentat utilizatorul autentificat cu numele Radacina Maria . Acest utilizator poate efectua următoarele operatii: adăuga produse în “coș”, vizualizaze coș de cumpărături, șterge produse din coș și trimitere comandă.
Figura 5.5
Aceste operați sunt prezentate în scriptul index.php.
if ($position=="trimite_comanda")
{
foreach($_SESSION['vs']['cos'] as $key=>$prod_id)
{
$sql = "SELECT * FROM produse WHERE id=$prod_id ORDER BY
nume";
$stmt = $dbh->prepare($sql);
$stmt->execute();
$row=$stmt->fetch();//pune rezultatul interogari in $row
$produse .= //concatenare produse
"
Nume produs: {$row['nume']}
Cod produs: {$row['id']}
";
}
$subject = "Virtual Shop – comanda"; //subiectul de la mail
$message = "
Comanda:
$produse;
De la:
{$_SESSION['vs']['utilizator']['nume_prenume']}
{$_SESSION['vs']['utilizator']['telefon']}
";
$to = "[anonimizat]";
$from = "Client ";
$headers = "From: $from";
mail($to,$subject,$message,$headers);
unset($_SESSION['vs']['cos']);//goleste cosul
session_commit();//inchide sesiunea curenta
echo "<script>alert('Comanda a fost trimisa. Veti fi contactat telefonic pentru
confirmare. Va multumim!')</script>";
echo "<script>document.location='index.php'</script>";
echo $message;
die();
}
elseif ($position=="sterge_cos")
{
echo "aa";
$id = (int) ($_GET['id']);
unset($_SESSION['vs']['cos'][$id]);
session_commit();
header("location: index.php?action=cos");
die();
}
elseif ($position=="adauga_cos")
{
$id = (int) ($_GET['id']);
$_SESSION['vs']['cos'][] = $id;
echo "<script>alert('Produsul a fost adaugat cu succes in cosul de cumparaturi.
Dupa ce selectati toate produsele dorite, pentru a trimite comanda selectati din
meniu Cosul meu, apoi trimitere comanda.')</script>";
echo "<script>history.back();</script>";
die();
}
Pentru a afla informații suprimentare despre produsele magazinului, utilizatorul poate să trimita un mesaj cu eventualele întrebări. În cazul în care textul introdus de utilizator este prea scurt (minim 3 caractere) se va semnala un mesaj de tip “alert” iar utilizatorul va trebui să introduă din nou textul.
if ($position == "intrebare")
{
if (strlen($_POST['intrebare']) < 3)
{
echo "<script>alert('Intrebarea este prea scurta!')</script>";
echo
"<script>document.location='index.php?action=contact';</script>";
die();
}
else
{
echo "<script>alert('Va multumim ca ati vizitat pagina noatra. Vom
raspunde in cel mai scurt timp.')</script>";
echo "<script>document.location='index.php';</script>";
$subject = "Virtual Shop – intrebare";
$message = "
Intrebare:
{$_POST['intrebare']}
De la:
{$_SESSION['vs']['utilizator']['nume_prenume']}
";
$to = "[anonimizat]";
$from = "Client ";
$headers = "From: $from";
mail($to,$subject,$message,$headers);
die();
}
6. CONCLUZIE
Prin lucrarea de față am încercat să prezint noțiuni de bază pentru crearea unui site Web dinamic, care permite utilizatorilor să acceseze, prin intermediul unui browser Web, informații diverse de obicei stocate in baza de date.
Lucrarea este structurată în șapte capitole oferind informații despre limbjele PHP,
MySQL și HTML.
Capitolul 2 prezintă noțiuni fundamentale necesare creări documentelor HTML cuprinzând infomații despre inserarea tabelelor, inserarea imaginilor, formatarea textului, inserarea link-urilor într-un document HTML.
Capitolul 3 prezintă principalele structuri de control și funcții ale limbajului de scripting PHP care pemite de fapt realizarea site-urilor Web dinamice.
Capitolul 4 oferă noțiuni de bază necesare cunoașteri, înțelegerii și utilizării șistemului de gestiune a bazelor de date relaționale MySQL.
BIBLIOGRAFIE
ANGHEL, Traian – „Dezvoltarea aplicațiilor WEB folosind XHTML, PHP și MySQL”, Iași, Ed. Polirom, 2005.
ANGHEL, Traian – „Programarea în PHP : Ghid practic”, Iași, Ed. Polirom, 2005.
ULMAN L., MOCANU C. – „PHP și MySQL pentru site-uri web dinamice”, București, Ed. Teora, 2006.
DARIE Cristian, Bucică Mihai – “PHP5 și MySQL pentru comerț electronic”, București, Ed Teora, 2006
DAVE Taylor – “Crearea paginilor Web cu HTML 4” , București, Ed Teora, 1998
„PHP Manual”, http://www.php.net/docs.php,
„MySQL Reference Manual”, http://www.mysql.com,
BIBLIOGRAFIE
ANGHEL, Traian – „Dezvoltarea aplicațiilor WEB folosind XHTML, PHP și MySQL”, Iași, Ed. Polirom, 2005.
ANGHEL, Traian – „Programarea în PHP : Ghid practic”, Iași, Ed. Polirom, 2005.
ULMAN L., MOCANU C. – „PHP și MySQL pentru site-uri web dinamice”, București, Ed. Teora, 2006.
DARIE Cristian, Bucică Mihai – “PHP5 și MySQL pentru comerț electronic”, București, Ed Teora, 2006
DAVE Taylor – “Crearea paginilor Web cu HTML 4” , București, Ed Teora, 1998
„PHP Manual”, http://www.php.net/docs.php,
„MySQL Reference Manual”, http://www.mysql.com,
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Crearea Si Publicarea Unei Pagini PE Internet (ID: 138578)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
