Realizarea Unui Site Dedicat Serviciului de Catering Care Include Si Un Sistem de Comenzi Online

REALIZAREA UNUI SITE DEDICAT SERVICIULUI DE CATERING CARE INCLUDE ȘI UN SISTEM DE COMENZI ONLINE

LUCRARE DE LICENȚĂ

Cuprins

Capitolul 1. CAPITOLUL 1. INTRODUCERE

1.1. Enuntul temei

1.2. Contextul proiectului

1.3. Motivația

Capitolul 2. AFACERILE ELECTRONICE PE INTERNET

2.1. Caracteristici generale

2.2. Tipuri de afaceri on-line

Capitolul 3. TEHNOLOGII UTILIZATE

3.1. HTML, CSS și jQuery

3.2. PHP, Apache și MySQL

3.3. BAZE DE DATE

Capitolul 4. SPECIFICAȚIILE APLICAȚIEI

4.1. Prezentare  general

4.2. Pagina de acces

4.3. Stocarea informațiilor

Capitolul 5. IMPLEMENTAREA ȘI UTILIZAREA

5.1. Crearea bazei de date a sitului

5.1.1. Crearea unei baze de date folosind XAMPP

5.1.2. Crearea unui tabel al bazei de date

5.2. Crearea paginilor web

5.2.1. Pagina principală

5.2.2. Înregistrare Utilizator

5.2.3. Logare Utilizator

5.2.4. Contul unui utilizator

5.2.5. Selectarea unui meniu și comandare

5.2.6. Confirmarea comenzi

6. CONCLUZII

6.1. Concluzii

6.2. Posibilități de dezvoltare

Bibliografie

INTRODUCERE

Enuntul temei

Livrarea la domiciuliu a devenit un lucru normal in viața noastră, asta datorită locurilor de muncă ce nu permit o pauză de masă, sau și dacă o fac, timpul este insuficient pentru a merge la un restaurant.

Astfel, o nouă activitate a restaurantelor a luat viața. După cum se știe, cea mai ușoară modalitate de a comanda este internetul. De aceea, am decis sa realizez un site dedicat restaurantului express, dedicat serviciului de catering, care să includă și un sistem de comenzi online. 

Sistemul de comandă online este foarte simplu de folosit, fiind necesare foarte puține informații. Odată lansată o comandă, aceasta ajunge direct in bucatărie, iar dupa confirmare, in cel mai scurt timp ajunge să fie livrată.

Contextul proiectului

Cred că se poate spune că folosirea internetului a devenit parte din obiceiurile oamenilor, cam cum e curentul electric, apă caldă sau spălatul pe dinți. Unii îl consumă minimal, unii cred ca se pricep foarte bine, iar alții au început să îl folosească în moduri comerciale, fie ca angajați, fie ca antreprenori. Pentru mulți oferă o gamă largă de servicii, care facilitează desfașurarea activitățiilor, și ajută la relaxare.Un astfel de serviciu este si restaurantul express cu sistem de comenzi online pentru a ușura și pentru a nu pierde timpul cu mersul pentru a cumpara ceva de mâncare pentru a lua masa când ești la lucru sau nu ai timp de a merge într-un restaurant.Comanzi simplu și ușor cu ajutorul internetului.

Intenția acestui site catering nu este aceea de a înlocui restaurantul în realitate, ci doar să ajuta oamenii dacă nu au timp să facă deplasarea la restaurant, și ar dori dar nu au timp. De accea cu ajutorul internetul putem combina lumea reală cu cea virtuală.

Motivația

 Este ușor de înteles cât de important este pentru o firmă o pagină de Internet. Un site pe Internet este mai mult decât un afiș publicitar sau un birou virtual al societății. Posibilii clienții intră pe site-ul firmei, se informează, pun întrebări, primesc răspunsuri, comandă și/sau cumpară produse sau servicii, plătesc și toate acestea fără prea mari costuri.

Alte beneficii la fel de profitabile ar putea fi:

Permite comunicarea cu partenerii de afaceri și cu posibilii clienți oferindu-le informații de afaceri

Un site este o carte de vizită prezentată unor sute de mii de clienți și parteneri potențiali cuprinzând informații generale referitoare la obiectul de activitate, datele și persoanele de contact, ofertă de bunuri si prețuri, orele de lucru, sediu precum și alte astfel de posibilitați, 24 de ore din 24, simplu, eficient si profitabil.

Permite servirea mai profesionistă a clienților

Internetul ofera o multitudine de modalități de a servi clienții, fie printr-un service mult mai eficient, fie prin intermediul unui formular on-line care sa permita cumparătorilor să vadă daca un articol anume este disponibil în stoc sau nu. Acest lucru poate fi realizat simplu si rapid pe Internet.

Permite însoțirea ofertei de bunuri și servicii de imagini, sunet și video

Această facilitate oferită clienților îi poate convinge sau cel puțin să-i facă curioși. Orice alt tip de material publicitar nu ar putea produce același efect.Deci un restaurant poate fii promovat mult mai rapid cu ajutorul internetului prin propiul site.

Permite pătrunderea pe cea mai extinsă piață demografică

Utilizatorii Internetului reprezintă probabil cea mai extinsă piață demografică disponibilă: studenți, absolvenți de liceu sau universități, cei cu salarii mari sau cei care sunt pe punctul de a realiza venituri mari.

Daca această piață nu este exploatată de către firmă, concurența ar putea utiliza această neglijență în beneficiul ei.

Permite asistarea clienților prin a oferi răspunsuri la întrebări frecvente

De cele mai multe ori întrebările sunt fie aceleași, fie se referă cam la aceleași probleme, iar Internetul permite atât realizarea unei statistici cu privire la aspectele ridicate de vizitatorii site-ului, cât și expunerea unei pagini cu posibile răspunsuri la posibile întrebări. Se reduc, astfel, și eventualele costuri ocazionate de angajarea unor operatori telefonici.

Permite modificarea rapidă a informațiilor publicate

Uneori, informația se schimbă chiar înainte de a ajunge la tipografie. Publicațiile electronice, în schimb, oferă posibilitatea de a modifica informația în funcție de necesități, în timp real si asta datorită gradului mare de flexibilitate.De exemplu la restaurante sunt meniuri care nu se mai fac iar în lista cu meniuri a cliențiilor apare, fiindcă nu a fost timp pentru tipărirea altora, iar pe site se pot adăuga sau șterge meniuri rapid și ușor fără a mai cheltui bani.

Permite obținerea unui feedback de la clienți cu privire la produsele și serviciile oferite

Internetul oferă, prin intermediul paginilor web, posibilitatea testării pieței pentru a prevenii unele situații cum ar fi scăderea vânzărilor datorită unor prețuri nepotrivite sau a unor probleme calitative. Totul instantaneu și fără cheltuieli suplimentare, prin completarea unui formular încorporat în pagina web.

Permite testarea pieței pentru produsele și serviciile noi

Lansarea unui nou produs pe piață necesită o reclamă costisitoare. Pagina web permite o testare a reacției clienților la noul produs, mai simplu, mai rapid și mai eficient decât pe oricare altă piață.

Acestea sunt principalele motive pentru care am ales să realiz un site catering a unui restaurant.Acest site poate fi considerat și o afacere on-line.

AFACERILE ELECTRONICE PE INTERNET

Caracteristici generale

Internetul este un spatiu propice pentru dezvoltarea unei afaceri, însa potentialul sau comercial nu este înca folosit la justa sa valoare. Exista posibilitatea obtinerii de profituri rapide dintr-o activitate on-line cu specific comercial, fara a avea cunostinte prea multe în domeniul IT, fara a investi o suma initiala majora.

De la servicii de producere a fotografiilor descarcate de client direct pe site-ul firmei, pâna la asigurarea aprovizionarii unei familii care are un program prea încarcat pentru a ajunge la piata, Internetul ramâne cea mai simpla si mai eficienta forma, pentru un întreprinzator, de a se face util si mai ales profitabil.

În afacerile on-line costurile sunt scazute, profiturile realizate sunt mari si ceea ce este foarte important, se pot realiza afaceri cu parteneri aflati în diferite colturi ale lumii, stând confortabil în fata calculatorului.

Prezenta societatii pe Internet, prin intermediul unui site are câteva avantaje clare comparativ cu deschiderea unui sediu fizic. Avantajele pot fi împartite, în functie de beneficiarul lor direct, în avantaje directe ale firmei, avantaje ale beneficiarilor produselor si serviciilor firmei si avantaje ale societatii.

Principalele avantaje aduse activitatii firmelor de catre diferitele tipuri de afaceri electronice sunt:

Faciliteaza extinderea si dezvoltarea activitatii printr-un acces rapid la pietele locale si nationale, sau pe pietele internationale;

  Scaderea costurilor cu desfasurarea activitatii firmei, în special cele legate de realizarea, procesarea, distribuirea, pastrarea si regasirea informatiilor pastrate pe hârtie; în cazul afacerilor electronice sunt folosite solutii informatice, automatizate, pentru aceste activitati;

 Creeaza posibilitatea modelarii, adaptarii a produselor si serviciilor la  nevoile cumparatorilor;

  Reducerea semnificativa a costurilor de comunicatie si transport.

Avantajele consumatorilor sunt, de asemenea, numeroase:

