Site Dinamic Pentru O Agentie Imobiliara

SITE DINAMIC PENTRU O AGENȚIE IMOBILIARĂ

CUPRINS

INTRODUCERE

I. ACTIVITATEA DE INTERMEDIERE IMOBILIARĂ

I.1. EVOLUTIA PIETEI DE INTERMEDIERE IMOBILIARA IN ROMANIA

I.2. PIATA LOCALA A TRANZACTIILOR IMOBILIARE

I.3. ASOCIATIA ROMANA A AGENTIILOR IMOBILIARE (A.R.A.I.)

I.4. PREZENTARE AGENTIEI IMOBILIARE “CASA TA”

II. INTERNET-UL

II.1. INTRODUCERE

II.1.1 Internet-ul

II.1.2. Aplicații pentru Internet

II.2. WEB SERVERS ȘI WEB APPLICATION SERVERS

II.2.1. Servere Web

II.2.2. Pagini Web

II.2.3. Browsere Web

II.3. PAGINI WEB STATICE ȘI DINAMICE

II.3.1. HTML

II.3.2. JavaScript

II.3.3. Alte Tehnologii pe parte de Client

II.3.4. URL-uri

II.3.5. Avantajul Paginilor Web Dinamice

II.3.6. Înțelegerea Aplicatiilor Web

III. INTRODUCERE ÎN PHP

III.1. NOȚIUNI FUNDAMENTALE

III.1.1. Ce este PHP?

III.1.2. Ce poate face PHP?

III.2. ELEMENTE DE BAZĂ ALE SINTAXEI

III.2.1. Ieșirea din modul HTML

III.2.2. Separarea instrucțiunilor

III.2.3. Comentariile

III.3. TIPURI DE DATE

III.4 VARIABILE

III.4.1 Noțiuni de bază

III.4.2 Variabile predefinite

III.4.3. PHP Superglobals

III.4.4. Folosirea variabilelor statice

III.4.5. Variabile din afara mediului PHP

III.4.6. Cookie-uri HTTP

IV. BAZE DE DATE ȘI SQL

IV.1. CONCEPTE ALE BAZELOR DE DATE RELAȚIONALE

IV.1.1. Structura unei baze de date relaționale

IV.1.2. Normalizarea tabelelor

IV.1.3. Structured Query Language

IV.2. IMPLEMENTAREA UNEI BAZE DE DATE

IV.2.1. Proiectarea unei baze de date

IV.2.2. Modelare E-R

IV.2.3. Identificarea coloanelor

IV.2.4. Gruparea coloanelor în entități

IV.2.5. Identificarea cheilor primare

IV.2.6. Identificarea cheilor externe

IV.2.7. Rafinarea modelelor E-R

V. MYSQL

V.1. INTRODUCERE ÎN MYSQL

V.2. CARACTERISTICILE DE BAZA ALE MYSQL

V.2.1. Componente interne și portabilitate

V.2.2. Tipuri de coloane

V.2.3. Comenzi și funcții

V.2.4. Securitate

V.2.5. Scalabilitate și limite

V.2.6. Conectivitate

V.2.7. Localizare

V.2.8. Clienți și unelte

V.3. FUNDAMENTE MYSQL

V.3.1. Conectarea și deconectarea de la server

V.3.2. Introducerea interogărilor

V.3.3. Crearea și utilizarea unei baze de date

V.3.4. Crearea și selectarea unei baze de date

V.3.5. Crearea tabelelor

VI. APLICAȚIE

VI.1. DESCRIEREA SITE-ULUI

VI.1.1. Structura site-ului

VI.1.2. Baza de date MySQL

VI.2. UTILIZAREA BAZELOR DE DATE MYSQL

VI.2.1. Conectarea la serverul MySQL

VI.2.2. Selectarea bazei de date

VI.2.3. Închiderea conexiunii cu serverul MySQL

VI.2.4. Executarea interogărilor UPDATE, INSERT și DELETE

VI.2.5. Funcția mysql_query()

VI.2.6 Instrumente ajutatoare realizare site

BIBLIOGRAFIE

INTRODUCERE

Ultimii ani au adus o spectaculoasă dezvoltare a Internetului, acesta devenind un mediu propice pentru aproape orice tip de afacere. Internetul poate constituii punctul de plecare al oricărei firme de succes datorat în special costurilor si eforturi minime de impunere pe o piață vastă. Este singurul mediu de comunicatii care facilitează accesul direct la o piata având sute de milioane de clienti potențiali din toata lumea, 24 de ore zilnic și în care toate companiile sunt egale.

Proiectul realizat valorifică imensele avantaje ale Internetului ajutând utilizatorii acestei aplicații să se impună mai ușor pe o piată concurențială puternică.

Proiectul a avut ca punct de plecare cerința agenției imobiliare “Casa Ta” de a rezolva anumite neajunsuri apărute în activitatea sa prin crearea unui instrument care să ofere o gestionare ușoară a anunțurilor imobiliare și a clienților agenției și un potențial mare de publicitate, deschis utilizatorilor mijloacelor de informare moderne.

Prezenta lucrare descrie modul de proiectare, programele și limbajele utilizate în realizarea aplicației informatice. Lucrarea este structurată în șase capitole, fiecare capitol tratând câte o componentă importantă a aplicației. Sunt prezentate limbajele utilizate în realizarea aplicației (HTML, PHP), sistemul relational folosit (SQL), rețeaua mondială Internet și un studiu al pieței imobiliare naționale și locale.

Interfața grafică a aplicației a fost construită pe baza unui template, pe care toate paginile site-ului îl folosesc pentru a păstra același layout pe întregul site. De asemenea, pentru setarea modalităților de afișare a diferitelor elemente HTML, pentru alegerea stilului site-ului s-a folosit un fișier .css, acesta putând fi modificat sau înlocuit și întregul site își schimbă automat înfățișarea.

Prin combinarea acestor două produse, PHP și MySQL, aplicația realizată este foarte flexibilă, putându-se adăuga noi funcționalități dacă este necesar.

I. ACTIVITATEA DE INTERMEDIERE IMOBILIARĂ

I.1. Evoluția pieței de intermediere imobiliară în România

Imobilele au reprezentat întotdeuna cele mai profitabile și sigure investiții, iar această tendință s – a accentuat în decursul ultimilor ani.

Piața tranzacțiilor imobiliare din România este o piată relativ nouă, ea luând ființă la începutul anului 1990. Din acel moment activitatea imobiliară a devenit una din cele mai profitabile afaceri. Afacerile imobiliare au început sa ia amploare în anul 1992, odata cu împroprietarirea chiriașilor. De aici până la dezvoltarea pieței imobiliare nu a fost decât un pas, făcut o data cu creșterea număruli de tranzacții. De altfel, toamna anului 1997 a fost perioada istorică cea mai bună pentru participanții la piața tranzacțiilor imobiliare. Conform unei estimări realizate de Ranko S.I.T.I., în 1997 au fost realizate circa 23.000 de tranacții în valoare de 1,1 miliarde de dolari.

Piața imobiliară este ciclică și imprevizibilă, fiind caracterizată ca o piață foarte convulsivă, capricioasă chiar, de câțiva ani aflându – se într-o recesiune continuă. Din 1998, prețurile bunurilor imobiliare au scazut cu 18-35%, iar specialiștii se asteaptă în continuare la scăderea prețurilor. Cu toate acestea, volumul vânzarilor ramâne în continuare important, mărturie stând faptul că anul trecut au fost realizate tranzacții în valoare de 700 de milioane de dolari. Începutul anului 2001 aduce o ușoară revigorare a pieței. Dacă sub aspect cantitativ piața imobiliară românească nu a atins standardele internaționale, privind prin prisma prețurilor imobilelor, România a început sa fie practic „integrată în Europa“.În anul 1993 un apartament cu doua camere din București valora aproximativ 6000 de dolari, astăzi prețul aceluiași imobil s-a dublat. Cu toate acestea, raportul dintre cerere și ofertă a rămas neschimbat. Dar nu numai în cadrul prețului locuintelor s-au produs modificări substanțiale, ci și în cel al terenurilor. Astăzi, un metru pătrat de teren construibil în centrul Bucureștiului a ajuns să echivaleze ca preț cu un metru pătrat de teren din capitala Spaniei, Madrid, adică în jurul sumei de 700-800 de dolari. Cu toate acestea, prețurile terenurilor au rămas oarecum în urma celorlalte prețuri practicate în alte metropole europene. Cele mai mari prețuri la locuinte sau terenuri se practica în București și zonele turistice, cum ar fi Constanța, Brasov, Timișoara sau Cluj, însa și acolo prețurile se negociaza în funcție de așezare și de facilitățile existente.

O dată cu intensificarea tranzacțiilor și dezvoltarea pieței au apărut și intermediari specializați pentru acest gen de afaceri. Această activitatea profesională de intermediere a actelor juridice care au ca obiect bunuri imobile, precum și cea de administrare a acestora se desfășoară de persoanele fizice și juridice care au calitatea de agent imobiliar. Agentul imobiliar și implicit agențiile imobiliare au apărut ca o necesitae a siguranței, legitimității, ușurinței și rapidității de încheiere a unei tranzacții imobiliare.

Regimul acestor intermediari imobiliari a fost reglementat prin Ordonanța Guvernului nr. 3 din 21 ianuarie 2000 și publicata în Monitorul Oficial, Partea I nr. 26 din 25 ianuarie 2000 privind organizarea activității agenților imobiliari. Legea face referire la cadrul de organizare și funcționare, condițiile de îndeplinit pentru obținerea calității de agent imobiliar, renumerarea acestora și reglementează organizarea și functionarea “Uniunii Nationale a Agenților Imobiliari”.

Agentul imobiliar poate fi: persoană juridică, societate comercială ce are ca obiect de activitate intermedierile imobiliare; persoane angajate în cadrul unei astfel de societati comerciale; asociati sau actionari apartinând unei astfel de societăți comerciale.

Agențiile imobiliare au ca obiect al intermedierii: case, apartamente în vile sau blocuri, terenuri agricole sau de construcții, spații comerciale, hale industriale, spații depozitare, sedii firme. Serviciile oferite permit incheierea unor afaceri sigure și rapide fiind adaptate obiectului tranzacției. Aceste servicii sunt:

Medierea intre vânzător și cumparător sau chiriaș și proprietar;

Asigurarea publicității imobilelor supuse vânzării/cumpărarii/închirierii;

Perfectarea actelor necesare pregătirii dosarului pentru Notariat;

Garantarea tranzației imobiliare prin verificarea caietului de sarcini de la Grefa judecătoriei.