Consumatorii au posibilitatea de a cumpara sau de a efectua tranzactii on-line 24 h/zi, în tot timpul anului din aproape orice locatie;

Consumatorii beneficiaza de mai multe posibilitati de alegere;

Cumparatorii pot sa faca o "cercetare de piata" pentru a alege mai usor cel mai mic pret pentru un produs sau serviciu;

Permite livrarea rapida a produselor si/sau serviciilor (în unele cazuri, în functie de locatia destinatarului si tipul produsului);

Consumatorii pot sa primeasca informatie referitoare la oferta de bunuri si servicii într-un timp scurt: în câteva secunde si nu în zile sau chiar saptamâni cum este cazul în multe afaceri traditionale;

Consumatorul poate participa la licitatii virtuale daca îndeplineste conditiile necesare;

Se favorizeaza competitia, având ca efect scaderea preturilor la produsele si serviciile din oferta;

Consumatorii au posibilitatea de sa interactioneze cu alti cumparatori prin intermediul comunitatilor electronice, sa schime impresii si sa-si compare experientele în domeniu.

Exista si o serie de avantaje sociale, printre care:

Oferirea posibilitatii mai multor persoane sa lucreze de acasa si sa cumpere de acasa, ceea ce poate duce eliminarea marilor aglomerari din supermarketuri, si în timp, la scaderea traficului auto, la scaderea poluarii;

Anumite marfuri pot fi vândute la preturi mai mici, acest lucru avantajându-i pe cei cu venituri mai mici, contribuind astfel la protectia sociala;

Afacerile electronice contribuie la cresterea eficientei si/sau îmbunatatirea calitatii produselor si serviciilor.

Pe lânga aceste avantaje, afacerile electronice au si o serie de limite. Cele mai importante neajunsuri ale afacerilor electronice sunt:

Lipsa unor standarde universal acceptate pentru calitate, securitate si încredere în afacerile electronice;

Instrumentele de dezvoltare software pentru derularea afacerilor electronice sunt înca în evolutie;

Exista unele dificultati în ceea ce priveste integrarea aplicatiilor software de comert electronic cu unele aplicatii existente si bazele de date;

Accesul Internet este înca scump si/sau inoportun pentru o mare parte a populatiei, însa aceasta este o problema de moment care se va rezolva în viitorii ani.

Tipuri de afaceri on-line

În ceea ce priveste afacerile electronice exista o multitudine de categorii în care aceste sunt împartite. Strâns legat de afacerile electronice este comertule electronic.

Comerțul electronic (e-commerce) este procesul de cumparăre, vânzare sau schimb de produse, servicii sau informații prin intermediul rețelelor de calculatoare. Afacerile electronice (e-business) nu se limitează la cumpararea si vânzarea de bunuri sau servicii, ci includ si facilitati pentru servirea cumparatorilor, colaborarea cu partenerii de afaceri sau conducerea unei organizatii prin mijloace electronice. Un exemplu poate fi compania Hewlett-Packard care a lansat sub numele de servicii electronice (e-services), o serie de solutii complete pentru afaceri, formate dintr-o componenta hardware, o parte software si consultanta pentru afaceri.

Activitatile din categoria afacerilor electronice sunt acele parti ale afacerilor traditionale care pot fi automatizate si mai mult, se pot desfasura pe Internet.

Afacerile electronice pot fi partiale sau totale si ele presupun desfasurarea a cel putin uneia din urmatoarele activitati:

Prezenta on-line (existenta unui site de prezentare);

Comse, servicii sau informații prin intermediul rețelelor de calculatoare. Afacerile electronice (e-business) nu se limitează la cumpararea si vânzarea de bunuri sau servicii, ci includ si facilitati pentru servirea cumparatorilor, colaborarea cu partenerii de afaceri sau conducerea unei organizatii prin mijloace electronice. Un exemplu poate fi compania Hewlett-Packard care a lansat sub numele de servicii electronice (e-services), o serie de solutii complete pentru afaceri, formate dintr-o componenta hardware, o parte software si consultanta pentru afaceri.

Activitatile din categoria afacerilor electronice sunt acele parti ale afacerilor traditionale care pot fi automatizate si mai mult, se pot desfasura pe Internet.

Afacerile electronice pot fi partiale sau totale si ele presupun desfasurarea a cel putin uneia din urmatoarele activitati:

Prezenta on-line (existenta unui site de prezentare);

Comanda on-line;

Plata on-line;

Transmiterea on-line a produsului sau serviciului.

Strâns legata de comertul electronic este piata virtuala, aceasta reprezentând locul unde se întâlnesc cumparatorii si vânzatorii pentru schimbul de produse, servicii sau informatii contra bani.

Afacerile electronice existente la ora actuala au fost împartite în câteva mari categorii si anume:

Business to Business (B2B)

 Business to Consumer (B2C),

 Consumer to business (C2B),

   Consumer to consumer (C2C),

  M-commerce (comertul mobil)

   E-banking,

 E-directories,

 E-engineering,

  E-gambling,

  E-learning,

 E-mailing,

 E-working,

E-operational resources management

E-procurement

  E-trading/ e-brokering;

E-leasing

Government-to-business (G2B)

Government-to-consumer (G2C)

Business to Business (B2B) reprezinta un model de comert electronic în care toti participantii care participa la tranzactii sunt companii sau organizatii. Acest tip de afaceri folosesc ca mediu de comunicare extranetul vânzatorului de servicii prin utilizarea de nume si parole pentru paginile web proprii. Celelalte categorii de afaceri electronice folosesc ca mediu de comunicare reteaua Internet.

Interactiunile de acest tip cuprind cautarea potentialilor furnizori, cataloage de produse si posibilitatea de a comanda bunuri si servicii. Furnizorii primesc comenzile, le urmaresc, coordoneaza livrarea, factureaza si ofera asistenta consumatorilor.

O organizatie B2B este orientata, în primul rând, spre oferirea de informatii, date si conectivitate între alte organizatii pentru un produs sau o functie sau pe o anumita piata.

Business to Consumer (B2C) este un model de comert electronic în care companiile ofera persoanelor fizice, prin intermediul magazinele on-line (magazine virtuale) o serie de servicii similare celor ale comertului traditional: informari despre produsele/servicii, oferte speciale, discount-uri, plata electronica a produselor achizitionate, achizitionarea de produse. Magazinele electronice au la baza un site Web care este administrat de o firma pentru promovarea si vânzarea de produse si/sau servicii. Un magazin virtual contine un catalog de produse si/sau servicii cu descrierea aferenta fiecarei pozitii. Catalogul este gestionat prin intermediul unui Sistem de Gestiune al Bazelor de Date(SGBD) prin intermediul caruia care sunt stocate si actualizate informatii le privind produsele si/sau serviciile oferite. Magazinele electronice includ functii pentru cautarea si vizualizarea produsele, preluarea comenzilor si efectuarea platilor (sau initierea acestora). Acest tip de afacere a avut o evolutie destul de lenta datorita securitatii informatiilor transmise prin intermediul Internetului. Pe masura ce problemele au fost rezolvate încrederea clientilor a crescut, ca si volumul tranzactiilor.

Exemple de afaceri B2C sunt: www.emag.ro și www.amazon.com .

Figure 2: emag.ro

Consumer to business (C2B) este o categorie de afaceri electronice în care persoanele fizice (consumatori) utilizeaza Internetul pentru a-si vinde produsele sau serviciile firmelor si/sau cauta vânzatori sa liciteze pentru produsele sau serviciile de care au nevoie.

Consumer to consumer (C2C) – model în care consumatorii îsi vând direct altor consumatori produsele si serviciile prin intermediul unor licitatii on-line. Un exemplu este www.okazii.ro.

Figure 3: Okazii.ro

M-commerce sau comertul mobil în care tranzactiile si activitatile de comert electronic sunt conduse prin intermediul telefoanelor mobile. Cele mai frecvente servicii oferite sunt livrarea de informatii, vânzarea de bilete la spectacole etc.

E-banking presupune realizarea de tranzactii bancare on-line, transfer de bani din conturile deschise la banci, plati electronice, consultanta bancara. Un astfel de exemplu este serviciul e-bcr oferit de Banca Comerciala Româna la adresa http://www.bcr.ro/multicash 

E-directories sau cataloage de informatii sunt site-uri, ca de exemplu  www.yahoo.com , care îsi organizeaza informatiile pe categorii de concepte. Regasirea informatiilor se face pe baza unor arbori de cautare.

E-engineering este creat pentru proiectarea electronica distribuita. 

E-gambling ofera jocuri de noroc virtuale. Un exemplu este CasinoPalace.com  

E-learning reprezinta sisteme instruire virtuala. De exemplu www.webct.com .

E-mailing sunt foarte cunoscutele serviciile de posta electronica.

E-working sau întreprinderi virtuale, un exemplu fiind www.eworking.com.  

E-operational resources management ofera echipamente de calcul, produse pentru întretinere si reparatii etc.

E-procurement (aprovizionare electronica) folosita pentru procurarea bunurilor si serviciilor de catre marile companii si autoritati publice. Prin publicarea pe Web a specificatiilor ofertei, scad atât timpul cât si costul de transmisie, marindu-se numarul de firme care iau parte la licitatie. Sistemul duce la cresterea concurentei si automat scaderea pretului.