Desfășurarea activității unei agenții imobiliare se face cu metode specifice și diferă mai mult sau mai puțin de la o firmă la alta însă derularea unei tranzacții are următorii pași comuni: agentul imobiliar caută și ia notă de oferta privind cedarea în totalitate sau în parte, definitiv sau temporar a drepturilor unei persoane asupra unui imobil, drept certificat printr-un act juridic; face publicitate acestei oferte, întâmpină și conduce pe cei interesați pentru a viziona imobilul și le prezintă acestora la cerere actele puse la dispoziția lui de către ofertant; o dată acceptată oferta, asigură negocierea prețului, a condițiilor de plată și de transfer al imobilului, poate primi mandat pentru a administra actele juridice sau pentru a obține și prezenta parților sau notarului acte precum certificatul de sarcini, extras de carte funciară, certificat fiscal, certificat de urbanism, autorizație de construcție, etc. Pentru aceste servicii agenția percepe un comision de 1.5-3 % din valoarea vânzare, iar în cazul închirierii comisionul are valoarea a două chirii lunare.

Anul 2009, stapânit de influențele negative ale crizei financiare,aduce previziuni sumbre pentru sectorul imobiliar si industrie, în țară și întreaga lume.

În România, din planul așternut pe hârtie, ar fi trebuit sa ajungă pe piața imobiliară undeva în jurul a 10.000 de locuințe. Realitatea însă arată că doar 2.500 de spații locative ar putea fi terminate și gata pentru a fi date in folosință.

Dificultațile sectorului imobiliar s-au facut simțite înca din 2008. An în care criza financiara a evoluat pe plan mondial distrugând până și cele mai marețe proiecte sau planuri de investiții.

În țara noastră, din 9.000 de locuinte anunțate la începutul anului trecut, au fost gata doar 800. Analiștii estimau în aceeași perioadă că cel mai cumplit scenariu ar fi cel al livrării a circa 3.000 de locuințe.

Potrivit specialiștilor, 2009 va fi anul celor cu finanțare asigurată.

Cu toate acestea, perspectivele rămân negre. Estimările nu dau șanse mari dezvoltării sectorului imobiliar daca în scurt timp nu va fi deblocată creditarea.

I.2. Piața locală a tranzacțiilor imobiliare

În județul Argeș apariția primelor intermediari imobiliari a fost destul de întârziată față de marile orașe ale țării. Astfel prima agenție imobiliară s-a înființat în 1996 la scurt timp după apariția ziarului “Curierul Zilei” în cadrul trustului de presă Brio Star Ind după modelul celor bucureștene, iar primul agent imobiliar a fost Cornelia Curtean. La scurt timp au apărut și alte firme de intermediere: John & co, Mondo Serv Invest, G & C Imobil Service, ajungându – se în 1998 la un număr de 27, iar în 2000 peste 35 de agenții.

Piața imobiliară piteșteană este destul de bogată și se evidențiază la alta însă derularea unei tranzacții are următorii pași comuni: agentul imobiliar caută și ia notă de oferta privind cedarea în totalitate sau în parte, definitiv sau temporar a drepturilor unei persoane asupra unui imobil, drept certificat printr-un act juridic; face publicitate acestei oferte, întâmpină și conduce pe cei interesați pentru a viziona imobilul și le prezintă acestora la cerere actele puse la dispoziția lui de către ofertant; o dată acceptată oferta, asigură negocierea prețului, a condițiilor de plată și de transfer al imobilului, poate primi mandat pentru a administra actele juridice sau pentru a obține și prezenta parților sau notarului acte precum certificatul de sarcini, extras de carte funciară, certificat fiscal, certificat de urbanism, autorizație de construcție, etc. Pentru aceste servicii agenția percepe un comision de 1.5-3 % din valoarea vânzare, iar în cazul închirierii comisionul are valoarea a două chirii lunare.

Anul 2009, stapânit de influențele negative ale crizei financiare,aduce previziuni sumbre pentru sectorul imobiliar si industrie, în țară și întreaga lume.

În România, din planul așternut pe hârtie, ar fi trebuit sa ajungă pe piața imobiliară undeva în jurul a 10.000 de locuințe. Realitatea însă arată că doar 2.500 de spații locative ar putea fi terminate și gata pentru a fi date in folosință.

Dificultațile sectorului imobiliar s-au facut simțite înca din 2008. An în care criza financiara a evoluat pe plan mondial distrugând până și cele mai marețe proiecte sau planuri de investiții.

În țara noastră, din 9.000 de locuinte anunțate la începutul anului trecut, au fost gata doar 800. Analiștii estimau în aceeași perioadă că cel mai cumplit scenariu ar fi cel al livrării a circa 3.000 de locuințe.

Potrivit specialiștilor, 2009 va fi anul celor cu finanțare asigurată.

Cu toate acestea, perspectivele rămân negre. Estimările nu dau șanse mari dezvoltării sectorului imobiliar daca în scurt timp nu va fi deblocată creditarea.

I.2. Piața locală a tranzacțiilor imobiliare

În județul Argeș apariția primelor intermediari imobiliari a fost destul de întârziată față de marile orașe ale țării. Astfel prima agenție imobiliară s-a înființat în 1996 la scurt timp după apariția ziarului “Curierul Zilei” în cadrul trustului de presă Brio Star Ind după modelul celor bucureștene, iar primul agent imobiliar a fost Cornelia Curtean. La scurt timp au apărut și alte firme de intermediere: John & co, Mondo Serv Invest, G & C Imobil Service, ajungându – se în 1998 la un număr de 27, iar în 2000 peste 35 de agenții.

Piața imobiliară piteșteană este destul de bogată și se evidențiază prin numărul mare al terenurilor construibile atât central cât și la periferia orașului. Apartamentele au o pondere însemnată în totalul intermedierilor, prețul acestora având ca și componentă majoră zona în care este situat apartamentul. Diferentele de preț pentru apartamentele aflate în aceeași zona și cu același număr de camere sunt date de o serie de factori, cum ar fi: categoria împreuna cu confortul pe care îl oferă aprtamentul și etajul la care este situat; amenajari interioare; utilități și dotări oferite, toate aceste ducând la o diferenta de 20% din prețul apartamentului. Apartamentele la casă – au un preț mai ridicat justificat prin confort și câteva particularități suplimentare, pe care le oferă – numarul de locatari redus fată de apartamentele la bloc; existența unei curți interioare, accesul auto. Prețurile caselor fluctuează foarte mult, deoarece apar multe aspecte diverse față de cele prezentate mai sus cum ar fi: anul construcției, stilul construcției, diferența dintre suprfața totală și suprafața construită, frontul stradal, etc. În domeniul terenurilor se observă o dorință de achiziție a celor din imprejurimile Piteștiului, în localități cum ar fi: Ștefănești, Merișani, Drăgășani, terenuri destinate construcției de locuințe. Orientarea spre aceste localități se datorează dorinței de a avea un cămin împrejmuit de o curte largă și o gradină, deci un mediu liniștit, și nu în ultimul rând prețul care este mai scăzut cu aproximativ 66% față de cele situate în oraș.

I.3. Asociatia Romana a Agentiilor Imobiliare (A.R.A.I.)

Constituita în vederea susținerii financiare și logistice a asociațiilor profesionale imobiliare din Europa Centrala si de Est, A.R.A.I. este o organizație profesionalã a agenților economici și persoanelor care operează în domeniul tranzacțiilor și evaluărilor imobiliare, fiind singura asociație românească de profil recunoscută oficial de asociațiile naționale similare din Statele Unite ale Americii, Marea Britanie (cu care există deja un protocol de colaborare), Bulgaria, Cehia, Slovacia, Polonia și Ungaria. A.R.A.I. editeazã un buletin informativ lunar si pune la dispoziția membrilor o bibliotecã. Pregãtim o bancã de date computerizatã și o rețea informaționalã. Un grup de specialisti elaboreazã formularistica standardizatã precum și modele de contracte tipizate, disponibile doar pentru membri. De asemenea, A.R.A.I. acționeazã pentru crearea unui regim special al membrilor sãi în relația cu notariatele, cadastrul si primãriile.

Alte scopuri, precum și modul de funcționare și de organizare ale Asociatiei, le puteți afla prin citirea prevederilor Statutului A.R.A.I.

A.R.A.I. este membrã cu drepturi depline a Central European Real Estate Network (CEREAN) și are legaturi strânse cu Eastern European Real Property Foundation (E.E.R.P.F.), fundație americanã finanțatã de Guvernul S.U.A. prin U.S.A.I.D. (United States Agency for International Development). Organizația noastrã este deschisã primirii de noi membri, atît firme, cît și persoane fizice implicate în domeniul imobiliar.

A.R.A.I. oferã membrilor sãi o multitudine de servicii, printre care:
– punerea în valoare si protejarea libertaților și intereselor legitime proprii domeniului de activitate, inclusiv îmbunătațirea imaginii publice a activității de intermediere imobiliarã;
– reprezentarea intereselor membrilor sãi fațã de organele puterii și administrației centrale și locale de stat și în raport cu asociațiile si organizațiile existente pe plan național și internațional în domeniile de interes ale Asociației;
– licențierea agențiilor imobiliare membre ale asociației și a personalului acestora, precum și promovarea actelor normative care sã reglementeze aceste activitãți;
– A.R.A.I. faciliteazã contactele membrilor sãi cu potențiali parteneri externi, cu investitori, precum și cu firme și asociații internaționale similare.
– A.R.A.I. organizeazã cursuri de pregãtire, seminarii, schimburi de experientã în țarã și strãinãtate ( Anglia, SUA, Polonia, Ungaria, etc.), însotite de emiterea de atestate de absolvire recunoscute internațional.

I.4. Prezentare agenției imobiliare “Casa Ta”

Agenția imobiliară “CASA TA” este o agenție nou pe piața piteșteană, fiind înființată în anul 2000. Este înregistrată la Oficiul Registrului Comerțului Pitești sub numele “S.C. ………….. S.R.L” la nr. …, având cod fiscal nr. și este afliliată la “Asociația Române a Agențiilor Imobiliare”.

Sediul agenției imobiliară CASA TA este situat central pe str. ………. nr…., Pitești, România. Firma are forma juridică de Societate cu Răspundere Limitată la care asociat unic este dl. ……. …….. Societatea își desfășoară activitate prin intermediul … angajați permanenți și …. colaboratori.

S.C. ………… S.R.L. – Agenție imobiliară

Anul infiintarii: 2000

Forma juridica: Societate cu Raspundere Limitata

Asociat unic: ….. …….

Capital social: 10 milioane lei

Cod fiscal: ……

Numar registru camera comertului: J3/127/2000

Cifra de afaceri în 2001: 1.200.000.000 Lei

Numar intermedieri în 2001: 210

Numar angajati: 7

Adresa: str. …….. nr….., Pitești

E-m@il: [anonimizat]

Membru ARAI

Agenția Imobiliara CASA TA a apărut pentru a răspunde cerintelor pieței imobiliare argeșene, s-a impus ca un partener important pentru investitorii români și străini. Agenția oferă servicii specializate în domeniul imobiliar: consultanță în investiții, estimări de specialitate, studii de piață, evaluări autorizate, expertize tehnice, măsurători topometrice, documentări de rețea edilitară și intermedieri în tranzacții imobiliare (vânzări, cumpărări, închirieri, asocieri).

Agenția imobiliară CASA TA dispune de mijloacele necesare prestării la cel mai înalt nivel profesional a tuturor serviciilor oferite. Personalul firmei are o bună pregatire în domeniul imobiliar, fiind format din persoane cu studii superioare care au urmat cursuri de brokeri imobiliari.

Avantajul colaborării cu agenția menționată îl constituie siguranța, eficiența și confidențialitatea tranzacțiilor, precum și practicarea unor comisioane rezonabile.

Cifra de afaceri a societătii a cunoscut o creștere valorică în prima parte a anului 2008 comparativ cu aceeași perioadă a anului precedent, ponderea majora a tranzacțiilor imobiliare încheiate având – o aprtamentele (Apartamente 2 camere 35%; Apartamente 3 camere 20%; Apartametele 4 camere 5%), au urmat Garsoniere 30%; Apartamentele la casa 2%; Case și vile 2%; Terenuri 6%. Prețurile fată de anul 2007 au crescut cu aproximativ 25% în special în zonele centrale.

II. INTERNET-UL

II.1. INTRODUCERE

Majoritatea site-urilor web sunt constituite din informații statice, dar Web-ul este un mediu puternic și este capabil de mult mai mult și oferă caracteristici precum: pagini Web dinamice, conectare la baze de date, pagini personalizate pentru utilizatori, colecții și prelucrări sofisticate ale datelor, interacțiuni de poștă electronică, interfețe pentru utilizatori bogate și atrăgătoare.

II.1.1 Internet-ul

Internet-ul este înconjurat de foarte multă ambiguitate și confuzie dar, în câteva cuvinte, poate fi definit ca cea mai mare rețea din lume. Majoritatea rețelelor din prezent sunt rețele locale (Local Area Networks – LANs) și sunt formate dintr-un grup de calculatoare aflate relativ aproape unul de celălalt și conectate prin echipamente hardware speciale și cabluri. Unele calculatoare îndeplinesc rolul de clienți (cunoscute, de obicei, sub denumirea de workstations) iar altele sunt servere. Toate aceste calculatoare pot comunica între ele pentru a schimba informații.

O rețea mai mare, care se întinde pe mai multe locații geografice este, de obicei, folosită de marile companii care au sedii în mai multe localități. Fiecare dintre locații are propriul său LAN, care leagă calculatoarele locale. Aceste LAN-uri, la rândul lor, sunt interconectate prin intermediul unor medii speciale de comunicare. Legăturile pot fi de la legături de tip dial-up prin modem, până la legături de mare viteză T1 sau T3 sau legături prin fibră optică. Grupul complet al LAN-urilor interconectate se numește Wide Area Network (WAN). WAN-urile se folosesc pentru a conecta locații diferite ale unei companii.

Dacă s-ar dori conectarea tuturor calculatoarelor de oriunde s-ar începe prin rularea unor backbones de viteze foarte mari, conexiuni capabile să transmită cantități mari de date, între locații strategice – probabil mari orașe sau țări diferite. Aceste backbones ar fi asemănătoare autostrăzilor de mare viteză și pe multe benzi dintre țări.

Ar trebui definită o toleranță la erori pentru a face aceste backbones complet redundante, astfel încât dacă vreo conexiune se întrerupe, ar mai fi disponibilă cel puțin o altă modalitate de a a atinge o destinație specifică.

Mai departe, ar fi create mii de legături locale care ar conecta fiecare oraș la backbone prin conexiuni mai puțin rapide. S-ar permite WAN-urilor și LAN-urilor companiilor și chiar și utilizatorilor individuali cu modem-uri pentru dial-up să se conecteze la aceste puncte de acces locale. Unele calculatoare ar putea fi conectate tot timpul, în timp ce altele s-ar putea conecta doar la nevoie.

S-ar crea apoi un limbaj comun de comunicare astfel ca fiecare calculator conectat la această rețea să poate comunica cu oricare altul.

Și în final ar trebui definită o schemă pentru a putea identifica în mod unic fiecare calculator conectat la rețea. Acest lucru va asigura faptul că informația trimisă unui anumit calculator va ajunge la destinația dorită.

Cu toate că aceasta este o descriere simplificată, este exact modul în care Internet-ul a fost realizat și lucrează.

Backbone-urile de mari viteze există într-adevăr. Majoritatea sunt deținute de marile companii de telecomunicații.

Punctele de acces locale, cunoscote sub numele de POP (Points of Presence) aparțin companiilor telefonice, de cablu și furnizorilor locali de Internet (ISPs – Internet Service Providers)

Limbajul comun este IP – Internet Protocol, dar termenul de limbaj este impropriu. Un protocol reprezintă o mulțime de reguli ce guvernează comportamentul în anumite situații. Protocoalele permit realizarea comunicării fără întreruperi și fără să apară neînțelegri. IP este protocolul folosit pentru comunicarea prin Internet, deci fiecare calculator trebuie să ruleze o copie a acestui protocol.

Identificatorii unici sunt adresele IP. Fiecare calculator, sau host, conectat la Internet are o adresă IP unică. Aceste adrese sunt formate din patru seturi de numere separate prin punct – de exemplu 208.193.16.100. Unele calculatoare au adrese fixe (sau statice), în timp ce altele au adrese alocate dinamic, de fiecare dată când este stabilită o conexiune. Indiferent de modul în care este este obținută o adresă IP, oricare două calculatoare conectate la Internet nu vor putea folosi aceeași adresă IP în același timp.

II.1.2. Aplicații pentru Internet

Internet-ul în sine este o masivă rețea de comunicații și oferă foarte puțin majorității utilizatorilor, din acest motiv au fost necesari 20 de ani pentru ca Internet-ul să devină fenomenul din prezent.

Internet-ul a fost ridicat la rangul de Information Superhighway și această analogie este destul de precisă. Autostrăzile nu sunt așa de atractive precum locurile în care se poate ajunge călătorind pe ele și acest lucru este valabil și pentru Internet. Ceea ce face Internet-ul așa de atrăgător sunt aplicațiile care rulează pe baza sa și ceea ce poate fi realizat cu ajutorul acestora.

Cea mai cunoscută aplicație din prezent este World Wide Web. Mulți oameni confundă Internet-ul cu World Wide Web, lucru complet greșit.

Toate aplicațiile pentru Internet folosesc protocolul IP pentru a comunica. Informația transmisă de aceste aplicații este împărțită în pachete, mici blocuri de date, care sunt trimise unei adrese IP destinație. Aplicația de la capătul celălalt procesează informțiile primate.

Câteva din aplicațiile pentru Internet sunt:

Email – SMTP (Simple Mail Transfer Protocol) este cel mai cunoscut mechanism de transmitere a mesajelor de poștă electronică, iar POP (Post Office Protocol) este interfața cea mai utilizată pentru accesarea mesajelor.

FTP – File Transfer Protocol este folosit pentru trasferul fișierelor între calculatoare.

IRC – Internet Relay Chat permite susținerea de conferințe în timp real, bazate pe text, prin Internet.

NFS – Network File System este folosit pentru a partaja fișiere între diferite calculatoare.

Newsgroups – liste de discuții bazate pe thread-uri.

Telnet – folosit pentru conectarea la un calculator de la distanță.

VPN – Virtual Private Networks permite accesul sigur al rețelelor private la Internet.

WWW – World Wide Web.

II.2. Web Servers și Web Application Servers

II.2.1. Servere Web

World Wide Web este construit pe baza unui protocol numit Hypertext Transfer Protocol (HTTP). HTTP este un protocol mic și rapid care se potrivește foarte bine sistemelor informatice multimedia și distribuite și salturilor între site-uri.

Web-ul constă în pagini cu informații de pe gazde care rulează software de tip server Web. Gazda este de multe ori identificată cu serverul Web, lucru care nu este corect. Serverul Web este un software, nu calculatorul în sine.

Un Web server este un program care furnizează pagini Web la cerere. Când un utilizator de la o adresă IP specifică solicită un anumit fișier, serverul Web încearcă să obțină acel fișier și să-l trimită înapoi utilizatorului. Fișierul solicitat poate fi codul sursă HTML al unei pagini Web, o imagine GIF, un fișier Flash, un document XML, sau un fișier AVI. Browserul Web este cel care determină ceea ce trebuie cerut, nu serverul Web. Serverul doar procesează cererea.

Conexiunile la serverele de Web se stabilesc pe măsură ce sunt necesare. Dacă este cerută o pagină de la un server Web, o conexiune IP este stabilită prin Internet între gazda solicitantă și gazda pe care rulează serverul Web. Pagina Web cerută este transmisă prin acea conexiune, iar aceasta este întreruptă de îndată ce pagina este primită. Dacă pagina primită conține referințe la alte informații ce trebuie descărcate (de exemplu, imagini GIF sau JPG), fiecare va fi obținută folosind o nouă conexiune.

Pe un același host pot rula mai multe aplicații de Internet, de exemplu un server Web, un server FTP, un server DNS și un server de mail SMTP POP3 pot rula în același timp. Fiecărui server îi este atribuit un port pentru a asigura că fiecare server va răspunde numai cererilor din partea clienților corespunzători.

Majoritatea serverelor folosesc un set de porturi predefinite. Serverele Web folosesc de obicei portul 80, dar acesta poate fi schimbat. Pot fi instalate pe porturi nestandard pentru a fi ascunse, și de asemenea, pot fi instalate mai multe servere Web pe un singur calculator asociindu-le porturi diferite.

II.2.2. Pagini Web

Informațiile din World Wide Web sunt stocate în pagini. O pagină poate conține oricare din următoarele: text, header-e, liste, meniuri, tabele, formulare, elemente grafice, script-uri, stiluri (style sheets), obiecte multimedia.

Paginile Web sunt realizate folosind o serie de tehnologii pe partea de client și sunt procesate și afișate de către browsere.

II.2.3. Browsere Web

Browserele web sunt programe client folosite pentru a accesa site-uri și pagini Web. Sarcina unui browser este de a procesa paginile Web primite și de a le prezenta utilizatorului. Browser-ul încearcă să afișeze grafice, tabele, formulare, text formatat și orice conține pagina.

Cele mai cunoscute browsere web din prezent sunt Mozilla Firefox și Internet Explorer.

II.3. Pagini Web Statice și Dinamice

II.3.1. HTML

Paginile Web sunt fișiere cu simplu text costruite folosind limbajul Hypertext Markup Language (HTML). Acesta este implementat ca o mulțime de tag-uri ușor de învățat. Autorii paginilor Web folosesc aceste tag-uri pentru a marca paginile de text, iar browserele le folosesc pentru a randa și afișa informațiile pentru a putea fi vizualizate. Paginile Web pot să conțină legături hypertext la alte pagini.

II.3.2. JavaScript

HTML este un limbaj de markup. El permite crearea layout-ului paginilor și a formularelor, dar nimic mai mult. Pentru a se construi interfețe intuitive și sofisticate este necesar și un limbaj de scripting la nivel de client. Scripting-ul permite scrierea de cod (mici programe) care rulează în cadrul browserului.