E-trading/e-brokering sunt sistemele de bursa virtuala folosite pentru cumpararea si vânzarea on-line a actiunilor. De exemplu site-ul Bursei Electronice RASDAQ este www.rasd.ro;

Prin e-leasing sunt oferite sisteme de leasing electronic, cum ar fi www.leasing.ro 

Government-to-business (G2B) reprezinta un model de afaceri electronice în care o institutie guvernamentala cumpara sau vinde bunuri, servicii sau informatii persoanelor juridice. La noi în tara a cunoscut o dezvoltare rapida www.e-licitatie.ro .

TEHNOLOGII UTILIZATE

O aplicație web este o aplicație client-server care cuprinde 2 părți: partea de front-end (client) și partea de back-end (server).

Modelul client/server este o arhitectură ce descrie relația dintre 2 programe care se află fie pe același calculator, fie pe calculatoare diferite. Clientul face o cerere la server, iar serverul procesează cererea și returnează un răspuns.

În cazul aplicațiilor web, browser-ul (navigatorul) este clientul care trimite cereri unui server web. Un client poate solicita pagini statice, care nu necesită niciun fel de procesare pe partea de server, sau pagini dinamice, care cuprind script-uri scrise într-un anumit limbaj de programare pe care serverul web le interpretază și le trimite înapoi clientului sub formă de pagină statică.

Într-o aplicație web, partea de client (HTML, CSS, jQuery, JavaScript) se ocupă cu prezentarea informațiilor, iar partea de server (PHP, ASP, Perl) se ocupă cu stocarea și procesarea acestora,iar stocarea datelor se face cu MySQL Server sau SQL Server.

HTML, CSS și jQuery

Pentru ca o pagină web să poată fi afișată într-un browser (navigator), este necesară utilizarea unui limbaj de marcare, care are ca scop structurarea și prezentarea documentului. HTML (acronimul de la HyperText Mark-up Language) este limbajul de marcare care stă la baza paginilor web și folosește etichete denumite tag-uri care oferă indicații de redare a informației. Browser-ul interpretează tag-urile, și astfel documentul este structurat în diferite moduri: tabele, liste, paragrafe, titluri etc. [23]

Standardele HTML sunt menținute de World Wide Web Consortium (W3C), o ascociație fondată și condusă în prezent de Tim Berners-Lee [14], care are ca scop dezvoltarea standardelor pentru World Wide Web în vederea creșterii și a îmbunătățirii acestuia, pentru a-l face accesibil tuturor utilizatorillor.

Orice fișier HTML ar trebui să înceapă cu declarația <!DOCTYPE>, care informează browser-ul despre versiunea de HTML în care este scrisă pagina. Următorul tag este <html>..</html>, tag-ul care le cuprinde pe toate celelalte și care spune browser-ului că documentul curent este de tip HTML. Apoi este elementul <head>..</head>, care adaugă informații despre documentul HTML, cum ar fi titlu (prin tag-ul <title>), cuvinte cheie, descriere, detalii despre autor (folosind tag-ul <meta>, care ajută la controlarea modului în care motoarele de căutare indexează site-ul) și adaugă, de asemenea, fișiere externe utilizând tag-ul <link>. Zona care va fi afișată în browser este delimitată de <body>..</body>. Aceasta cuprinde toate elementele fișierului HTML: imagini, câmpuri, text, liste, tabele etc.

În timp ce HTML structurează conținutul unui document, este nevoie de un instrument care să îl stilizeze și să îl formateze. CSS (Cascading Style Sheet) este un limbaj de stilizare care se ocupă cu acest lucru, personalizând tag-urile (etichetele) HTML, XML și XHTML, iar standardele sale sunt menționate tot de W3C [18]. Utilizând CSS se poate formata orice element al unei pagini web, de la culorile textelor, margini, imagini și culori de fundal la poziționarea elementelor în pagină, acest lucru realizându-se prin proprietăți. CSS are o sintaxă simplă, proprietățile fiind specificate prin cuvinte cheie din limba engleză: font, font-size, text-align, margin, padding, float, height, border, background etc.

CSS se poate adăuga direct în interiorul tag-urilor HTML prin atributul „style” (de exemplu <p style=”font-size: 13px;”> Paragraf </p>), acesta fiind numit CSS inline, sau în partea de head a fișierului HTML cu ajutorul tag-ului <style>, numit CSS intern :

<head>

<style type=”text/css”>

p {

font-size: 13px;

}

</head>

Cea mai bună metodă însă este utilizarea unui fișier CSS extern, care să fie inclus tot în partea de head a fișierului HTML cu ajutorul tag-ului <link>:

<link rel=”stylesheet” type=”text/css” href=”style.css”>,

deoarece modificările ulterioare să fie făcute numai în fișierul CSS, nu și în HTML.

JavaScript este un limbaj de programare, de tip script, care lucrează pe partea de client și care definește comportamentul elementelor într-o pagină Web [12]. În general, JavaScript este utilizat pentru a adăuga funcționalități unei pagini Web, de exemplu să răspundă la diferite acțiuni (click, mișcarea mouse-ului, apăsarea unei taste), să comunice cu serverul, să valideze date și multe altele.

JavaScript a fost dezvoltat de firma Netscape, de Brendan Eich, sub numele de LiveScript [22], pentru a extinde funcționalitățile HTML. JavaScript a apărut din necesitatea de a rezolva sarcini relativ simple pe partea de client și de a face mai interactivă navigarea în cadrul site-ului.

JQuery [12] este o librărie JavaScript concepută de către John Resig în anul 2006 pentru a simplifica lucruri precum parcurgerea unui document HTML, animațiile, apelurile AJAX și manipularea evenimentelor. JQuery este cea mai populară librărie JavaScript în prezent și a schimbat modul de codare în JavaScript a multor dezvoltatori. De asemenea, au fost create sute de plugin-uri care extind funcționalitatea jQuery, prin urmare acesta este un instrument esențial pentru orice porțiune de scripting pe partea de client.

JQuery oferă modalități elegante de selectare a elementelor dintr-o pagină, schimbă proprietăți din CSS dinamic și poate modifica chiar și conținutul paginii, simplifică schimbul de informații cu server-ul fără încărcarea paginii (apeluri AJAX) și nu în ultimul rând, adaugă animații interesante și complexe paginilor Web.

PHP, Apache și MySQL

PHP este un limbaj de scripting folosit pe scară largă în dezvoltarea paginilor și a aplicațiilor web. A fost creat de Rasmus Lerdof în anul 1995, din dorința acestuia de a crea un script pentru a urmări numărul de vizitatori ai site-ului său. [11]

Inițial PHP însemna Personal Home Page și a fost lansat ca un proiect open source, de-a lungul timpului mulți dezvoltatori alăturându-se la perfecționarea soft-ului. În 1997 PHP a fost numit cum este și în prezent ”PHP: Hypertext Preprocessor” și reprezintă unul dintre cel mai importante și populare limbaje de programare web. [11]

Fiind un limbaj de scripting, PHP aduce multe avantaje programatorilor, de exemplu codul scris nu trebuie compilat, ceea ce îl face ușor de editat și testat. Majoritatea limbajelor de programare necesită compilarea fișierelor în cod mașină înainte de rulare, proces care presupune mult timp.

Rulat din linia de comandă, PHP permite crearea de aplicații independente, însă principalul scop al PHP-ului este crearea de script-uri pentru a fi rulate pe un server web, permițând modificarea paginilor web înainte ca acestea să fie transmise de server către browserele utilizatorilor.

Pentru utilizarea PHP-ului pe un site web, este nevoie de un server care să proceseze script-uri PHP. Apache este un server HTTP de tip open source, care, odată instalat pe calculator, permite dezvoltatorilor să ruleze scripturi PHP local, fapt pentru care, Apache este un element important pentru dezvoltarea locală. [11]

Apache este cel mai popular server web în prezent, având așadar o contribuție mare în dezvoltarea Internetului. Există multe module (plugin-uri) care au fost create pentru a extinde funcționalitatea serverului Apache. Printre cele mai importante funcționalități ale serverului Apache se numără suportul pentru CGI (Common Gateway Interface) și găzduirea virtuală (posibilitatea găzduirii mai multor site-uri simultan pe același server).

BAZE DE DATE

Pentru site-urile dinamice o componentă importantă este stocarea datelor astfel încât ele să poată fi modificate rapid și ușor – acest lucru fiind principala diferență între un site dinamic și un site static realizat în HTML. Deoarece PHP nu oferă o metodă eficientă de stocare a informațiilor, este nevoie de un sistem de gestiune a bazelor de date relaționale (SGBD).

MySQL este unul dintre cele mai populare SGDB-uri open source în prezent și este foarte des întâlnit împreună cu PHP. Acesta a fost inițial lansat în 1996 și este denumit după numele fiicei principalului autor și co-fondator Michael Widenius [17], My, și SQL (Structured Query Language).

MySQL permite dezvoltatorilor să stocheze datele în tabele structurate pe linii și coloane pentru ca informația să fie bine organizată, ușor de găsit, modificat, adăugat și șters. MySQL este un server de baze de date SQL multi-user (controlează accesul la date pentru a garanta că mai mulți utilizatori pot lucra simultan cu acestea) și multi-thread (mai multe fire de execuție).

MySQL utilizează limbajul de programare SQL, limbaj care se ocupă atât cu inserări, interogări, ștergeri și modificări asupra informațiilor dintr-o bază de date, cât și cu controlul accesului la o bază de date. SQL este un limbaj specific pentru gestiunea datelor în SGBD-uri.