Cel mai cunoscut limbaj de scripting pe parte de client este JavaScript, care este suportat (mau mult sau mai puțin) de aproape orice browser existent. Folosind JavaScript se poate realiza: validarea formularelor, animarea textului și a imaginilor, crearea de meniuri drop-down și a controalelor de navigare, se pot efectua procesări de bază numerice sau asupra textelor și multe altele.

Scripting-ul permite programatorilor să detecteze și să proceseze evenimentele. De exemplu, o pagină care se încarcă, un formular trimis, mișcarea pointer-ului mouse-ului asupra unei imagini sunt toate evenimente, iar script-urile pot fi executate automat de browser atunci cînd aceste evenimente au loc.

Script-urile pot fi incluse în codul HTML sau pot fi stocate în fișiere externe și legate în interiorul codului HTML.

II.3.3. Alte Tehnologii pe parte de Client

Majoritatea browserelor noi permit folosirea și a altor tehnologii, dintre care cele mai importante sunt:

CSS (Cascading Style Sheets) – oferă o modalitate de a separa prezentarea de conținut astfel încât ambele să poată fi refolosite și modificate cu ușurință.

DHTML (Dynamic HTML) – o combinație de HTML, script-uri și CSS care folosite împreună, pot realiza interfețe pentru utilizator foarte atractive și interactive.

Appleturi Java – mici programe care rulează în browser.

Macromedia Flash – o tehnologie inclusă în 98% din browserele existente, care oferă un mecanism pentru crearea unor interfețe atractive și portabile.

II.3.4. URL-uri

Piesa care leagă între ele serverele Web, browserele Web și paginile Web este URL-ul.

Fiecare pagină din World Wide Web are o adresă care este introdusă în browser pentru a-i indica acestuia să încarce pagina respectivă.

Aceste adrese se numesc Uniform Resource Locators (URLs) și sunt constituite din șase părți, astfel:

Protocol – protocolul care va fi folosit pentru a obține obiectul. De obicei acesta este http pentru obiecte din World Wide Web. Dacă protocolul este specificat, atunci acesta trebuie urmat de semnele ://.

Host – serverul Web de la care vor fi obținute obiectele. Acesta poate fi specificat ca un nume DNS sau ca o adresă IP.

Port – portul calculatorului gazdă pe care rulează serverul Web. Dacă este omis, atunci se folosește portul implicit, iar dacă este specificat, numărul portului trebuie precedat de semnul :.

Path – calea către fișierul care se dorește a fi primit sau scriptul care trebuie executat.

File – numele fișierului cerut.

Query String – parametrii opționali pentru script. Dacă este specificat, atunci trebuie precedat de semnul ?.

II.3.5. Avantajul Paginilor Web Dinamice

Paginile dinamice sunt ceea ce dă viață Web-ului.

Paginile statice sunt formate din text, imagini și tag-uri HTML pentru formatare. Aceste pagini sunt create și întreținute manual, astfel că dacă informațiile se modifică și pagina trebuie modificată. Aceasta implică încărcarea paginii într-un editor, realizarea modificărilor, reformatarea textului dacă este necesar și apoi salvarea fișierului. Aceste operații necesită foarte mult timp dacă numărul paginilor care trebuie actualizate este mare.

Paginile dinamice conțin foarte puțin text. În schimb extrag informațiile necesare din alte aplicații. Paginile dinamice pot comunica cu bazele de date, foi de calcul tabelar, sisteme de gestiune a bazelor de date client-server și multe alte aplicații.

Crearea paginilor Web dinamice permite crearea de aplicații puternice, care pot include caracteristici precum următoarele:

interogarea aplicațiilor de baze de date existente pentru obținerea datelor

crearea de interogări dinamice care facilitează obținerea în mod flexibil a datelor

execuția procedurilor stocate

execuția codului condițional on-the-fly pentru a personaliza răspunsurile în funcție de situațiile specifice

sporirea capabilităților formularelor HTML standard prin folosirea unor funcții de validare

popularea în mod dinamic a elementelor din formulare

personalizarea modului de afișare a informațiilor legate de dată, timp și monedă folosind funcții de formatare

ușurarea creării aplicațiilor de introducere a datelor prin wizards

generarea automată de email

site-uri comerciale și coșuri electronice de cumpărături

și multe altele

II.3.6. Înțelegerea Aplicatiilor Web

Browserele Web trimit cereri către serverele Web, iar acestea le îndeplinesc – trimit înapoi informațiite cerute către browser. Aceste informații sunt de obicei fișiere HTML, ca și alte tipuri de fișiere.

Serverele Web sunt de fapt aplicații destul de simple – stau și așteaptă cererile pe care le îndeplinesc de îndată ce le primesc. Serverele Web nu permit interacțiunea cu bazele de date, nu permit personalizarea paginilor Web, nu permit procesarea rezultatelor trimiterii unui formular de către utilizator.

Un Web application Server este un software care extinde serverul Web, permițânduți acestuia să facă lucrurile pe care nu le poate face singur.

Când un server Web primește o cerere de la un browser, el cercetează acea cerere pentru a determina dacă este o simplă pagină Web sau o pagină care necesită prelucrări suplimentare de către un web application server. Acest lucru îl realizează prin cercetarea extensiei sau a tipului MIME. Dacă tipul MIME indică o pagină Web simplă, atunci serverul web îndeplinește cererea și trimite fișierul către browserul clinet nemodificată. Dar dacă tipul MIME indică faptul că fișierul cerut necesită procesarea de către un web application server, atunci web serverul trimite fișierul către web application server-ul corespunzător și trimite browserului rezultatul pe care îl primește de la web application server.

Cu alte cuvinte web application servers sunt preprocesoare pentru pagini. Acestea procesează pagina cerută înainte ca aceasta să fie trimisă înapoi la client.

III. INTRODUCERE ÎN PHP

PHP, acronim care provine din "PHP: Hypertext Preprocessor", este un limbaj de scripting utilizat pe scară largă, realizat și distribuit în sistem Open Source, care este special realizat pentru a dezvolta aplicații web, prin integrarea codului PHP în documente HTML. Sintaxa sa provine din C, Java și Perl și este ușor de învățat. Scopul principal al limbajului este acela de a scrie rapid pagini web dinamice, dar cu PHP se pot realiza mult mai multe.

PHP este una dintre cele mai interesante tehnologii existente în prezent. Deoarece îmbină caracteristici dintre cele mai complexe cu simplitatea în utilizare, PHP a devenit rapid un instrument important în dezvoltarea aplicațiilor Web. Totuși, spre deosebire de alte instrumente populare pentru dezvoltarea aplicațiilor Web, cum este Perl, PHP este un limbaj de programare comod pentru începători, chiar și pentru cei care nu au mai desfășurat activități de programare în trecut.

Ca și alte limbaje de scripting pentru Web, PHP vă permite să furnizați un conținut Web dinamic, adică un conținut Web care se modifică automat de la o zi la alta sau chiar de la un minut la altul. Conținutul Web este un element important în susținerea traficului unui sit Web; de regulă, vizitatorii nu vor mai reveni la o pagină Web care conține aceleași informații ca și cele prezentate la ultima vizită. Pe de altă parte, siturile Web frecvent actualizate pot atrage cantități enorme de trafic.

Mai mult, spre deosebire de limbajele de scripting, precum JavaScript, PHP rulează pe serverul Web, nu în browserul Web. În consecință, PHP poate obține accesul la fișiere, baze de date și alte resurse inaccesibile programului JavaScript. Acestea constituie bogate surse de conținut dinamic, care atrag vizitatorii.

III.1. Noțiuni Fundamentale

III.1.1. Ce este PHP?

Spre deosebire de un script scris în alte limbaje cum ar fi Perl sau C – în loc de a scrie un program cu o mulțime de comenzi pentru a produce un HTML, folosind PHP se poate scrie un script HTML, ca cel de mai jos, ce include cod pentru a realiza ceva. Codul PHP este delimitat de coduri de start și de sfârșit ce permit intrarea și ieșirea din "modul PHP".

<html>

<head>

<title>Exemplu</title>

</head>

<body>

<?php

echo "Salut, sunt un script PHP!";

?>

</body>

</html>

Diferența dintre PHP și altceva cum ar fi JavaScript este acela că PHP este executat pe server pe când JavaScript este executat pe calculatorului clientului (de browserul Web). Pentru un script similar celui de mai jos sus pe un server, clientul ar primi doar rezultatele scriptului ce este rulat, fără a vedea în nici un fel codul din spatele acestuia. Se poate chiar configura serverul de web ca acesta să proceseze toate fisierele HTML cu PHP și astfel nu exită nici o metodă ca un utilizator să stie defapt ce există în fișiere.

III.1.2. Ce poate face PHP?

Cu PHP se poate face orice. PHP este în principal axat pe partea de scripting ce rulează pe server, deci poate face orice face și un program CGI, cum ar fi colectarea de date de la formulare, generarea de conținut dinamic sau trimitere și primire de cookie-uri. Dar PHP poate face mult mai multe.

Există trei domenii principale unde sunt folosite scripturile PHP.

Scripturi ce ruleaza pe server. Acesta este cel mai tradițional și cel mai important pentru PHP. Este nevoie de trei lucrui pentru a face să meargă: interpretorul PHP (CGI sau modul de server), un server web și un browser web. E nevoie ca serverul de web să fie pornit, cu o conexiune PHP instalată. Se poate accesa rezultatul programelor PHP cu un browser prin intermediul serverului de web.

Scripting in linie de comandă. Se poate face ca PHP să ruleze fără a fi nevoie de server și de browser, ci doar de interpretorul PHP. Această metodă este ideală pentru script-urile ce se vor a fi executate de regulă folosind cron (task scheduler în Windows), sau sarcini simple de procesare a textelor.

Scrierea de aplicații ce rulează de partea clientului în mod grafic (GUI). Probabil că PHP nu este limbajul cel mai bun de a scrie aplicații cu ferestre pentru Windows sau alte sisteme de operare, dar dacă este bine cunocut și se dorește folosirea unor facilități avansate ale PHP-ului în aplicațiile ce rulează de partea clientului, se poate totuși folosi PHP-GTK pentru a scrie astfel de programe. De asemenea, există posibilitatea de a scrie aplicații ce rulează pe platforme diferite folosind această metodă. PHP-GTK este o extensie a PHP-ului, nedisponibila în distribuția principală de PHP.

PHP poate fi folosit pe aproape toate marile sisteme de operare, incluzând Linux, multe variante de Unix (incluzând HP-UX, Solaris și OpenBSD), Microsoft Windows, Mac OS X, RISC OS, probabil și altele. PHP are de asemenea suport pentru majoritatea serverelor de web din prezent. Acestea includ serverele Apache, Microsoft Internet Information Server, Personal Web Server, Netscape și iPlanet, serverul Oreillz Website Pro, Caudium, Xitami, OmniHTTPd, și multe atele. Pentru majoritatea serverelor PHP are un modul, iar pentru celelalte suportă standardul CGI, PHP putând să lucreze ca un procesor CGI.