Figure 5 : Comunicare dintre Client-Side si Server Side + Database

SPECIFICAȚIILE APLICAȚIEI

Prezentare  general

Acest site a fost dezvoltat în NetBeans.

NetBeans este un proiect open-source, cu o bază de utilizatori foarte mare, o comunitate în creștere și peste 100 de parteneri (în creștere!) din toată lumea. Sun Microsystems a fondat proiectul open source NetBeans în iunie 2000 și continuă să fie principalul sponsor al proiectului.

Astăzi există două produse: NetBeans IDE și platforma NetBeans.

NetBeans IDE este un mediu de dezvoltare – un instrument pentru programatori, pentru scrierea, compilarea, testarea, depanarea, proiectarea și instalarea programelor. Este scris în Java – dar poate accepta orice limbaj de programare. De asemenea, există un număr imens de module pentru extinderea NetBeans IDE. NetBeans IDE este un produs gratuit, fără restricții legate de modul de utilizare.

De asemenea, este disponibilă Platforma NetBeans; o bază modulară și extensibilă, utilizată drept conector software pentru crearea aplicațiilor desktop puternice. Partenerii ISV oferă Plugin-uri cu valoare adăugată, care se integrează ușor în platformă și care pot fi utilizate, de asemenea, la dezvoltarea propriilor instrumente și soluții.

Ambele produse sunt open-source și gratuite pentru uz comercial și necomercial.

Acest site are numele de “PHP Catering” și se ocupă cu prezentarea meniurilor, comandarea și livrarea acestora către utilizatorul care face comanda.Este realizat în așa fel ca pentru toată lumea să fie ușor de folosit. Este în folosul tuturor care doresc să mănânce ceva gustos și nu au timp pentru a merge la restaurant sau la cumpărături ca să gătească ceva.Utilizatorul doar selectează ce dorește să mănânce(mic-dejun, salată, supă, fel principal sau desert) după selectare depune comanda și restul face administratorul.

Prezentarea funcționalității utilizatoriilor și a administratorului:

Toate datele utilizatorului și contul adminului este salvat în baza de date.Așa cum sunt salvate și toate meniurile și comenzile.

Administratorul nu se poate inregistra fiindca avem doar un administrator nu putem avea mai multe, utilizatori putem avea oricâți.

Administratorul are o pagină separată în care are urmatoarele funcționalității de CRUD(CREATE READ UPDATE DELETE): -adăugare meniu

-ștergere meniu

-căutare(citire) meniu

Utilizatorul nu poate modifica nimica în site doar să selecteze și să comande.

Cum functionează o comandă depusă de utilizator pâna la livrarea acestuia: Utilizatorul alege ce meniu dorește să comande , această comanda v-a aparea in ”pagina comandă” a utilizatorului unde trebuie sa confirme comanda și trebuie să întroducă adresa unde dorește să fie livrat comanda.După ce comanda a fost trimisă acesta v-a apararea pe pagina adminului, iar dupa prepararea meniului administratorul poate livra comanda către utilizator pe adresa introdusă.

Pagina de acces

Fișierul predefinit pentru directorul catering este index.php, deci înseamnă că atunci când accesăm serverul prin comanda http://localhost/catering/ serverul va trimite fișierul de bază, adică prima pagină a site-ului (index.php) ce va fi afișat in browser (Fig 3.1).

Figure 8: Pagina principala

Design-ul a fost realizat în CSS(Cascading Style Sheets) folosind și câteva plugin-uri (Cufon fonts,pretty Photo,etc.) javascript și jQuery.

Așa cum puteți vedea, prima pagină este o pagină de prezentare este facut în așa fel ca să atragă clienții,această pagină web constă din 3 părți: header, content-area și footer.

Header-ul conține : numele (PHP Catering), meniul pentru utilizator (Comenzi,Meniu,FAQs,Contul meu) și în partea de dreapta-sus avem buton-ul de Înapoi care prin apăsarea lui de pe oricare pagină ne va duce la pagina principal și mai avem un buton Log In care ne duce la pagina Login al utilizatorului(cont.php).

Funcțiile elementelor din header cum ar fi Inapoi,Login,Comenzi,Meniu,etc. vor fi prezentate mai în amănunte în următorul capitol.

Content-area conține: o galerie foto cu 3 poze care se mișcă una dupa alta dupa un anumit timp, este realizat în jQuery cu ajutorul unui plugin pe nume prettyPhoto.De desubtul galeriei se află un meniu vertical încărcat din baza de date iar prin selectarea unei opțiuni pagina v-a încărca 4 poze din baza de date.Mai găsim și un buton Sign up care ne duce la pagina de Înregistrare(inregistrare.php).

Footer-ul conține: numele situ-lui, anul, numele celui care a realizat iar sub tema acestuia.

Stocarea informațiilor

O aplicație pentru web prelucrează date de diferite naturi cum ar fi: șiruri de caractere, valori numerice, date calendaristice etc.Câteva exemple din proiectul acesta: numele meniului, numele utilizatorului, data și ora livrării, categorii(mic-dejun,supă,desert), îngrediente, parole, adrese de e-mail etc. Informațiile sunt stocate într-o bază de date relațională sunt dispuse într-un ansamblu de fișiere. Din considerente legate de creșterea vitezei de accesare a informațiilor, fișierele sunt formate din articole având acceași structură. Articolele au o structura a unui fișier de date este definită la crearea sa, prin precizarea câmpurilor pe care le va conține fiecare articol.

Un câmp dintr-un articol conține o informație elementară. Fiecare câmp are un nume, conține un tip de informație (șir de caractere, număr, dată calendaristică,fișier etc.), are o lungime de reprezentare a informației și, în cazul pentru câmpuri numerice, are precizat numărul de zecimale. Datorită faptului că formatul articolului este fix, frecvent se folosește pentru fișier o reprezentare tabelară și chiar se folosește pentru fișierele de date denumirea de ”tabele”.

O aplicație de tip server este un program care așteaptă comenzi din partea unor aplicații client. În cazul serverlor de baze de date relaționale (MySQL, Oracle,IBM DB2,etc.) se folosește limbajul SQL (Structured Query Language).

În stocarea informațiilor întroduse în baza de date am folosit XAMPP-ul, care este un pachet de aplicații care constituie infrastructura software necesară găzduirii siteurilor web: server de web (Apache), server de baze de date (MySQL), interpretoare pentru scripturi scrise în limbajele PHP și Perl. Pentru a putea fi folosit pe servere care găzduiesc siteuri, după instalarea pachetului de aplicații trebuie operate unele configurări, mai ales pentru ameliorarea securității acestor pachete.

XAMPP a fost creat însă pentru a pune la dispoziția dezvoltatorilor un instrumenteficient de testare a diferitelor aplicatii in dezvltare. Odată instalat pe calculatorul propriu, pachetul de aplicații va face ca acesta să aibă comportamentul unui server, permițând testareaaplicațiilor scrise fără a intra în conflict cu firma care va găzdui în final produsul softwarerealizat.