Deci, cu PHP, există libertatea de a alege un sistem de operare și un server de web. Chiar mai mult, există posibilitatea de a alege programarea procedurală sau programarea orientată obiect, sau chiar sa se combine acestea. Cu toate acestea, nu orice facilitate a standardului POO este prezentă în versiunea curentă a PHP-ului, multe librării de cod și aplicații mari (incluzând și librăria PEAR) sunt scrise folosind doar cod POO.

Cu PHP programatorul nu este limitat să scoată rezultat HTML. Posibilitățile PHP-ului includ afișarea de imagine, fișiere PDF și chiar filmulețe Flash (folosind librăriile libswf și Ming) toate generate instant. Se poate de asemeanea ca rezultatul să fie orice fișier text, cum ar fi XHTML sau orice alte fișiere XML. PHP poate genera autmoat aceste fișiere și să le salveze în sistemul de fișiere în loc să le afișeze, formând un cache de partea serverului pentru conținutul dinamic.

Una dintre cele mai puternice și importante facilități în PHP este suportul său pentru o gamă larga de baze de date. Scrierea une pagini de web ce interacționeaza cu o bază de date este incredibil de simplă. PHP suportă și ODBC, standardul Open Database Connection, deci se poate conecta la orice altă bază de date ce suporta acest standard mondial.

PHP are deasemeanea suport pentru a conversa cu alte servicii folosind protocoale cum ar fi LDAP, IMAP, SNMP, NNTP, POP3, HTTP, COM (pe Windows) și multe altele. Se pot, de asemenea, deschide socket-uri de rețea și se poate interacționa între aproape toate limbajele de programare Web. PHP are suport pentru instanțierea obiectelor Java și utilizarea lor într-un mod transparent ca obiecte PHP. Se pot de asemenea folosi extensii CORBA pentru a accesa obiecte aflate la distanță.

PHP are capabilități extrem de folositoare pentru procesarea textului, de la POSIX Extins sau expresii regulare Perl, până la parsarea documentelor XML. Pentru parsarea și accesarea documentelor XML, suportă standardele SAX și DOM.

Folosind PHP în domeniul comerțului electronic, sunt foarte folositoare pentru programul tău de plați online funcții de plată Cybercash, CyberMUT, VeriSign Payflow Pro și CCVS.

În cele din urmă, dar nu ultimul rând, PHP are și alte extensii interesante, cum ar fi funcții ale motorului de căutare mnoGoSearch, funcții pentru accesarea IRC-ului, multe utilitare de compresie (gzip, bz2), conversie de calendar, traducere…

III.2. Elemente de bază ale sintaxei

III.2.1. Ieșirea din modul HTML

Când PHP interpretează un fișier trece prin textul acestuia până când întâlnește unul din tag-urile speciale care îi spun să pornească interpretarea textului ca fiind cod PHP. Mai departe, parser-ul execută tot codul întâlnit, până la întâlnirea unui tag PHP de închidere, care anunță trecerea normală prin text, din nou. Acest mecanism permite înglobarea codului PHP în interiorul codului HTML: tot ceea ce este în afara tag-urilor PHP este lăsat nemodificat, în timp ce tot ceea ce este în interior este interpretat ca fiind cod.

Există patru categorii de tag-uri care pot fi folosite pentru a marca bolcurile de cod PHP. Dintre acestea, doar două (<?php. . .?> și <script language="php">. . .</script>) sunt întotdeauna disponibile. Cu toate ca tag-urile în format scurt și cele de tip ASP par a fi convenabile, ele nu sunt la fel de portabile ca cele în format lung. De asemenea, dacă se dorește includerea codului PHP în XML sau XHTML, este necesar să se folosească tag-urile în forma <?php. . .?> pentru a corespunde standardului XML

Cele patru tipuri de tag-uri sunt:

<?php echo("if you want to serve XHTML or XML documents, do like this\n"); ?>

2. <? echo ("this is the simplest, an SGML processing instruction\n"); ?>

<?= expression ?> This is a shortcut for "<? echo expression ?>"

3. <script language="php">

echo ("some editors (like FrontPage) don't

like processing instructions");

</script>

4. <% echo ("You may optionally use ASP-style tags"); %>

<%= $variable; # This is a shortcut for "<% echo . . ." %>

Prima variantă, <?php. . .?>, este metoda preferată deoarece permite folosirea PHP-ului în cod conform standardului XML, cum ar fi XHTML.

Cea de-a doua variantă nu este întotdeauna posibilă. Tag-urile prescurtate pot fi folosite doar dacă au fost activate. Acest lucru poate fi făcut prin intermediul funcției short_tags() (numai în PHP3), prin activarea opțiunii short_open_tag în fișierul de configurare, sau prin compilarea scripturilor folosind opțiunea enable-short-tags. Chiar dacă este implicit activată în fișierul php.ini, folosirea tag-urilor prescurtate nu este recomandată.

Cea de-a patra variantă poate fi folosită numai dacă tag-urile de tip ASP au fost activate folosind setarea asp_tags din fișierul de configurare.

PHP permite folosirea unor structuri ca cea de mai jos:

<?php

if ($expression) {

?>

<strong>This is true.</strong>

<?php

} else {

?>

<strong>This is false.</strong>

<?php

}

?>

Aceasta funcționează exact cum este de așteptat, deoarece când PHP întâlnește tag-ul de închidere ?> începe afișarea a ceea ce întâlnește până la apariția unui alt tag de start. În cazul blocurilor mari de text, ieșirea din modul PHP este în general mai eficientă decât trimiterea textului folosind echo() sau print().

III.2.2. Separarea instrucțiunilor

Instrucțiunile sunt separate la fel ca în C sau Perl – fiecare instrucțiune este terminată cu un semn punct și virgulă.

Tag-ul de închidere implică și sfârșitul instrucțiunii, deci următoarele două exemple sunt echivalente:

<?php

echo "This is a test";

?>

<?php echo "This is a test" ?>

III.2.3. Comentariile

PHP suportă comentarii de tip 'C', 'C++' și Unix shell. De exemplu:

<?php

echo "This is a test"; // This is a one-line c++ style comment

/* This is a multi line comment

yet another line of comment */

echo "This is yet another test";

echo "One Final Test"; # This is shell-style style comment

?>

Comentariul pe o sigură linie, de fapt realizează comentarea codului până la sfârșitul liniei curente sau până la terminarea blocului curent PHP, oricare din aceste două cazuri apare primul.

III.3. Tipuri de date

PHP suportă opt tipuri primitive de date.

Patru tipuri scalare:

– boolean

. integer

– float (numere în virgulă mobilă, sau ‘double’)

– string

Două tipuri compuse:

– array

– obiect

Două tipuri speciale:

– resource

– NULL

Tipul unei variabile, de obicei nu este stabilit de programator, ci este decis la rulare de PHP, în funcție de contextul în care acea variabilă este folosită.

III.4 Variabile

III.4.1 Noțiuni de bază

În PHP variabilele sunt reprezentate folosind un semn dollar urmat de numele variabilei. Numele variabilelor sunt case-sensitive.

În PHP3 variabilele sunt întotdeauna atribuite prin valoare. Cu alte cuvinte, atunci cînd o expresie este atribuită unei variabile, întreaga valoare a expresiei originale este copiată în variabila destinație. Aceasta înseamnă că, de exemplu, după atribuirea valorii unei variabile alteia, schimbarea uneia dintre aceste variabile nu are nici un efect asupra celeilalte.

PHP4 oferă și un alt mod de a atribui valori valiabilelor: prin referință. Aceasta înseamnă că noua variabilă referă (devine un alias pentru, sau indică către) variabila originală. Schimbări în variabila nouă o afectează și pe cea inițială, și invers. Aceasta înseamnă de asemenea că nu sunt realizate copii și astfel atribuirea se realizează mai rapid.

Pentru a realiza o atribuire prin referință trebuie doar atașat un ampersand(&) la începutul variabilei care va fi atribuită (variabila sursă), ca în exemplul următor:

<?php

$foo = 'Bob'; // Assign the value 'Bob' to $foo

$bar = &$foo; // Reference $foo via $bar.

$bar = "My name is $bar"; // Alter $bar…

echo $bar;

echo $foo; // $foo is altered too.

?>

III.4.2 Variabile predefinite

PHP furnizează un număr larg de variabile predefinite. Multe din aceste variabile, nu pot fi documetate complet deoarece sunt dependente de serverul pe care rulează, de versiunea și setarea acestuia precum și de alți factori.

Unele din aceste variabile nu vor fi folosite când PHP rulează în linie de comandă.

III.4.3. PHP Superglobals

$GLOBALS

Conține o referință la fiecare variabilă care este în mod curent valabilă în scopul global al script-ului. Cheile acestui șir sunt numele variabilelor globale.

$_SERVER

Reprezintă variabilele setate de serverul de web sau legate direct de mediul de execuție al scriptului curent.

$_GET

Reprezintă variabilele oferite scritpt-ului direct prin HTTP GET. Analog vechiului șir $HTTP_GET_VARS (care încă este valabil, dar depreciat).

$_POST

Reprezintă variabilele oferite scritpului direct prin HTTP POST. Analog vechiului șir $HTTP_POST_VARS (care încă este valabil, dar depreciat).

$_COOKIE

Reprezintă variabilele oferite scritpului direct prin HTTP. Analog vechiului șir $HTTP_COOKIE_VARS (care încă este valabil, dar depreciat).

$_FILES

Reprezintă variabilele oferite scritpului prin upload-ul de fișiere folosind modul POST din HTTP. Analog vechiului șir $HTTP_POST_FILES (care încă este valabil, dar depreciat).

$_ENV

Reprezintă variabilele oferite scritpt-ului prin mediu. Analog vechiului șir $HTTP_ENV_VARS (care încă este valabil, dar depreciat).

$_REQUEST

Reprezintă variabilele oferite scritpt-ului prin mecanismele de input GET, POST, și COOKIE, deci care nu pot fi de încredere.

$_SESSION

Reprezintă variabilele registrate unei sesiuni a script-ului. Analog vechiului șir $HTTP_SESSION_VARS (care încă este valabil, dar depreciat).

III.4.4. Folosirea variabilelor statice

O importantă caracteristică a scope-ului variabilei o reprezintă variabila statică. O variabilă statică există în scope-ul funcției locale, dar nu își pierde valoarea când execuția programului părăsește acest scope. Să considerăm următorul exemplu:

<?php

function Test () {

$a = 0;

echo $a;

$a++;

} ?>

Această funcție este destul de nefolositoare deoarece de fiecare dată este apelată să seteze valorea 0 variabilelei $a și să printeze "0".

Instrucțiunea $a++ care incrementează variabila nu servește nici unui scop deoarce, de îndată ce funcția iese, variabila dispare. Pentru folosirea unei funcții de numărare care nu va mai pierde număratoarea curentă, variabiala $a este declarată statică.

<?php

function Test()

{

static $a = 0;

echo $a;

$a++;

}

?>

Astfel, de fiecare dată când funcția Test() este apelată, aceasta va afișa valoarea variabilei $a și o va incrementa.

Variabilele statice oferă, de asemenea, un mod de a lucra cu funcțiile recursive. O funcție recursivă este o funcție care se autoapelează. Trebuie avută grijă la scrierea unei funcții recursive, deoarece este posibilă realizarea unei recursii infinite. Trebuie asigurat un mod de a termina recursia. Următoarea funcție recursivă simplă numără până la 10, folosind variabila statică $count pentru a știi când să se oprească:

<?php

function Test()

{

static $count = 0;

$count++;

echo $count;

if ($count < 10) {

Test ();

}

$count–;

}

?>

III.4.5. Variabile din afara mediului PHP

Formulare HTML (GET și POST)

Când un formular este trimis unui scrip PHP, informațiile din acel formular sunt automat transmise scriptului PHP. Sunt mai multe modalități de a accesa informația, de exemplu:

<form action="foo.php" method="POST">

Name: <input type="text" name="username"><br>

Email: <input type="text" name="email"><br>

<input type="submit" name="submit" value="Submit me!">

</form>

În funcție de setările și preferințele particulare, sunt multe modalități de a accesa datele din formulare HTML. Câteva exemple:

<?php

// Available since PHP 4.1.0

print $_POST['username'];

print $_REQUEST['username'];

import_request_variables('p', 'p_');

print $p_username;

// Available since PHP 3. As of PHP 5.0.0, these long predefined

// variables can be disabled with the register_long_arrays directive.

print $HTTP_POST_VARS['username'];

// Available if the PHP directive register_globals = on. As of

// PHP 4.2.0 the default value of register_globals = off.

// Using/relying on this method is not preferred.

print $username;

?>

Folosirea unui formular de tip GET este similară, cu deosebirea că se va folosi variabila predefinită GET în schimb. GET se poate folosi și pentru extragerea informțiilor din QUERY_STRING (informațiile de după semnul ? din URL). De exemplu, URL-ul http://www.example.com/test.php?id=3 conține date GET care sunt accesibile prin $_GET['id'].

III.4.6. Cookie-uri HTTP

PHP oferă un suport transparent pentru Cookies. Cookie-urile reprezintă un mecanism pentru stocarea datelor în browser și astfel se pot identifica utilizetoriicare revin pe o anumită pagină. Cookie-urile se pot seta folosind funcția setcookie(). Cookie-urile fac parte din header-ul HTTP, deci funcția setcookie() trebuie apelată înainte de trimiterea oricărui conținut către browser. Informațiile de tip Cookie sun apoi stocate în array-urile corespunzătoare, cum ar fi $_COOKIE, $HTTP_COOKIE_VARS ca și în $_REQUEST.

Dacă se dorește atribuire unor valori multiple unei singure variabile Cookie, aceasta poate fi tratată ca un array. De exemplu:

<?php

setcookie("MyCookie[foo]", "Testing 1", time()+3600);

setcookie("MyCookie[bar]", "Testing 2", time()+3600);

?>

Aceasta va crea două variabile cookie separate, cu toate că MyCookie va fi un singur array.

IV. BAZE DE DATE ȘI SQL

IV.1. Concepte ale bazelor de date relaționale

IV.1.1. Structura unei baze de date relaționale

O bază de date este o colecție de date organizată astfel încât acestea să poată fi ușor găsite și actualizate. O bază de date conține toate informațiile necesare despre obiectele ce intervin într-o mulțime de aplicații, relațiile logice între aceste informații și tehnicile de prelucrare corespunzătoare. În bazele de date are loc o integrare a datelor, în sensul că mai multe fișiere sunt privite în ansamblu, eliminându-se pe cât posibil informațiile redundante. De asemenea, se permite accesul simultan la aceleași date, situate în același loc, sau distribuite spațial, a mai multor persoane de pregătiri diferite, fiecare cu stilul personal de lucru.

Sistemul de programe care permite construirea unei baze de date, introducerea informațiilor în bazele de date și dezvoltarea de aplicații privind bazele de date se numește Sistem de Gestiune a Bazelor de Date (SGBD). Un SGBD dă posibilitatea utilizatorului să aibă acces la date folosind un limbaj de nivel înalt, apropiat de modul obișnuit de exprimare, pentru a obține informații, utilizatorul făcând abstracțtie de algoritmii aplicați pentru selecționarea datelor implicate și a modului de memorare a lor. SGBD-ul este o interfață între utilizatori și sistemul de operare.

Sistemele de baze de date au în vedere mai multe tipuri de structuri de reprezentare a informațiilor la nivel logic și de operare cu ele dintre acestea, modelul relațional fiind cel mai folosit.

Acest model a fost dezvoltat de un matematician de la IBM, E.F. Codd, prin anii 1960, iar bazele de date organizate be baza acestui model se numesc baze de date relaționale.

Un model relațional de baze de date cuprinde trei componente principale:

– Structura datelor – prin definirea unor domenii și a relațiilor n-are.

– Integritatea datelor – prin impunerea unor restricții.

– Prelucrarea datelor – prin operații din algebra relațională sau calculul relațional.

Modelul relațional se bazează pe noțiunea matematică de relație, așa cum este definită în teoria mulțimilor, și anume ca o submulțime a produsului cartezian a unei liste finite de mulțimi numite domenii. Elementele unei relații se numesc tupluri, iar numărul de domenii din produsul cartezian se numește aritatea relației.

De obicei relațiile sunt reprezentate sub forma unor tabele în care fiecare rând reprezintă un tuplu și fiecare coloană reprezintă valorile tuplurilor dintr-un domeniu dat al produsului cartezian. Coloanelor și, respectiv, domeniilor corespunzătoare lor li se asociază nume intitulate atribute.

Accesul la informații se face pe baza cheilor. O cheie este o coloană (sau un grup de coloane) care identifică în mod unic un rând dintr-un tabel.

IV.1.2. Normalizarea tabelelor

Pentru a deosebi anumite calități specifice ale unor relații, s-au făcut mai multe clasificări, dintre acestea, cea mai frecvent utilizată fiind clasificarea în forme normale. Se spune că o relație (un tabel) este într-o formă normală particulară dacă satisface o mulțime dată de constrângeri. Transformarea unei relații într-o mulțime de relații de un anumit tip se numește normalizare. Există cinci forme normale, primele trei au fost definite de Codd, iar a patra și a cincea au fost definite de Fagin.

IV.1.3. Structured Query Language

SQL (Structured Query Language) este un limbaj relațional de cereri care formează nucleul multor sisteme de gestiune a bezelor de date. SQL a fost dezvoltat de IBM în anii '70 – '80 și standardizat la sfârșitul anilor '80.

În ciuda simplității sale, SQL este un limbaj foarte puternic, care poate obține accesul la date stocate în mai multe tabele, poate filtra datele dorite și poate sorta, rezuma și afișa rezultatele.

În general, nu se pot anticipa toate modalitățile în care utilizatorii pot dori să obțină acces la date și să le vizualizeze. Ca atare, nu se pot scrie programe de aplicație care să satisfacă fiecare potențială necesitate de informații. Este aproape sigur că vor apărea unele cereri de date neprevăzute (sau ad-hoc).

Utilizând SQL, este posibil accesul la datele stocate într-o bază de date relațională fără a scrie un program de aplicație, permițând frecvent evitarea întârzierilor și a costurilor implicate de programarea personalizată. Astfel, bazele de date relaționale permit satisfacerea tuturor cererilor ad-hoc de informații, care ar rămâne fără răspuns în alte situații.

În funcție de întrebuințarea sa, SQL poate fi împărțit în trei componente:

– DDL – Data Definition Language – folosit pentru a crea bazele de date.

– DML – Data Manipulation Language – folosit la actualizarea datelor.

– DQL – Data Query Language – folosit pentru extragerea informațiilor din baze de date.

IV.2. Implementarea unei baze de date

IV.2.1. Proiectarea unei baze de date

Un instrument frecvent utilizat de proiectare a bazelor de date constă din procedeul cunoscut sub numele de modelare entitate-relație sau modelare E-R. În contextul modelării E-R, o entitate este similară cu un tabel relațional, cu alte cuvinte, conține date care descriu un set de individualități corelate. Modelarea E-R este un proces în cadrul căruia coloanele, entitățile și relațiile între entități sunt descoperite și organizate. Un model E-R poate fi rafinat cu ușuință, pentru a genera o structură a unei baze de date, care poate fi transformată într-o bază de date relațională efectivă.

IV.2.2. Modelare E-R

Procesul de modelare E-R costă în patru faze principale:

Identificarea coloanelor.

Gruparea coloanelor în entități.

Identificarea cheilor primare.

Identificarea cheilor externe

IV.2.3. Identificarea coloanelor

Prima operație din cadrul procesului de modelare E-R este identificarea coloanelor. Coloanele înregistrează o singură caracteristică a unei entități. În încercarea de identificare a coloanelor în general este util să se răspundă la unele întrebări conexe, cum sunt următoarele:

Care sunt deciziile pe care sistemul trebuie să le ia sau să le susțină?

Care sunt operațiile pe care sistemul trebuie să le execute sau să le susțină?

Care sunt datele necesare pentru a lua aceste decizii și pentru a efectua aceste operații?

IV.2.4. Gruparea coloanelor în entități

De obicei este evident că unele coloane sunt corelate, în sensul că fac referire la un anumit set de individualități corelate. Ca atare, aceste coloane pot fi grupate pentru a forma o entitate. Uneori o coloană dată este corelată cu mai multe entități; în acest caz, coloana poate apărea de mai multe ori pe listă.

IV.2.5. Identificarea cheilor primare

Fiecare entitate va deveni un tabel relațional și ca atare va trebui să aibă o cheie primară. Se examinează fiecare entitate pentru a determina dacă una dintre coloanele sale asociate are o valoare unică pentru fiecare din aparițiile entității. Dacă o asemenea coloană există, aceasta va fi identificată drept cheie primară a entității.

Se pot găsi unele entitați care nu conțin nici o coloană adecvată pentru rolul de cheie primară. Într-o asemenea situație se poate căuta o serie de coloane care au o valoare combinată unică. Dacă se descoperă o asemenea serie, se poate identifica drept cheie primară compusă a entitații.

S-ar putea să nu se descopere nici o coloană sau serie de coloane care să identifice în mod unic fiecare apariție a unei entitaăți. În acest caz, se creează o coloană nouă, care va conține o identificare artificială unică, și se identifică noua coloană ca fiind cheia primară a entitații.

Se poate folosi o identificare artificială unică chiar și atunci când una sau mai multe coloane pot servi drept cheie primară. Astfel, se evită problemele care apar când identificatori presupuși unici se dovedesc a nu fi unici.

IV.2.6. Identificarea cheilor externe

Operația finală și cea mai dificilă din cadrul activitații de modelare E-R o constituie identificarea cheilor externe. Acestea sunt pur și simplu coloane ale caror valori sunt corelate cu acelea ale valorilor cheilor primare ale unei entități oarecare. Procesul de identificare a cheilor externe constă în compararea coloanelor cu cheile primare și, pentru fiecare combinație posibilă, în raspunsul la întrebarea: “Există o relație între valoarea acestei coloane și valoarea acestei chei primare?”.

IV.2.7. Rafinarea modelelor E-R

Ultima operție de finețe aplicată unui model E-R, după normalizarea bazei de date, constă în specificarea unui tip de date pentru fiecare coloană.

Majoritatea bazelor de date relaționale acceptă urmatoarele tipuri de date generale:

caracter

întreg

zecimal

dată și oră

binar

V. MySQL

V.1. Introducere în MySQL

MySQL este un sistem de getiune a bazelor de date. Mai mult chiar, MySQL este un sistem de gestiune a bezelor de date relaționale și este distribuit în regim Open Source.

MySQL software is Open Source. Aceasta înseamnă că MySQL poate fi descărcat de pe Internet, poate fi folosit fără a plăti ceva și, dacă se dorește, codul sursă poate fi studiat și i se pot aduce modificări necesare.

Serverul de baze de date MySQL este foarte rapid, fiabil și ușor de utilizat. Inițial a fost dezvoltat pentru a manipula baze de date de dimensiuni mari mult mai rapid decât soluțiile existente. Conectivitatea sa, viteza și securitatea fac ca Serverul MySQL să fie potrivit pentru accesarea bazelor de date prin Internet.

Why use the MySQL Database Server?

MySQL Database Software este un sistem client/server ce constă într-un server MySQL multithreaded care suportă diferite programe client și biblioteci, unelte administrative și o gamă largă de interfețe pentru programarea aplicațiilor (Application Programming Interfaces – APIs)

V.2. Caracteristicile de bază ale MySQL

V.2.1. Componente interne și portabilitate

Câteva dintre caracteristicile de bază ale MySQL sunt:

Scris în C și C++

Testat cu o gamă largă de compilatoare diferite

Funcționează pe diferite platforme

Dispune de API pentru C, C++, Eiffel, Java, Perl, PHP, Pyton, Ruby și Tcl

Complet multi-threaded folosind thread-uri de kernel. Acest lucru înseamnă că poate lucra cu ușuință pe mai multe procesoare dacă sunt disponibile

Oferă motoare tranzacționale și non-tranzacționale de stocare a datelor

Un sistem de alocare a memoriei foarte rapid și bazat pe thread-uri

Join-uri ale tabelelor foarte rapide

Folosește tabele temporare stocate în memorie

Funcțiile SQL sunt implementate folosind o bibliotecă de clase optimizată și sunt foarte rapide. De obicei, nu are loc alocare a memoriei după inițializarea interogărilor.

Serverul este disponibil ca program separat ce poate fi folosit într-un mediu de rețea de tip client/server. De asemenea, este disponibil și ca bibliotecă ce poate fi inclusă în aplicații de sine stătătoare

V.2.2. Tipuri de coloane

MySQL dispune de multe tipuri de date pentru coloane: numere întregi de 1,2,3,4 și 8 bytes lungime cu/fără semn, FLOAT, DOUBLE, CHAR, VARCHAR, TEXT, BLOB, DATE, TIME, DATETIME, TIMESTAMP, YEAR, SET, ENUM, și tipuri geometrice OpenGIS

Înregistrări cu lungime fixă și cu lungime variabilă

V.2.3. Comenzi și funcții

Suport complet pentru operatori și funcții în clauzele SELECT și WHERE ale interogărilor.

Suport pentru clauzele GROUP BY și ORDER BY, și pentru funcții de grup (COUNT(), COUNT(DISTINCT …), AVG(), STD(), SUM(), MAX(), MIN(), și GROUP_CONCAT()).

Suport pentru LEFT OUTER JOIN and RIGHT OUTER JOIN.

Suport pentru alias-uri de tabele și coloane.

DELETE, INSERT, REPLACE și UPDATE returnează numărul de rânduri modificate.

Comanda SHOW specifică pentru MzSQL poate fi folosită pentru a obține informații despre bazele de date, tabele și indecși.

Numele funcțiilor nu intră în conflict cu numele tabelelor sau ale coloanelor.

Într-o acceași interogare se pot folosi tabele din baze de date diferite

V.2.4. Securitate

Un sistem de privilegii și parole foarte flexibil și sigur care permite verificarea pe baza host-ului.

Parolele sunt sigure deoarece tot traficul legat de parole este criptat când are loc conectarea la server.

V.2.5. Scalabilitate și limite

Manipulează baze de date de dimensiuni mari. MzSQL este folosit cu baze de date care conțin 50 de milioane de înregistrări.

Sunt permiși până la 32 de indecși pentru un tabel. Fiecare index poate consta din una până la 16 coloane sau părți de coloane.

V.2.6. Conectivitate

Clienții se pot conecta la serverul MySQL folosind socket-uri TCP/IP pe orice platformă.

Interfața Connector/ODBC oferă suport MySQL pentru programe client care folosesc conexiuni ODBC (Open DataBase Conectivity).

Interfața Connector/JDBC oferă suport MySQL pentru programe client Java care folosesc conexiuni JDBC (Java DataBase Conectivity).

V.2.7. Localizare

Serverul poate să prezinte mesaje de eroare clienților în multe limbi.

Suport complet pentru diferit seturi de caractere.

Toate datele sunt salvate folosind un set de caractere specificat. Toate comparațiile pentru coloane de tip șir obișnuit de caractere sunt case-insensitive.

Sortarea este realizată în concordanță cu setul de caractere ales.

V.2.8. Clienți și unelte

Serverul MySQL are suport inclus pentru instrucțiuni SQL care verifică, optimizează și repară tabelele. Aceste instrucțiuni sunt disponibile în linia de comandă prin intermediul clientului mysqlcheck.

Toate programele MySQL pot fi invocate cu opțiunea –help sau -? Pentru a obține suport online.

V.3. Fundamente MySQL

V.3.1. Conectarea și deconectarea de la server

Pentru a realiza conectarea la server trebuie specificat un nume de utilizator și, de cele mai multe ori, o parolă. Dacă serverul rulează pe un alt calculator trebuie specificat și un hostname. Conectarea se realizează astfel:

shell> mysql -h host -u user -p

Enter password: ********

unde host și user reprezintă hostname-ul unde rulează serverul MySQL și respectiv numele unui cont MySQL, iar ******** reprezintă parola care trebuie introdusă.

Dacă conectarea se realizează cu succes în continuare sunt afișate informații introductive, urmate de prompt-ul mysql>

shell> mysql -h host -u user -p

Enter password: ********

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 25338 to server version: 4.0.14-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>

Aceasta înseamnă că mysql este gata pentru a primi comenzile introduse.

Deconectarea de la serverul MySQL se poate realiza oricând prin introducerea comenzii QUIT (sau \a) la prompt-ul mysql.

mysql> QUIT

bye

V.3.2. Introducerea interogărilor

Următoarea comandă este o interogare simplă care cere serverului informații precum versiunea curentă și data curentă:

mysql> SELECT VERSION(), CURRENT_DATE;

+–––––+–––––+

| VERSION() | CURRENT_DATE |

+–––––+–––––+

| 3.22.20a-log | 2009-03-19 |

+–––––+–––––+

1 row in set (0.01 sec)

mysql>

Această interogare ilustrează câteva lucruri despre mysql

În mod normal, o comandă constă într-o declarație SQL urmată de semnul puct și virgulă.

Cât se lansează o comandă, mysql o trimite serverului spre execuție și afișează rezultatele, apoi afișează din nou prompt-ul mysql> pentru a indica că este gata să accepte alte comenzi.

Mysql afișează rezultatul interogărilor într-o formă tabelară. Prima linie conține etichetele coloanelor, iar liniile următoare sunt rezultatele interogării.

Mysql afișează și numărul de rânduri returnate și cît timp a fost necesar pentru execuția interogării

Pe o singură linie pot fi introduse mai mule comenzi, separate cu câte un semn punct și virgulă, de exemplu:

mysql> SELECT VERSION(); SELECT NOW();

+–––––+

| VERSION() |

+–––––+

| 3.22.20a-log |

+–––––+

+–––––––+

| NOW() |

+–––––––+

| 2009-03-19 00:15:33 |

+–––––––+

O comandă nu trebuie neapărat să fie introdusă pe o singură linie, de exemplu:

mysql> SELECT

-> USER()

-> ,

-> CURRENT_DATE;

+–––––––+–––––+

| USER() | CURRENT_DATE |

+–––––––+–––––+

| joesmith@localhost | 2009-03-18 |

+–––––––+–––––+

Prompt-ul se schimbă din mysql> în -> după introducerea primei linii a unei interogări pe mai multe linii. Aceasta indică faptul că respectiva interogare este incompletă și mysql așteaptă introducerea restului interogării.

Se poate întrerupe introducerea unei interogări pe linii multiple folosind simbolurile \c

mysql> SELECT

-> USER()

-> \c

mysql>

V.3.3. Crearea și utilizarea unei baze de date

Pentru a vedea bazele de date existente pe un server se folosește comanda SHOW:

mysql> SHOW DATABASES;

+–––-+

| Database |

+–––-+

| mysql |

| test |

| tmp |

+–––-+

Baza de date mysql este necesaă deoarece descrise privilegiile de acces ale utilizatorilor, iar baza de date test este oferită, de obicei, ca mediu de test pentru utilizatori.

Dacă baza de date test există, aceasta ar putea fi accesată astfel:

mysql> USE test

Database changed

V.3.4. Crearea și selectarea unei baze de date

Comanda pentru a crea o nouă bază de date este CREATE DATABASE, de exemplu:

mysql> CREATE DATABASE menagerie;

Crearea unei baze de date nu implică și selectarea acesteia pentru utilizare, aceasta trebuie selectată folosind comanda USE:

mysql> USE menagerie

Database changed

Selectarea bazei de date pe care se dorește să se lucreze se poate realiza și în momentul desciderii unei sesiuni mysql, la conectarea la server, astfel:

shell> mysql -h host -u user -p menagerie

Enter password: ********

V.3.5. Crearea tabelelor

După ce a fost creată, o bază de date nu conține nici un table, după cum se poate observa introducând comanda SHOW TABLES:

mysql> SHOW TABLES;

Empty set (0.00 sec)

Pentru a crea un tabel se folosește comanda CREATE TABLE, de exemplu:

mysql> CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20),