XAMPP (http://www.apachefriends.org/en/xampp-windows.html) are și o variant ”lite”, XAMPP Lite, care poate fi utilizată imediat după descărcare și dezarhivare, fără a fi necesară instalarea. După instalare, prezența pe calculator a pachetului de aplicații se manifestă prin aplicația XAMPP Control Panel Application.

După lansarea în execuție a acestei aplicații se vor apăsa butoanele Start din dreptul celor două aplicații esențiale testării siteurilor : Apache și MySQL.

Verificarea funcționării aplicațiilor necesare pentru testarea saiturilor se poate realizatastând în browser adresa aplicației web integrate în XAMPP și destinate administrăriiserverului de baze de date MySQL:http://localhost/phpmyadmin/.Ca aplicație de tip server am folosit Apache. O aplicație de acest tip este un programreactiv. El rulează în continuu pe calculatorul destinat păstrării unuia sau mai multor saituriweb și așteaptă cereri din partea unei aplicații client (Internet Explorer, Mozilla Firefox,Opera etc.).Ca aplicație, serverul pentru web accesează un ansamblu de fișiere dispuse pe HDD acalculatorului pe care acesta este instalat. Dacă o aplicație client solicită un fișier existent,serverul pentru web îl va furniza respectând regulile unui protocol precizat în cerereaclientului (http).Paginile web sunt de regulă documente multimedia conținând text, imagini, sunet,animații. Ele sunt stocate pe HDD în mai multe fișiere, fiecare fișier conținând informații deun anumit tip. Corespunzător, serverul pentru web va primi din partea aplicației client o suităde cereri de transfer de fișiere începând cu fișierul principal.Asamblarea documentului din fragmentele primite cade în sarcina aplicației client. Peserverele pentru Internet funcționând sub UNIX sau Linux, Apache este configurat astfelîncât rădăcina structurii arborescente de directoare care găzduiesc saituri diferă de cea creatăîn urma instalării XAMPP.

IMPLEMENTAREA ȘI UTILIZAREA

Crearea bazei de date a sitului

Crearea unei baze de date folosind XAMPP

Baza de date a fost realizată cu aplicația XAMPP folosind phpMyAdmin.Pentru deschiderea aplicației phpMyAdmin se pornește XAMPP și se tastează în caseta detext pentru adrese a aplicației Google Chrome adresa: http://localhost/phpmyadmin/ .

În fereastra afișată se va tasta numele noii baze de date ( catering ) și se va apăsa butonul Create sau putem creea baza de date selectând opțiunea SQL din meniu și vom scrie urmatoarele comenzi :

Dup ace am scris comenzile necesare apăsăm pe butonul GO care v-a trimite serverului comanda, iar daca totul este corect v-a creea baza de date cu numele ”catering”.

Dacă nu facem cu SQL QUERY atunci phpMyAdmin va crea comanda SQL de creare a unei baze de date și o va trimite serverului de baze de date MySQL.

Odată creată, baza de date catalog va fi bază de date curentă . Comenzile ulteriore, deexemplu cele prin care se vor crea tabelele (fișierele) acesteia, se vor adresa acesteia.La următoarele porniri ale aplicației phpMyAdmin intrarea în baza de date catalog seva realiza prin selectarea acesteia în arborele afișat în panoul din stânga al aplicației.

5.1.2. Crearea unui tabel al bazei de date

Pentru ca site-ul să funcționeze avem nevoie de 5 tabele în baza de date.

Crearea tabelei admin

Tabelul admin va conține datele de identificare a utilizatorilor autorizați să opereze în baza de date.Adminul poate face modificari ,de exemplu poate creea noi meniuri, poate șterge cele existente.

Crearea unui tabel se realizează concomitant cu definirea structurii sale.

Tabelul admin are 3 câmpuri(engl. fields). În vederea creării unui tabel folosim comanda CREATE TABLE, dupa care trebuie întroduse numele și tipul fiecărui câmp.

Figure 17: Creare tabel ADMIN

Câmpurile tabelului admin sunt id_admin (INT – valoare întreagă), nume (VARCHAR lungime maximă 25 de caractere), parola (VARCHAR – lungime maximă tot 20 de caractere).Tipul VARCHAR se folosește pentru șiruri de caractere de lungime variabilă. Pentru câmpul id_admin s-a mai precizat că este PRIMARY KEY și proprietatea de AUTO_INCREMENT.

Prima caracteristică, PRIMARY KEY indică faptul că id_admin este cheie primară. Cheia primară a unui tabel din baza de date are valori distinct pentru toate articolele din tabel și are rolul de identificator unic al acestora. Dacă ulterior se va dori suprimarea unui articol se va putea selcta articolul indicându-I cheia primară.

Proprietatea AUTO_INCREMENT indică modul de formare a valorilor câmpului id_admin . Valorea acestuia pentru un nou articol care urmează să fie adăugat se calculează automat, prin incrementarea valorii corespunzătoare ultimului articol present în tabel.

Crearea tabelei clienti

Tabelul clienti va conține datele de identificare a utilizatorilor care se vor putea înregistra pe site și vor putea comanda preparatul dorit.Tabelul conține 7 cîmpuri, cheia primară fiind id_client și arată astfel:

Figure 2:Tabelul Clienti

Utilizatorii se vor loga cu e-mail selectat și cu parola setată la înregistrare.

Crearea tabelei categorii

Tabelul categorii va conține 2 câmpuri, id_categ este cheia primară iar câmpul categoria va conține MIC DEJUN, SALATE, SUPE, FEL PRINCIPAL, DESERT. Din aceste meniuri utilizatorul poate selecta ce fel de preparat dorește să comande.Tabelul este creat în felul următor:

CREATE TABLE categorii{

id_categ INT NOT NULL AUTO_INCREMENT,

categoria VARCHAR (25) NOT NULL,

PRIMARY KEY (id_categ)

}

Crearea tabelei preparate

Tabelul preparate va conține 7 câmpuri, id_preparat este cheia primară iar câmpul id_categorie va fi cheia secundară (FOREIGN KEY) care face legătura cu tabelul categorie prin id_categ. Mai avem numele, ingredientele și prețul preparatului și încă doua câmpuri foto și foto_thumb în care sunt stocate numele pozelor (ex.mic-dejun1.jpg ). Crearea tabelului arata așa :

CREATE TABLE preparate{

id_preparat INT NOT NULL AUTO_INCREMENT,

id_categorie INT NOT NULL,

categoria VARCHAR (25) NOT NULL,

nume VARCHAR (25) NOT NULL,

ingredient VARCHAR (255) NOT NULL,

pret VARCHAR (10) NOT NULL,

foto VARCHAR (255) NOT NULL,

foto_thumb VARCHAR (255) NOT NULL,

PRIMARY KEY (id_categ),

FOREIGN KEY (id_categorie) REFERENCES Categorii(id_categ)

}

Crearea tabelei comenzi

În acest tabel vor fi stocate comenziile făcute de catre clienții și datele livrarii de către administrator.

Tabelul comenzi va conține 8 câmpuri, id_comanda este cheia primară iar câmpul id_client și id_preparat vor fi cheii secundare (FOREIGN KEY) primul face legătura cu tabelul clienți prin id_client iar celălalt face legătura cu tabelul preparate prin id_preparat.

Mai avem câmpurile:

adresa_livrare întrodus de către client în momentul în care confirm comanda,

bucați ,adică cantitatea preparatului (1,2,3,..),

stare care poate fi 0- Nepreluat 1- În derulare și 2-Livrat ,

data_livrare setat automat când administratorul selectează că comanda poate fi livrata,

ora_livrare se pune automat ora când adminul apasă butonul livrare.

Crearea se face în felul următor:

CREATE TABLE comenzi{

id_comanda INT NOT NULL AUTO_INCREMENT,

id_client INT NOT NULL,

id_preparat INT NOT NULL,

adresa_livrare VARCHAR (50) NOT NULL,

bucati INT(11) NOT NULL,

stare INT(3) NOT NULL,

data_livrare DATE NOT NULL,

ora_livrare DECIMAL(4,2) NOT NULL,

PRIMARY KEY (id_comanda),

FOREIGN KEY (id_client) REFERENCES Clienti(id_client),

FOREIGN KEY (id_preparat) REFERENCES Preparate(id_preparat)

}

Crearea paginilor web

Acest site constă în total din 28 de fișiere PHP. Înainte de toate primul fișier PHP care trebuie creat este conexiunea la baza de date care a fost realizat în phpMyAdmin și cu care toate paginile web vor comunica.Am numit acest fișier connect.php care conține niște variabile : $host are valoarea de localhost daca folosim propiul calculator , $username unde punem root daca folosim localhost ,în altă situație punem numele de utilizator care este folosit pentru conectarea la baza de date și la $password nimic daca nu am pus parola la localhost și în alte situați parola care este pus la baza de date, iar nu în ultimul rând trebuie să selectăm baza de date la care vrem să ne conectăm în variabila $database.

<?php

$host='localhost';

$username='root';

$password='';

$database='catering';

$connection = mysql_connect($host, $username, $password);

if (!$connection){

die("Database Connection Failed" . mysql_error());

}

$select_db = mysql_select_db($database);

if (!$select_db){

die("Database Selection Failed" . mysql_error());

}

?>

În urma realizări site-ului fiecare pagină php încearcă să se conecteze la baza de date prin fișierul connect.php . Avantajul acestei metode este că ,dacă intervine orice problema, orice schimbare în baza de date , atunci nu trebuie sa modificăm în toate fișierele ci doar într-un fișier, reducând timpul de întreținere și putem preveni mai multe erori.

Pagina principală

Daca scriem în url browser-ului http://localhost/index.php putem accesa această pagină.

Este înpărțit în trei fișiere pe care le includem în index.php: header.php ,meniu_content.php și footer.php .

Fiecare pagină are (conține,include) același header și footer, de accea le creăm odată și le includem în fiecare pagină.

Pagina principala conține și o galerie foto , un slide show realizat cu ajutorul unui plugin jQuery care rulează trei poze una după alta.

Figure 40: photo gallery

Header-ul conține titlul,meniul și două butoan, codul este scris în fișierul header.php. Acest fișier începe cu session_start() adică începerea unei sessiuni la accesarea indexului.

Figure 21: Meniubar comentat

Toate elementele html sunt realizate în cod php.De exemplu titlul arată astfel:

<div class="menu-wrapper">

<h1><a href="index.php"><span>PHP</span> Catering</a></h1>

</div>

Dacă este logat un utilizator se v-a schimba butonul de Log In în Log Out , iar dacă este logat administratorul meniul diferă de meniul utilizatorului, cum arată acesta în cod :

if(!empty($_SESSION)){

if(isset($_SESSION['username'])){

$label1 = 'Comenzi';

$label2 = 'Administrare site';

$link = 'administrare.php';

$user = 'admin.php';

}

else {

$label1 = 'Comanda';

$label2 = 'Contul meu';

$link = 'contul-meu.php';

$user = 'cont.php';

}

$log = 'Log Out';

$log_href = "logout-";

}

else {

$log = 'Log In';

$log_href = 'cont.php';

$user = '';

$label1 = 'Comenzi';

$label2 = 'Contul meu';

$link = 'contul-meu.php'; }

În primul rând $_SESSION este o variabilă globală care este creat la startarea sesiuni și stochează datele unui utilizator dacă este logat, dacă nu este logat niciun client nici administratorul atunci este gol. Deci verificăm dacă această variabilă este NULL sau are date în el. Dacă este gol atunci vedem că valoarea butonului care este în variabila $log are valoare ”Log In ” adică nimeni nu este logat.Atunci meniul rămâne neschimbat $label1 și $label doi la fel.Variabila $log_href este linkul butonului Log In către pagina cont.php pentru ca un client să se logeze, iar $link este destinația butonului Contul meu din meniu.

Un lucru foarte importan de menționat este că administratorul se logează prin username iar clienții prin adresa de e-mail. Al doilea rând verifică dacă este logat administratorul și dacă este logat atunci $lable1 și $lable2 din meniu își schimbă conținutul și linkurile se schimbă. În cazul în care nu este logat administratorul înseamnă că este logat un client iară se schimbă conținutul variabelelor.În cazul în care sesiunea nu este goală înseamnă că cineva este logat și atunci variabila $log are valoare ”Log Out” , iar $log_href =”logout-”+$user înseamna că este accesat ori pagina de logout-admin.php ori logout-cont.php. Vom povesti mai pe larg și despre cele două fișiere dar un pic mai târziu.

Content-ul este înpărțit în trei colane:

Figure 22: structura content

Coloana 1 – Este construit un meniu vertical cu categoria mâncării: Mic dejun , Salată , Supă , Fel principal și Desert.Fiecare este scris în interiorul unui formular care acțiune pe propia pagină, pe lângă am creat și două inputuri de tip hidden în care am setat id_categorie și categoria de care o să am nevoie la coloana 2 pentru.Cum arată scriptul :

<form method = "POST" action = "<?php echo $_SERVER['PHP_SELF'];?>">

<input type = "hidden" name = "id_categorie" value = "1" />

<input type = "hidden" name = "categori" value = "mic-dejun" />

<input type = "submit" name = "mic-dejun" value = "Mic dejun" />

</form>

$_SERVER[‚PHP_SELF’] – face referire la pagina curentă,în care este scris.

<input type = "hidden" > – este un câmp text invizibil

<input type = "hidden" > – este un buton la apăsarea lui se întâmplă modificările

Coloana 2 – Cu ajutorul unei funcți sunt citite ultimele 4 poze din baza de date după categorie, cu ajutorul câmpurilor ascunse preiau id_categorie și categorie atunci când careva este selectat și afișez pozele.La inițializarea pagini sunt afișate pozele din categoria mic-dejun. Codul funcției arată astfel:

<?php

include('connect.php');

function display_picture($id_categorie, $categorii) {

$query = mysql_query("SELECT foto_thumb FROM preparate WHERE id_categorie = '$id_categorie' LIMIT 4");

$i = 0;

if(mysql_num_rows($query) != 0){

$content = '';

while($row = mysql_fetch_array($query)){

$content .= "<a href = '$categorii.php' target = '_parent'><img src = 'upload_thumb/{$row['foto_thumb']}'></a>";

if($i == 1){$content .= "<p>";}

$i++;}

}else {$content = '';}

return $content;}?>

Iar codul php din tagul html unde se apelează funția display_picture:

<?php

if(isset($_POST) && empty($_POST)){

echo display_picture('1', 'mic-dejun');

}

if(isset($_POST) && !empty($_POST)){

echo display_picture($_POST['id_categorie'], $_POST['categori']);

}

?>

Coloana 3 – conține câteva taguri html și un button Sign Up cu linkul spre inregistrare.php unde un client se poate înregistra pe site pentru a putea comanda preparatul dorit.

<a href = "inregistrare.php" target = "_parent">

<button type = "button">Sign up</button>

</a>

Footer-ul are doar câteva rânduri de cod :

<?php

echo '

<footer>

<div class="main">

<div class="aligncenter">

<span>PHP Catering &copy; 2014 – Hegedus Norbert</span>

<a rel="nofollow">Lucrare Licenta – Realizarea unui site catering in PHP</a>

</div></div>

</footer>';

În continuare vă voi prezenta cele două pagini : Înregisrare Utilizator(Client) și Logare Utilizator.

Înregistrare Utilizator

La pagina de înregistrare putem ajunge prin butonul Sign Up care se afla în conținutul pagini principale sau din pagina de log in.

Figure 24: inregistrare.php

Cum se vede și în poza de mai sus pagina de înregistrare conține 6 câmpuri pe care utilizatorul trebuie neapărat să le completeze daca dorește să se înregistreze pe site, daca vreun câmp este lăsat liber sau nu este completat corect utilizatorului vor apărea niște erori fiindcă câmpurile sunt validate în javascript și daca se întâlnește vreo eroare apare un mesaj în ajutorul clientului care va putea identifica ușor greșeala și o poate remedia fără vreo problemă.O parte din validarea JavaScript :

function validateForm(){

var a=document.forms["reg"]["nume"].value;

var b=document.forms["reg"]["prenume"].value;

var c=document.forms["reg"]["adresa"].value;

var d=document.forms["reg"]["telefon"].value;

var e=document.forms["reg"]["email"].value;

var f=document.forms["reg"]["parola"].value;

if ((a==null || a=="") && (b==null || b=="") && (c==null || c=="") && (d==null || d=="") && (e==null || e=="") && (f==null || f==""))

{alert("Completati toate campurile");

return false; }

Toate valorile sunt luate din formularul cu numele ”reg”,iar dupa reg este numele câmpului.

Acțiunea formularului este realizat în pagina inregistrare_exec.php . În acest fișier este pornit o sesiune nouă și conținutul fiecărui câmp este adăugat în variabila globală $_POST cu cheia specificată de noi.Dacă vrem să afișăm conținutul lui $_POST ni se va returna un array cu cheile lui și valorile.De exemplu $nume=$_POST ['nume']; – valoare variabilei $nume se va atribuii valorii variabilei globale $_POST cu cheia nume.Tot în acest fișier se face și inserarea în baza de date cu funcția mysql_query().Mai avem o funcție header care ne indică redirectarea pe pagina inregistrare.php și se trimite prin url variabila remarks care are valoare success. Scriptul arată astfel:

<?php

session_start();include('connect.php');

$nume=$_POST['nume'];$prenume=$_POST['prenume'];

$adresa=$_POST['adresa'];$telefon=$_POST['telefon'];

$email=$_POST['email'];$parola=$_POST['parola'];

$parola=md5($parola);

mysql_query("INSERT INTO clienti(nume, prenume, adresa, telefon, email, parola) VALUES('$nume', '$prenume', '$adresa', '$telefon', '$email', '$parola')");

header("location: inregistrare.php?remarks=success");?>

MD5 este folosit pentru criptarea parolei pentru ca să fie securizat,fiindcă dacă cineva are acces la baza de dată poate vedea fiecare parolă dar daca folosim md5 se crează automat un șir format din 30+ de caractere și vine de la message-digest algorithm.

Ex. Parola 123 se va vedea în baza de date asa: 202cb962ac59075b964b07152d234b70;

<?php

$remarks = isset($_GET['remarks']) ? $_GET['remarks'] : '';

if ($remarks == 'success') {

sleep(2);

echo "<script>window.location = 'cont.php'</script>";}?>

Mai avem acest script în pagina inregistrare.php care are rolul de a redirectiona pe pagina de cont.php unde se face logarea daca un utilizator s-a înregistrat cu succes fiindcă atunci $remarks primește valoarea prin url de success.

Logare Utilizator

Logarea unui utilizator se face prin e-mail și parola setat la înregistrare , iar după completarea celor două câmpuri prin apăsarea butonului Autentificare se verifică dacă datele întroduse corespun cu datele din baza de date , dacă nu corespund apare un mesaj de eroare ”Date autentificare incorecte!”.Mai avem un buton de Inregistrare despre care v-am povestit mai sus.

Figure 25:Pagina de login utilizator(cont.php)

Datele sunt luate prin POST din formular și sunt verificate cu ajutorul unui query care face select în baza de date, dacă este găsit un rând cu aceste date prin header vom ajunge pe pagina contul-meu.php unde sunt afișate datele utilizatorului.

if (isset($_POST['email']) and isset($_POST['password'])){

$email = $_POST['email'];

$password = $_POST['password']; $password=md5($password);

$query = "SELECT * FROM `clienti` WHERE email='$email' and parola='$password'";

$result = mysql_query($query) or die(mysql_error());

$count = mysql_num_rows($result);

if ($count == 1){

$_SESSION['email'] = $email;

header("Location: contul-meu.php");

exit;

}else{ echo "Date autentificare incorecte !";}

Un lucru trebuie menționat în legătură cu acest script și acela este că parola întrodusă de la tastatură este convertit în md5 ca să se poate face compararea cu parola din baza de date fiindcă acolo noi avem parola în md5.

În continuare vă voi prezenta funcționalitățile unui client și vă voi prezenta pagina Contul meu ,cum se face o comandă și cum confirmăm comanda în pagina Comenzi.

Contul unui utilizator

Figure 26: contul unui utilizator

La începutul scriptului din pagina contul-meu.php am inclus o altă pagină în care am făcut securitatea pentru această pagină.Această pagină doar atunci poate fii accesată doar când un utilizator este logat prin e-mail, în orice altă situație utilizatorul v-a fi redirecționat către pagina de login.

<?php

if (!isset($_SESSION['email'])) {

header('Location: cont.php');

exit;

}

Cum se vede și în poză sunt afișate datele utilizatorului citite din baza de date dupa logare cu acest script:

$query = mysql_query("SELECT * FROM clienti WHERE email = '{$_SESSION['email']}'");

În $_SESSION['email'] este stocat e-mail-ul utilizatorului după care se face și căutarea în baza de date.

Într-un tabel am afișat comenzile perfecționate de către client, aceste sunt acele comenzi care au stare livrat sau 2.Toate datele sunt luate din tabelul comenzi și preparate din baza de date. Pentru acest lucru am facut un INNER JOIN și le-am afișat în ordine descrescătoare dupa data livrării.

$result = mysql_query("SELECT c.id_comanda, p.nume, p.ingrediente, p.pret, c.bucati, c.bucati * p.pret AS total, c.stare, c.data_livrare, c.ora_livrare "

. "FROM comenzi AS c INNER JOIN preparate AS p "

. "ON c.id_preparat = p.id_preparat "

. "WHERE c.id_client = '{$user['id_client']}' "

. "AND c.stare = '2' ORDER BY c.data_livrare DESC");

După ce am preluat datele din baza de date le-am afișat într-o formă tabelară cu ajutorul tagurilor <table>,<th>,<tr> si <td> .

Selectarea unui meniu și comandare

Fiecare categorie are pagina lui separat, deci am 5 pagini (mic-dejun.php, salate.php, supe.php, desert.php, fel-principal.php ) , structura este la fel doar pozele, numele, detaliile și prețul diferă la fiecare categorie.Eu o să vă prezint pagina mic-dejun.php ca să vedeți cum funcționează comandarea.

Figure 27:comandarea pe pagina mic-dejun.php

Fiecare sortiment are poză , nume , ingrediente și prețul propriu care sunt luate din baza de date și afișate în taguri HTML.Am un formular care are acțunea pe pagina comanda-sortiment.php.În acest formular mai sunt două câmpuri ascunse în care stochez id_preparat și în celălalt numele pagini pe care sunt ,de ultimul am nevoi fiindcă după inserare utilizatorul să rămână tot pe această pagină.Mai trimit prin POST și câte bucăți dorește să comande dintr-un sortiment.Codul php este următorul :

<form action = "comanda-sortiment.php" method = "POST" name = "add_to_cart">

<input type = "hidden" name = "id_preparat" value = "'.$row['id_preparat'].'" />

<input type = "hidden" name = "meniu_type" value = "'.$meniu[4].'" />

<button type = "submit" class="button-1" href="#" name = "add_to_cart_button">Comanda</button>

<input type = "text" size = "5" height="48" name = "bucati" placeholder = "bucati" />

</form>

Iar în comanda-sortiment.php se fac inserarea în baza de date în tabelul comenzi, unde adaug id_client, id_preparat și bucati . Cum vedeți id_client nu am trimis prin formular dar îl obțin cu ajutorul variabilei globale $_SESSION în care am stocat ['email'] clientului, cu acesta pot face o selecție în baza de date și voi obține id_client dorit.Daca inserarea a fost făcută cu succes utilizatorul v-a fi redirecționat pe pagina pe care era.

$query = mysql_query("SELECT id_client FROM clienti WHERE email = '{$_SESSION['email']}'");

$row = mysql_fetch_array($query);

$insert = mysql_query("INSERT INTO comenzi"

. "(`id_client`, `id_preparat`, `bucati`)"

." VALUES('{$row['id_client']}', '{$_POST['id_preparat']}', '{$_POST['bucati']}')");

if($insert){

header('Location: '.$_POST['meniu_type']);

}

Confirmarea comenzi

În continuarea o să vă explic cum funcționează confirmarea unei comenzi sau cum poate un utilizator șterge comanda dacă s-a răzgândit să mai comande ceva.

Figure 28: confirmarea unei comenzi

În primul rând sunt afișate acele comenzi făcute de către client care nu au fost încă livrate. Pentru acest lucru am un câmp stare în baza de date , despre care v-am povestit mai sus. Deci acele rânduri sunt citite din baza de date care au starea 0 sau 1 adică 0 – nepreluat și 1-În derulare.Cum se vede și în imaginea de mai sus ,sunt afișate câmpurile : preparat, ingredient, prêt, bucati, total, stare. Total înseamnă că prêt înmulțit cu bucați.

La începutul fiecărui rând am pus un pătrat în care am pus un checkbox dacă comanda înca na fost confirmată și o iconiță la rândul unde comanda este în derulare.

Checkboxul este folositor de exemplu dacă avem mai multe comenzi nepreluate dar din acele în acel moment nu vrem să comandăm decât unul și atunci selectam doar linia corespunătoare.

După ce am selectat meniul dorit trebuie să întroducem adresa unde dorim să fie livrat comanda, după care trimitem comanda către administrator și așteptăm să fie livrat. În momentul în care am apăsat pe butonul Trimite starea comenzi v-a fi schimbat în baza de date cu 1- In derulare ,update-ul se face după id_comandă.

Formularul cu ajutorul căruia trimit adresa și starea către plasare_comanda.php ca să pot face update-ul:

<form action = "plasare_comanda.php" method = "post">'

. '<td class = "form">'

. '<textarea name = "adresa_livrare" placeholder = "Adresa livrare"></textarea>'

. '</td>''<td class = "form">'

. "<input type = 'submit' name = 'livreaza_comanda' value = 'Trimite' />". '</td>'

. "</form>";

Iar codul din codul din plasare.comanda.php este următorul:

if(!empty($_SESSION['checked'])){

foreach($_SESSION['checked'] AS $id_comanda => $val){

if($val == '1'){

$query = mysql_query("UPDATE comenzi SET adresa_livrare = '{$_POST['adresa_livrare']}', stare = '1' WHERE id_comanda = '$id_comanda'");

}}

unset($_SESSION['checked']);

header('Location: comanda.php');}

În $_ SESSION['checked'] am memorat într-un array id_comenzi care este cheia și i-am atribuit valoarea 1 dacă a fost bifat checkboxul, și atunci parcurg acest array și care are valoarea 1 fac un update în baza de date.După ce toate au fost updatate distrug $_SESSION['checked'] cu funcția unset și mă întorc la pagina de comenzi.

La sfârșitul fiecărui rând mai găsim și o iconiță care are funcționalitate de a șterge comanda după id_comanda pe care îl salvez întrun câmp ascuns în formularul respective și îl trimit prin POST la pagina delete_comanda.php unde fac ștergerea.

<form class = "inline_form" method = "post" action = "delete_comanda.php">'

. '<input type = "hidden" name = "id_comanda" value = "'.$array['id_comanda'].'" />'

. '<button type = "submit" name = "delete">'

. '<img src = "images/trash.png" /></button>'

. '</form>'

Aceste este scriptul cu ștergerea din baza de dată a comenzi după id_comandă preluat de la formularul de mai sus.

if(isset($_POST)){

$query = mysql_query("DELETE FROM comenzi WHERE id_comanda = '{$_POST['id_comanda']}'");

header('Location: comanda.php');}

Așa funcționează în mare plasarea și ștergerea unei comenzi de către utilizator.

În continuare o să vă prezint cum funcționeză pagina de Administrare site și cum se livrez o comandă , pentru asta trebuie să mă logez ca și admin, dar pentru acest lucru trebuie să scriu în url : http://localhost/catering/admin.php fiindcă adminul are interfața diferită de cel al clientului.Meniu diferit , funcționalități diferite.

Figure 29: admin login

După ce m-am logat ca și admin voi fi redirecționat spre pagina de Administrare site. Logare se face tot comparând câmpurile cu cele din baza de date ca și la utilizator numai că acuma lucrez cu tabela admin.

Figure 30:administrare site

Cea ce poate face administratorul este adăugarea unui sortiment nou sau căutarea și ștergerea unui sortiment. Prima dată să ne ocupăm de adăugare.

În dreptul Alege categorie am un dropbox în php se definește cu <select> iar ca și <option> am adăgat fiecare rând din câmpul categoria din baza de date din tabela categorii. Imagine mică îi pentru imaginea care apare în pagină iar imagine mare este echivalentul celui mic dar cu rezoluție mai mare și se poate vedea când se mărește poza mică. Când aleg pozele din computer vor fi copiate în directorul unde se află proiectul în fișierele upload (pentru pozele mari) , iar upload_thumb (pentru pozele mici).Acest lucru se face cu ajutorul variabilei globale $_FILE .

$uploadpath = "upload/" . $_FILES[$image_type]['name'];

move_uploaded_file($_FILES[$image_type]['tmp_name'], $uploadpath);

În $uploadpath păstrez numele directorului unde v-a fii copiat imaginea, iar funcția move_uploaded_file este o metodă predefinita pentru $_FILES care va muta fișierul din unde există în directorul a cărui cale este în $uploadpath.

În partea inferioară am facut o căutare dupa id_categorii la fel ca și la adăugare , iar dupa id_categorie fac un select în baza de date și afișez toate sortimentele din tabelul care are numele categoriei selectat din dropbox.

Figure 31:stergere dupa categorie

Administratorul mai are o funcționalitate importantă cea de livrarea a comenzi făcut de client. Acesta este realizat în pagina comanda.php folosit și la client.Diferența este că în pagina asta sunt afișate doar acele comenzi care au starea 1 adică sunt în derulare.Dacă o comandă este preparată și se poate livra administratorul bifează acea comandă și apasă buttonul de Livrare. După ce este livrat, utilizatorului îi apare că comanda a fost livrată și se poate pregăti pentru a prelua comanda.Pagina aceasta arată astfel:

Figure 32livrare comandă

După ce acțiunea de livrare a fost făcută în tabelul comenzi se face un update pentru a întroduce câteva date despre livrare, câmpul de stare se v-a modifica cu 2 adică livrat, în câmpurile data_livrare și ora_livrare vor fii întroduse cu data curentă respectiv ora curentă. Iar clientul v-a vedea și data și ora livrării ca să știe c-am în cât timp ar putea sosi comanda.

În mare acesta este proiectul realizat de mine.

CONCLUZII

Concluzii

Importanța Internetului în zilele noastre este deja cunoscută iar exploatareaoportunitaților oferite de acesta trebuie sa fie o prioritate pentru o firmă modernă mai alesdacă concurența are deja prezență online. Un web site costă o singură dată și rămâne permanent, 24 de ore din 24 în atenția publicului din orice zonă a lumii. Oricând, conținutulunui web site poate fi actualizat sau modificat după bunul Dumneavoastră pe plac. La baza aplicației de catering stă limbajul de programare PHP, care este un limbaj foarte puternic, și foarte des folosit. Din aceste motiveam ales acest limbaj pentru implementarea aplicației. În zilele noastre cele mai multe aplicații distribuite sunt scrise în PHP, care este o soluție convenabilă pentru proiectare a unei aplicațiide comerț electronic pentru clienții care dispun de un buget redus.Lumea se schimbă de la o zi la zi, tehnologiile avansează, apar noi și noi aplicații,software care ne vor conduce într-o lume computerizată. Eu cred că PHP ocupă un loc foarte important în această lume și are un rol deosebit în dezvoltarea noilor tehnologii.Situl de catering este doar o mică parte din această lume imensă a limbajului PHP, dar o parte semnificativă, deoarece folosirea lui ușurează munca multor oameni cu vârste diferite.

Posibilități de dezvoltare

Versiunea respectivă a sitului de catering nu este o versiune finală, ci dimpotrivă prima versiune. Site-ul poate fi îmbunatățiă, adăugând noi facilități. Iată câteva lucruri noi care ar putea fi incluse în dezvoltarea acestui site :

Cea mai importantă dezvoltare ar fii crearea unei funcți cu care clientul poate face plată online , cu cardul sau prin paypal sau cu telefonul mobil. Această facilitate este de ajutor ambelor părți, atât clientului cât și administratorului(vânzătorului).

O altă dezvoltare ar fii adăugare unei inconițe cu coș și lângă un text în care scrie câte comenzi are ne confirmate și poate și prețul total al comenzilor ,fiindcă sunt persoane care vor să facă cumpărături de o sumă fixă de bani și cu ajutorul acestui câmp pot ține cont dacă mai pot cumpăra sau nu.

Se mai poate adăuga suport client dacă au ceva întrebari în legătură cu meniu

O dezvoltare majoră ar fii calcularea duratei unei comenzi până la livrare. Adică în cât timp clientul poate mânca. Acest lucru se poate realiza cu o line orizontala care arată în ce stadiu este comanda lui.Cu ajutorul google maps putem calcula ruta în cât timp se parcurge, iar pentru fiecare sortiment precizat în cât timp este pregătit.Pe lângă aceste lucruri trebuie să luăm în considerare și câte comenzi sunt fiindcă dacă sunt mai multe comenzi nu iese timpul.

O altă dezvoltare se poate face la pagina de comenzi clienți unde se poate creea un câmp unde clientul poate specifica ce îngrediente să nu conțină meniul dorit, fiindcă sunt persoane care sunt alergici la unele îngrediente.

Acestea sunt doar niște idei de dezvoltare a site-ului de Catering, dar având în vedere progresul tehnologiei, mai pot apărea și altele.

Bibliografie

1. Laura Thomson;Dezvoltarea aplicatiilor WEB cu PHP și MySQ , Editiaa II-a; EdituraTeora2005.

2. Dezvoltarea aplicatiilor WEB cu PHP și MySQL; EdituraTeora2004.

3.Dezvoltarea aplicatiilor WEB folosind XHTML, PHP și MySQL; EdituraPolirom2005.

4. INVATA SINGUR PHP, MYSQL ȘI APACHE; EdituraCorint2005.

5. Aplicatii Web la cheie. Studii de caz implementate in PHP; EdituraPolirom2003.

6.Adrian Munteanu, Valerică Greavu Serban, Rețele locale de calculatoare Proiectare și administrare

7. HTML , XHTML , CSS și XML prin exemple – ghid practic; Editura Teora 2005.

8. http://www.phpromania.ro

9. http://www.marplo.net/php-mysql/

10. http://www.marplo.net/html/

11. http://www.marplo.net/css/

10. http://php.net/manual/ro/index.php

11 .http://www.w3schools.com/asp/default.asp

12. Programarea aplicațiilor web cu PHP și MySQL, Ed. Risoprint 2006

Bibliografie

1. Laura Thomson;Dezvoltarea aplicatiilor WEB cu PHP și MySQ , Editiaa II-a; EdituraTeora2005.

2. Dezvoltarea aplicatiilor WEB cu PHP și MySQL; EdituraTeora2004.

3.Dezvoltarea aplicatiilor WEB folosind XHTML, PHP și MySQL; EdituraPolirom2005.

4. INVATA SINGUR PHP, MYSQL ȘI APACHE; EdituraCorint2005.

5. Aplicatii Web la cheie. Studii de caz implementate in PHP; EdituraPolirom2003.

6.Adrian Munteanu, Valerică Greavu Serban, Rețele locale de calculatoare Proiectare și administrare

7. HTML , XHTML , CSS și XML prin exemple – ghid practic; Editura Teora 2005.

8. http://www.phpromania.ro

9. http://www.marplo.net/php-mysql/

10. http://www.marplo.net/html/

11. http://www.marplo.net/css/

10. http://php.net/manual/ro/index.php

11 .http://www.w3schools.com/asp/default.asp

12. Programarea aplicațiilor web cu PHP și MySQL, Ed. Risoprint 2006

Similar Posts

  • Securitatea Retelelor de Calculator

    Securitatea Retelelor de calculator Cuprins Cap.1 Notiuni introductive Cap.2 Tipuri de atacuri in retea 2 Clasificare 2.1 Virusi 2.2 Furt de informatii Cap.3Metode de securitate 3.1 Pasword 3.2 Utilizarea de algoritmi 3.3 Antivirusi 3.4 Firewall 3.5 Metode Biometrice Cap.1 Notiuni introductive Securitatea rețelelor de calculatoare este în acest moment parte integrantă a domeniului rețelelor de…

  • Ce Este World Wide Web

    World Wide Web este definit ca un spațiu informațional în care elementele de interes, numite resurse, sunt identificate prin identificatori de resurse globali numiți URI (conform W3C's Architecture of the World Wide Web, Volume I). Apariția Web-ului se datorează lui Tim Berners-Lee. În martie 1989, la Centrul European de Cercetări Nucleare, Geneva, acesta face propunerea de…

  • Terorismul Cibernetic la Nivel Global

    TERORISMUL CIBERNETIC LA NIVEL GLOBAL PLANUL LUCRĂRII Argument Introducere CAPITOLUL I. Cyberterorismul-terorismul cibernetic I.1.Starea de pericol cauzată de cyberterorism I.2.Potența actelor teroriste “convenționale” I.3.INTERNET-ul, mijloc de propulsare a islamismului I.3.1. Al Qaida si Statul Islamic – „Baza” virtuală I.3.2. Recrutarile și radicalizarea in spatiul virtual I.3.3.Tabere de antrenament virtuale ale gruparilor teroriste CAPITOLUL II. Utilizarea…

  • Sistem Inteligent de Administrare a Traficului

    Cuprins Capitolul 1 Introducere…………………………………………………………………….4 Capitolul 2 Obiective și specificația proiectului………………………………….6 2.1. Obiectivul principal…………………………………………………….6 2.2. Obiective specifice……………………………………………………..6 Capitolul 3 Studiu Bibliografic……………………………………………………..7 3.1. Microcontrollerul…………………………………………………………7 3.1.1. Introducere………………………………………………………….7 3.1.2. Caracteristici……………………………………………………….8 3.1.3. Descriere………………………………………………………….8 3.1.4. Descrierea pin-ului……………………………………………10 3.1.5 Caracteristicile Oscilatorului………………………………..13 3.2. Alimentarea Electrică………………………………………………. …13 3.2.1. Transformatorul……………………………………………………14 3.2.2. Redresorul……………………………………………………………15 3.2.2.1. Tipuri de redresoare……………………………………………15 3.2.2.2. Compararea circuitelor redresoare……………………….15 3.2.3. Filtrul……………………………………………………………………16 3.2.3.1. Filtrul condensator………………………………………………16…

  • Arhitectura Software

    Cuprins Introducere ei ăș internetului se impune acordarea unei atenții ridicate compatibiltății i soluiei se dorete utlizarea de tehnologii care Obiectivele și Specificațiile proiectului Obiective Principalul obiectiv al acestei lucrări este de a realiza unei platforme online care să faciliteze studiul la distanță prin intermediul internetului. Se dorește accesul cursanților la materialele de curs/laborator cu…