species VARCHAR(20), sex CHAR(1), birth DATE, death DATE);

Acum comanda SHOW TABLES va avea următorul rezultat:

mysql> SHOW TABLES;

+–––––––+

| Tables in menagerie |

+–––––––+

| pet |

+–––––––+

Pentru a vedea detaliile unui tabel se folosește comanda DESCRIBE:

mysql> DESCRIBE pet;

+–––+––––-+––+––+–––+––-+

| Field | Type | Null | Key | Default | Extra |

+–––+––––-+––+––+–––+––-+

| name | varchar(20) | YES | | NULL | |

| owner | varchar(20) | YES | | NULL | |

| species | varchar(20) | YES | | NULL | |

| sex | char(1) | YES | | NULL | |

| birth | date | YES | | NULL | |

| death | date | YES | | NULL | |

+–––+––––-+––+––+–––+––-+

VI. APLICAȚIE

VI.1. Descrierea site-ului

Proiectul a avut ca punct de plecare cerința agenției imobiliare “Casa Ta” de a rezolva anumite neajunsuri apărute în activitatea sa prin crearea unui instrument care să ofere o gestionare ușoară a anunțurilor imobiliare și a clienților agenției și un potențial mare de publicitate, deschis utilizatorilor mijloacelor de informare moderne.

Aplicația implementează și unele funcționalități avansate, cum ar fi trimiterea automată de e-mailuri (ce cuprind anunțuri, sugestii, întrebari diverse sau date personale) prin completarea de catre vizitatori a unui chestionar pus la dispozitie pe site.

VI.1.1. Structura site-ului

Pentru o mai bună organizare a aplicației fișierele au fost incluse, pe cât posibil, în directoare cu denumiri semnificative. Astfel, directorul images conține toate imaginile incluse în paginile site-ului . Directorul styles conține fișierele .css (Cascading Style Sheet) folosite pentru realizarea layout-ului site-ului. În directorul html sunt stocate fișiere .htm care fac referire la un ghid imobiliar.

Paginile principale ale aplicației sunt următoarele: index.php, legislatie.htm, ghid.htm, închirieri.php, vanzari.php, oferte_speciale.htm, parteneri.htm, sugestii.htm si contact.htm. Astfel, index.php reprezintă pagina home a site-ului, paginile contact.htm conțin informații despre autorul aplicației și, respectiv, modul de contactare a acestuia. Pagina sugestii.htm conține un formular html pe care utilizatorii trebuie să-l completeze pentru a putea înregistra un mesaj sau o sugestie. Pagina legislație.htm conține informații reprezentative în domeniu imobiliar, legi, documente oficiale. Pagina ghid.htm cuprinde un set de proceduri și standarde utile celor interesați de domeniul imobiliar și în mod express de activitatea de vânzare-cumpărare.

vanzari.php, pagina dinamica cu informații detaliate despre fiecare ofertă imobiliară destinată vânzări. Este structurată pe submeniuri: Garsoniere, Apartamente, Case, Vile, Spații și Terenuri.

Pagina inchirieri.php cu continut dinamic si similar celei de mai sus este destinata prezentării ofertei de imobiliare pentru închiriere.

Cele mai importante informatii ce fac referire la ofertele speciale sunt prezentate detaliat în pagina oferte_speciale.htm

Home page

Legislatie

Ghid imobiliar

Oferta

Oferte speciale

Sugestii

VI.1.2. Baza de date MySQL

Pentru stocarea informațiilor despre membrii aplicației s-a folosit o bază de date MySQL denumită proiectinfo_pers_ro găzduită pe server-ul lx.ro. Aceasta este formată din doua tabele, și anume oferta, care conține informațiile despre ofertele imobiliare si sugestii, care conține informațiile despre mesajele trimise de vizitatorii site-ului.

Prezentarea bazei de date prin interfata phpMyAdmin:

Structura tabelei oferta este descrisă în figurile următoare:

Structura tabelei sugestii este descrisă în figurile următoare:

VI.2. Utilizarea bazelor de date MySQL

PHP include o bibliotecă de funcții care furnizează o interfață cu sistemul MySQL de gestiune a bazelor de date. Folosind aceste funcții, un program PHP poate obține accesul la datele rezidente într-o bază de date MySQL și le poate modifica.

Majoritatea interacțiunilor cu o bază de date se desfășoară după un model secvențial simplu:

Se deshide o conexiune cu serverul MySQL.

Se specifică baza de date la care se va obține accesul.

Se emit interogări SQL, se obține accesul la rezultatele interogărilor și se execută operații non-SQL.

Se închide conexiunea cu serverul MySQL.

VI.2.1. Conectarea la serverul MySQL

Pentru a se realiza conectarea la un server MySQL, se invocă funcția mysql_connect(), a cărei sintaxă este următoarea:

mysql_connect(nume_gazda, nume_utilizator, parola)

unde nume_gazda este numele gazdei pe care rulează serviciul MySQL, nume_utilizator este identificatorul de utilizator MySQL care va fi folosit, iar parola este parola MySQL asociată identificatorului de utilizator. Funcția returnează false în caz de eșec, iar în caz contrar returnează o valoare, denumită identificator de legătură, care servește ca instrument de manipulare pentru accesul la serverul MySQL.

Se poate omite numele gazdei, identificatorul de utilizator și parola, sau toate cele trei argumente. Dacă se procedează astfel, vor fi luate în considerare, în mod prestabilit, următoarele valori:

-numele gazdei: localhost

-identificatorul de utilizator: identificatorul de utilizator al procesului server MySQL

-parolă: o parola vidă

În realizarea acestui site, conectarea la serverul MySQL a fost posibilă astfel :

<?php

error_reporting(E_ALL);

$hostName = "mysql.lx.ro";

$userName = "proiectinfo_pers_ro";

$password = "dorru";

$dbName = "proiectinfo_pers_ro";

mysql_connect($hostName, $userName, $password) or die("Unable to connect to host $hostName");

mysql_select_db($dbName) or die( "Unable to select database $dbName");

// sectiune interogare baza de date

mysql_close();

?>

VI.2.2. Selectarea bazei de date

După ce programul a obținut o conexiune cu serverul MySQL, programul poate specifica baza de date la care va avea acces. Pentru aceasta, se invocă funcția mysql_select_db(), care are următoarea formă

mysql_select_db(baza_de_date)

unde baza_de_date este un șir care conține numele bazei de date la care urmează a se obține acces. Funcția returnează true dacă poate obține accesul la baza de date, respectiv false în caz contrar.

Selectarea bazei de date a fost implementată tot în funcția connectdb() prezentată mai sus, astfel:

$db=mysql_select_db("adylic");

VI.2.3. Închiderea conexiunii cu serverul MySQL

Pentru a închide o conexiune cu serverul MySQL se invocă funcția mysql_close(). Funcția returnează true în caz de reusită; în caz contrar returnează false. În general nu este necesară invocarea funcției mysql_close(), deoarece PHP închide automat conexiunile deschise cu bazele de date atunci când un script își încheie execuția.

VI.2.4. Executarea interogărilor UPDATE, INSERT și DELETE

Din punctul de vedere al limbajului PHP, există două categorii de interogări SQL:

Interogările SELECT, care returnează rânduri ale unui tabel.

Interogările UPDATE, INSERT și DELETE, care nu returnează rânduri ale unui tabel.

Ambele categorii de interogări sunt emise folosind funcția mysql_query(), dar verificarea și prelucrarea celor două categorii de rezultate ale interogărilor sunt procese destul de diferite.

VI.2.5. Funcția mysql_query()

Funcția mysql_query() execută o interogare specificată. Funcția are următoarea formă:

mysql_query(interogare)

unde interogare este un șir care conține intergoarea care urmează a fi executată. Funcția returnează true dacă serverul a reușit să execute interogarea; în caz contrar, returnează false.

// Selectarea campurilor din tabele potrivite

$query = "SELECT *

FROM oferta

WHERE tip_imobil='apartament'

ORDER BY nr_camere";

$result = mysql_query($query);

// Determinarea numarului de inregistrari dupa criteriul de selectie ales.

$number = mysql_numrows($result);

$tip_imobil = mysql_result($result, $i, "tip_imobil");

// Afisarea inregistrarilor

if ($number>0) {

print "<h4>Sunt $number oferte de $tip_imobil</h4>

<table cellpadding=5>

<tr bgcolor=#324E5D>

<td><font size=2 color=white><b>Tip imobil</b></font></td>

<td><font size=2 color=white><b>Zona</b></font></td>

<td><font size=2 color=white><b>Confort</b></font></td>

<td><font size=2 color=white><b>Cam.</b></font></td>

<td><font size=2 color=white><b>Pret</b></td></font></td>

<td><font size=2 color=white><b>UM</b></td></font></td>

<td><font size=2 color=white><b>Detalii</b></td></font></tr>";

for($i=0; $i<$number; $i++) {

$tip_imobil = mysql_result($result, $i, "tip_imobil");

$zona = mysql_result($result, $i, "zona");

$conf_dec = mysql_result($result,$i,"conf_dec");

$nr_camere = mysql_result($result,$i,"nr_camere");

$pret = mysql_result($result,$i,"pret");

$um = mysql_result($result,$i,"um");

$detalii = mysql_result($result,$i,"detalii");

/* afisarea randurilor din tabel pe fond ce culori intercalate pe fond alb sau colorat pentru o percepere mai buna.

if ($i%2 == 0) {

print "<tr bgcolor=#D1DADF>";

} else {

print "<tr>";

}

print "<td><font size=2 >$tip_imobil</font></td>

<td><font size=2 >$zona</font></td>

<td><font size=2 >$conf_dec</font></tr>

<td><font size=2 >$nr_camere</font></tr>

<td><font size=2 >$pret</font></tr>

<td><font size=2 >$um</font></tr>

<td><font size=2 >$detalii</font></td></tr>";

}

print "</table>";

} else {

print "<h4>Nu sunt oferte </h4>";

}

// Inchiderea conexiunii la baza de date

mysql_close();

VI.2.6 Instrumente ajutătoare realizare site

Site-ul web a fost realizat cu ajutorul aplicației Adobe Dreamweaver CS4 folosind atât interfața grafica cât și cea cod.

Pentru editarea imaginilor s-a folosit Adobe Photoshop CS3 cat si Adobe Iilustrator CS3

BIBLIOGRAFIE

Georgescu H. – Programare concurentă, Ed. Tehnică, 1996

Georgescu H. – Introducere în universul Java, Ed. Tehnică, 2002

Georgescu H. – Programare concurentă și distribuită în Java (pe pagina Web)

Fotache M. – Proiectarea bazelor de date. Normalizare si postnormalizare. Implementari SQL si Oracle, Ed. Polirom, 2005

Fotache M. – SQL. Dialecte DB2, Oracle si Visual FoxPro, Ed. Polirom, 2001

– Programarea rețelelor de calculatoare, Editura de Vest, 2000

Mahmoud Q. H. – Distributed Programming with Java, Springer, 1998

Steflik D. – Advanced Java Networking, Prentice Hall, 2002

www.php.org – site-ul oficial al limbajului PHP

BIBLIOGRAFIE

Georgescu H. – Programare concurentă, Ed. Tehnică, 1996

Georgescu H. – Introducere în universul Java, Ed. Tehnică, 2002

Georgescu H. – Programare concurentă și distribuită în Java (pe pagina Web)

Fotache M. – Proiectarea bazelor de date. Normalizare si postnormalizare. Implementari SQL si Oracle, Ed. Polirom, 2005

Fotache M. – SQL. Dialecte DB2, Oracle si Visual FoxPro, Ed. Polirom, 2001

– Programarea rețelelor de calculatoare, Editura de Vest, 2000

Mahmoud Q. H. – Distributed Programming with Java, Springer, 1998

Steflik D. – Advanced Java Networking, Prentice Hall, 2002

www.php.org – site-ul oficial al limbajului PHP

Similar Posts