Estimarea Timpilor de Realizare a Documentatiilor Pentru Activitatea de Proiectare In Arhitectura

Cuprins

Anexe …………………………………………………………………………………………… 51

Capitolul 1

INTRODUCERE

1.1 De ce aplicații web?

Aplicațiile web-based sunt soluțiile de gestionare a informațiilor din spatele oricărui tip de afacere, ajutând la o mai bună organizare a fluxurilor în companie. Ele au rolul de a gestiona orice tip de informație de la comenzi, clienți, utilizatori, produse până la bugete, cheltuieli și informații statistice despre aceste date.

Fie că discutăm de o companie care își desfășoară activitatea online sau offline, necesitatea acestor aplicații este foarte mare pentru a avea o imagine cât mai clară despre situația companiei dumneavostră. În orice moment există posibilitatea de a vizualiza o imagine de ansamblu asupra a tot ce se întâmplă în cadrul companiei (stocuri, vânzări, clienți, cheltuieli, profit, etc).

Având în vedere că aceste aplicații sunt construite în mare parte după cerințele clientului, în funcție de tipul de afacere pe care acesta doreste să îl dezvolte, prețul unei astfel de aplicații este direct proporțional cu complexitatea aplicației ce urmează a fi dezvoltată.

Datorită exploziei Web 2.0, tendința generală în dezvoltarea de software de afaceri este de a trece de la aplicații desktop la aplicații web. Astfel, angajații care folosesc acele softuri comunică mai ușor, au acces mereu la cele mai noi variante ale aplicației și costurile de intreținere sunt mult mai scazute.

Dezvoltarea unei aplicații web este un proces complex deoarece, în general, cuprinde facilitați pentru mai multe departamente ale unei firme. Caștigurile provin tocmai din transferul mult mai rapid al informației intre utilizatori, independența de platforma, sistem de operare sau localizare geografica iar timpul destinat instalarii de programe se apropie de zero.

Aplicațiile web sunt soluții specializate, cu funcționalități ridicate și atractive pentru site-ul tău. Ele asigură o mai buna relație și interactivitate cu clienții.

Aplicațiile web se pretează in special acolo unde mai muțti operatori trebuie sa introducă date intr-un mediu de stocare central. Firme de logistica, vanzări, curierat, bănci și asigurari, publicații, toate au de beneficiat de pe urma acestui mod de dezvoltare a programelor de afaceri.

Practic au nevoie doar de un calculator conectat la Internet impreună cu datele de logare in aplicație. Un alt mare avantaj al aplicațiilor web de ultima generație este integrarea foarte buna cu dispozitive mobile. Folosind un telefon mobil sau un PDA cu acces la Web, utilizatorul poate trimite informații sau extrage date dintr-o baza de date centrala pe care apoi le poate utilize in cadrul unei intalniri de afaceri.

Marele avantaj al aplicațiilor online este integritatea și posibilitatea de a le ajusta în funcție de particularitațile și nevoile clientului. Totodată ele pot foarte ușor fi combinate, funcționând simultan, pentru a spori eficiența.

Publicitatea online

Publicitatea online, întâlnită și sub numele de publicitate interactivă, este o formă de publicitate în internet care folosește media online (pagini web, newsletter, e-mail) pentru a transmite un mesaj către audiența dorită. Există mai multe forme de promovare online, printre care bannerele publicitare, publicitatea contextuală și reclama în motoare de căutare.

Printre avantajele publicității online se numără targetarea (țintirea) mai bună (ore, zone geografice, număr de afișări pe uitilizator), posibilitatea de a oferi informații mai multe (prin bannere expandabile sau prin atragerea vizitatorului interesat către o pagină web cu mai multe informații) și posibilitatea de a interacționa dinamic cu potențialul client.

Există o diferență esențială între conceptele de marketing și cel de publicitate. Mai întâi de toate, pentru că nu există publicitate gratuită pe Internet. Este adevărat, multe situri (în special motoarele de căutare mai populare) vând spații din paginile lor unor firme care își afișează mici reclame. Dar acestea nu se pot compara cu spoturile publicitare de la TV sau radio. În fapt, etica inițială a Internetului exclude și chiar condamnă utilizarea mesajelor comerciale. Scopul primordial al Internetului este schimbul de informații. Acesta este principalul obiectiv al utilizatorilor Internetului…și aceasta este și modalitatea prin care se „găsesc” și se atrag viitorii clienți. Acest schimb de informații presupune următorul mecanism:

necesitățile utilizatorului, care va căuta să se informeze pe Internet la fel cum, căutând un program TV adecvat necesităților sale de moment, caută din canal în canal până găsește o anumită emisiune care îi reține atenția;

dorința „comunicatorului” de a fi găsit, presupunând o strategie specifică;

oferta de produse, servicii și informații, care trebuie să corespundă cu necesitățile utilizatorului pentru ca acesta să se transforme în client.

O constatare generalã se desprinde din experiența companiilor ce au început deja sã se aventureze pe Internet: pentru a avea succes în publicitatea electronicã, această publicitate trebuie sã fie luatã în seamã, dacã nu chiar apreciatã. Populația „WWW” crește din ce în ce mai rapid în fiecare lunã, iar rata de creștere a numãrului documentelor accesibile este și mai ridicatã, fãcând imposibilã „descoperirea” unei pagini izolate. Astfel că, un ajutor foarte mare este un link, o legătură virtuală, la așa-numitele „motoare de cãutare” – indexuri și baze de date uriașe, conținând milioane de adrese URL. Aceste indexuri, din ce în ce mai multe și mai cuprinzãtoare, sunt specializate pe categorii, existând astfel indexuri dedicate afacerilor sau diverselor domenii de interes.

Asemănător siturilor Web, și aceste indexuri se împart în douã mari categorii: cele gratuite și cele comerciale.

Una dintre cele mai eficiente metode de publicitate pe Internet este realizată prin motoarele de căutare. Un motor de căutare este un server care navighează singur pe Internet și capturează titlul, cuvinte cheie și conținutul paginilor ce compun siturile. Toate paginile găsite sunt înregistrate apoi într-o bază de date. În momentul în care un utilizator caută pe pagina unui motor de căutare după o anumită frază sau un cuvânt, motorul de căutare se va uita în această bază de date și în funcție de anumite criterii de prioritate va crea o listă de variante pe care o va afișa sub formă de rezultat.

În general, regula de bazã constã în faptul că paginile – și respectiv siturile – non-profit (pagini informaționale, liste de resurse, etc.) sunt legate gratuit în indexurile generale – ce utilizeazã „roboți de cãutare” pentru a indexa automat un numãr cât mai mare de situri.

Pe de altă parte, resursele comerciale – siturile întreprinderilor comerciale – sunt în general listate în indexuri comerciale ce-și oferã serviciile contra unor sume ce de multe ori nu sunt neglijabile.

O altã metodã constã în închirierea de spațiu publicitar pe un site popular – cu un trafic ridicat. Așa cum canalele de televiziune taxeazã direct proporțional cu numãrul de spectatori ai unui program, tot așa tarifele unui „banner” publicitar – ce indică situl companiei ce a închiriat spațiul publicitar – depind de traficul de pe sit.

A fi legat la un astfel de serviciu oferã o vizibilitate importantã companiilor comerciale, vizibilitate fãrã de care prezența lor pe Internet ar rãmâne ineficientã. Din pãcate, una sau mai multe legãturi nu sunt, în nici un caz, suficiente. Un accent extrem de important trebuie pus pe construcția și designul paginilor de publicitate, fiind nevoie de multã atenție, bun gust și stil.

Un design grafic „ultimul rãcnet” nu poate prin el însusi sã garanteze succesul unui sit Web. Un bun conținut asociat unui bun design grafic se complementeazã împreunã, asigurând succesul unei pagini de Internet.

În partea opusã, semnele unui sit lipsit de succes sunt usor de identificat.

Pe scurt, iatã câteva caracteristici ale unei pagini sortite eșecului: o paginã cu un design rezonabil (undeva în jurul mediei), dar la care administratorii nu s-au obosit sã-și întregistreze situl la nici un index major de informații sau la nici o paginã popularã cu un trafic ridicat; deci nimeni nu-i poate vizita, fiind necunoscuți, ascunși. Ei reprezintã așa-numitul „sit invizibil”.

O altã categorie este „situl mort”. Este vorba de un sit rãmas nevizitat de o bunã bucatã de vreme, care nu a mai fost adus la curent în mod regulat. Pe un astfel de sit nu se întâmplã niciodatã nimic, nici schimbãri, nici modificãri, nici adãugiri. Nu departe de un astfel de sit este pagina la care vizitatorul trimite un mesaj e-mail, în speranta unui contact, a unei informații, a unui ajutor, însã nu primește nici un rãspuns – „situl fără stăpân”. Este evident cã un asemenea gest va determina vizitatorul sã nu mai revinã curând.

Un alt pericol este utilizarea graficelor enorme (pagini complete ale cãror conținut textual este expus grafic, de exemplu), care iau mult prea mult timp pentru a se încãrca („siturile – brad”).

De asemenea, „siturile ad-hoc”, utilizând echipament inadecvat, cu o legãturã prea lentã, ce va fi ignoratã rapid de vizitatorii tot mai avizi de informație transportatã rapid și comod.

De asemenea, este deosebit de importantă micșorarea (pe cât posibil) a dimensiunii imaginilor. Aceasta presupune o modificare a raportului între dimensiunea textului imaginii (în cazul în care imaginea are și un continut textual) și dimensiunea fizicã a imaginii, pentru a impiedica pierderea lizibilitãții.

În sfârsit, un alt tip de pagini ce nu funcționeazã la vânzare sunt cele care sunt menținute de o echipã micã, cu insuficiente resurse materiale, grup ce nu este integrat în mediul și cultura companiei și, deci, nu reușește sã transmitã o aceeasi percepție, imagine sau mesaj.

Aceastã mini-echipã nu reuseste sã lucreze în cooperare cu celelalte servicii de marketing ale companiei, nu urmeazã aceleași direcții, iar mesajul publicitar are de suferit.

Așadar, designul și administrarea unui sit de succes nu este o activitate trivialã. Este mai degrabã o activitate ce trebuie bine coordonatã, ce poate deveni costisitoare atât în timp, cât si în bani. Rezultatele însã pot depãși cu mult investițiile fãcute. O atentie particularã trebuie datã modului de îmbinare a conținutului informațional cu cel grafic, fãrã a lãsa de o parte, în mãsura posibilitãților, conținutul tehnic.

Un mare numãr de situri, ce au înregistrat un puternic succes, au însã un design grafic și tehnic destul de modest și neelaborat, însã debordeazã de conținut informativ, nou, proaspãt și interesant. Deoarece cheia Internetului este „conținut, conținut, conținut”.

Există și metode offline de publicitate: email-urile cu mesaje publicitare și cu link-uri. Trebuie să clickați pe link-uri și să vizitați paginile respective și primiți o sumă de bani pentru fiecare adresă vizitată. Uneori nici nu este nevoie să vizitati adresele respective. În mail-ul primit vi se spune dacă trebuie să vizitați pagina respectivă și suma pe care o primiți pentru fiecare sponsor vizitat.

Descrierea temei

Titlul temei este “Estimarea timpilor de realizare a documentațiilor pentru activitatea de proiectare în arhictectură”. Aceasta presupune creearea pagini de internet folosind resursele și limbajele de programare disponibile care să permită coordonatorilor de proiecte să facă estimări corecte cu privire la timpul de execuției a proiectelor și documentațiilor de arhitectură și consutrucții.

Site-ul trebuie să fie simplu și ușor de utilizat, astfel:

prima parte trebuie să fie reprezentat de o interfață grafciă simplă ce poate să fie parcursă repede. Prin intermediul acestei prime pagini se vor introduce datele necesare estimării. Câmpurile folosite trebuie să fie validate cu ajutorul unui script.

a doua parte a aplicației o reprezintă estimarea efectivă și afișarea rezultatelor. Acestea trebuiesc afișate într-un format ușor de citit și de salvat pe disc. Tot aici se vor calcula totalul orelor necesare pentru a elabora un pachet întreg de documentații și totalul orelor pe categorii de documentații.

Principalele obiective:

creearea unei aplicații practice care să ajute activitatea de organizare a proiectelor;

reținerea tuturor estimărilor într-o bază de date;

asigurarea accesului la aplicația de estimare prin rețeaua locală de calculatoare sau online.

Capitolul 2

FUNDAMENTARE TEORETICĂ

2.1 Serverul de aplicații Apache

Apache este un server flexibil HTTP/1.1. Inițial conceput ca un inlocuitor pentru serverul NCSA HTTP, Apache a ajuns in scurt timp sa fie cel mai popular server web de pe Internet.

În continuare, în 2015, piața aplicațiilor este o zonă de nișă cu un potențial de dezvoltare uriaș, iar în urma clasificărilor realizate, cel mai popular limbaj de programare rămâne Java, un limbaj care este orientat pe obiect, puternic tipizat.

Se observă că piața serverelor destinate aplicațiilor Java este destul de matură, acesta fiind prezent în peste 200.000 de pagini web, iar 40% dintre aplicațiile existente sunt dedicate comerțului electronic. Java se poate rula pe aproape orice mașină și poate fi utilizat pentru a crea efectiv, orice tip de aplicație. Putem dezvolta, așadar, aplicații standalone, cele care rulează pe o mașină locală și nu necesită conexiune la Internet, dar putem crea, de asemenea, și aplicații web. Se pot crea cu ușurință și aplicații pentru dezvoltarea nativă a platformei Android, pentru telefoane și tablete.

Cel mai important server destinat acestor aplicații Java este Apache Tomcat, un server web open-source (întregul proiect Apache este open-source) de tip servlet container, și care este utilizat la scară largă pentru executarea servleturilor Java. Cu alte cuvinte, Tomcat este serverul utilizat pentru a crea și interpreta pagini web folosind tehnologia JSP (Java Servlet Pages), componentă a Java SE (Standard Edition). Acest tip de server Apache Tomcat se instalează simplu pe un calculator Windows, pentru a utiliza JSP.

Apache este un server web cu o contribuție notabilă la dezvoltatea Internetului (world wide web). Apache a reprezentat prima alternativă viabilă la Netscape Communications Corporation, și a evoluat rapid în funcționalitate și performanță ca un rival competitiv pentru alte servere web bazate pe Unix.

Apache este dezvoltat de o comunitate deschisă de programatori sub emblema Apache Software Foundation. Aplicația este disponibilă pentru o mare varietate de sisteme de operare incluzând Unix, FreeBSD, Linux, Solaris, Novell NetWare, Mac OS X, Microsoft Windows și OS/2.

Apache suportă o mare varietate de module care îi extind funcționalitatea, acestea variază de la server side programming și până la scheme de autentificare. Câteva limbaje suportate sunt: mod_perl, mod_python, Tcl și PHP. [***06.b]

Apache a fost creat de Rob McCool, ce a fost implicat în serverul web NCSA httpd (National Center for Supercomputing Applications). Cand Rob a plecat de la NCSA, dezvoltarea lui httpd a stagnat, lăsând o varietate de patches pentru îmbunătățire să circule liber. Un grup de developeri au adunat aceste patchuri și au scos "A patchy server", ce a devenit mai târziu serverul web Apache. Rob a fost ajutat de alți developeri în crearea "Apache Group": Rob McCool, Brian Behlendorf, Roy T. Fielding, Rob Hartill, David Robinson, Cliff Skolnick, Randy Terbush, Robert S. Thau, Andrew Wilson, Eric Hagberg, Frank Peters, and Nicolas Pioch.

Autorul pretinde ca a fost ales un astfel de nume pentru a fi original, dar de fapt cea mai răspândită informație este că serverul este constituit dintr-o serie de schimbări în cel mai popular server HTTP din acel timp, NCSA HTTPd 1.3 si este prin urmare "a patchy" server. Totuși, pe site-ul oficial al serverului se spune ca numele "Apache" a fost ales din respect pentru tribul American Indian al apache-ilor (Inde'), binecunoscut pentru strategiile superioare folosite în război.

În acel timp Apache era singura alternativă open source viabilă, la serverul web Netscape (cunoscut actual ca web serverul Sun Java System). De atunci a fost dezvoltat și concurează cu servere HTTP din Unix în ceea ce privește funcționalitatea și performanța.

2.1.1 Pachetul XAMPP

XAMPP este un pachet de software folosit pentru a putea crea în local pagini web dinamice.El este folosit în special de programatorii web pentru a lucra pe calculator proiectele web înainte să le urce pe server-ul de hosting.

XAMPP este un pachet ce include printre altele: server-ul Apache, bazele de date MySQL, limbajul de programare PHP, Perl, phpMyAdmin sau FileZilla FTP Server.

Acest program este lansat sub termenii licenței GNU și acționează ca un web server capabil de a servi pagini dinamice. XAMPP este disponibil pentru Microsoft Windows, Linux, Solaris, și Mac OS X, și este utilizat în principal pentru dezvoltarea proiectelor web. Acest software este util pentru crearea paginilor dinamice, utilizând limbaje de programare ca PHP, JSP, Servlets. XAMPP este un pachet stabil, sigur, rapid și eficent. Acesta are o interfață simplă și intuitivă de pe care orice persoană poate folosi programul fără nici un fel de problemă.

În mod oficial, designerii XAMPP au avut intenția de a îl utiliza numai ca utilitar de dezvoltare, pentru a permite designerilor și programatorilor web să își testeze munca pe calculatoarele proprii, fără a avea nevoie de acces la Internet. Pentru a face posibil acest lucru, multe caracteristici de securitate importante sunt dezactivate în mod implicit. In practică, totuși, XAMPP este uneori utilizat pentru a servi pagini web în World Wide Web. Un utilitar special este asigurat pentru a proteja prin parolă cele mai importante părți ale pachetului.

XAMPP deasemeni asigură suport pentru crearea și manipularea bazelor de date în MySQL și SQLite între utilizatori.

Pentru acest proiect s-a utilizat versiunea 1.7.4 care conține:

Apache 2.2.17

MySql 5.5.8

Php 5.3.5

2.2. Sistemul de Gestiune al bazelor de date MySql

2.2.1 Noțiuni Introductive

Un sistem de management al bazei de date necesită un limbaj de interogare pentru a permite utilizatorului să acceseze datele. SQL (limbaj de interogare structurată) este limbajul utilizat de majoritatea sistemelor de baza de date relaționale. Limbajul SQL a fost dezvoltat într-un prototip de sistem de management a bazelor de date relaționale – System R – de către IBM, la mijlocul anilor 1970. În 1979, corporația Oracle introduce prima implementare a SQL în varianta comercială.

Un sistem de gestiune a bazelor de date este un ansamblu complex de programe care asigură interfața între o bază de date și utilizatorii acesteia.

Sistemul de gestiune a bazelor de date este componenta software a unui sistem de bază de date care interacționează cu toate celelalte componente ale acestuia, asigurând legătura și interdependența între elementele sistemului.

Deși este folosit foarte des împreună cu limbajul de programare PHP, cu MySQL se pot construi aplicații în orice limbaj major. Există multe scheme API disponibile pentru MySQL ce permit scrierea aplicațiilor în numeroase limbaje de programare pentru accesarea bazelor de date MySQL, cum are fi: C, C++, C#, Java, Perl, PHP, Python, etc., fiecare dintre acestea folosind un tip spefic API. O interfață de tip ODBC denumită MyODBC permite altor limbaje de programare ce folosesc această interfață, să interacționeze cu bazele de date MySQL cum ar fi ASP sau Visual Basic

MySQL este componentă integrată a platformelor XAMPP (Linux/Windows-Apache-MySQL-PHP/Perl/Python). Popularitatea sa ca aplicație web este strâns legată de cea a PHP-ului care este adesea combinat cu MySQL și denumit Duo-ul Dinamic. În multe cărți de specialitate este precizat faptul ca MySQL este mult mai ușor de invățat și folosit decât multe din aplicațiile de gestiune a bazelor de date, ca exemplu comanda de ieșire fiind una simplă și evidentă: „exit” sau „quit”.

SQL (Structured Query Language – Limbaj Structurat de Interogare) este un limbaj de programare specific pentru manipularea datelor in sistemele de manipulare a bazelor de date relationale (RDBMS), iar la origine este un limbaj bazat pe algebra relaționala. Acesta are ca scop inserarea datelor, interogatii, actualizare și ștergere, modificarea și crearea schemelor, precum și controlul accesului la date. A devenit un standard în domeniu (standardizat ANSI-ISO), fiind cel mai popular limbaj utilizat pentru creearea, modificarea, regăsirea și manipularea datelor de către SGBD-urile (Sistemele de Gestiune a Bazelor de Date) relaționale. Pe lângă versiunile standardizate ale limbajului, există o mulțime de dialecte și variante, unele proprietare, fiind specifice anumitor SGBD-uri și de asemenea conținând extensii pentru a suporta SBD-urile (Sistemele de Baze de Date) obiectuale (obiectual-relaționale). SQL permite atât accesul la conținutul bazelor de date, cât și la structura acestora. [***11,b]

2.2.2 Caracteristiciile limbajului SQL

SQL este prezentat în limba engleză. Folosește cuvintele select, insert, delete ca părți ale setului de comenzi.

SQL este un limbaj neprocedural: specifică ce informații dorești, nu cum să le obții. Cu alte cuvinte SQL nu îți cere să specifici metoda de acces la date. Toate cererile SQL folosesc optimizarea cererilor – o parte a RDBMS – pentru a determina rapid remedierea datelor specificate. Aceste trăsături ușurează obținerea rezultatelor dorite. procesarea SQL asupra înregistrărilor nu se poate face decât asupra unei singure înregistrări la un moment dat. Cea mai comună formă a unui set de înregistrări este un tabel.

SQL poate fi folosit de un șir de utilizatori incluzând DBA, programatori de aplicații, personal de management și multe alte tipuri de utilizatori.

SQL pune la dispoziție comenzi pentru o varietate de sarcini incluzând:

date interrogate inserarea, extragerea și ștergerea rândurilor într-un tabel

crearea, modificarea și ștergerea obiectelor de tip bază de date

controlul accesului la baza de date și la obiectele de tip bază de date

garantarea consistenței bazei de date

2.2.3 Setul de comenzi SQL

SELECT este comanda cea mai utilizată; este folosită pentru obținerea datelor din bazele de date.

INSERT, UPDATE, DELETE, aceste trei comenzi sunt utilizate pentru a introduce noi rânduri, pentru a schimba rândurile existente și pentru a șterge rândurilor nedorite din tabelele bazelor de date respective. Ele sunt cunoscute în ansamblu ca DML sau comenzi ale limbajului de manipulare a datelor.

CREATE, ALTER, DROP aceste trei comenzi sunt utilizate dinamic pentru a crea, modifica și șterge orice structură de date (tabele, expuneri, indecși). Ele sunt cunoscute sub numele colectiv DDL sau comenzi ale limbajului de definire a datelor.

Pentru a crea o baza folosim comanda:

CREATE DATABASE [nume_baza];

Selectarea bazei de date se face cu instrucțiunea:

use[nume_baza];

Bazele de date conțin tabele în care se stocheaza informații;

CREATE TABLE [nume_tabel] (

[camp1] [tip1],

[camp2] [tip2],…)

[tip1],[tip2] – reprezintă tipul de date al [camp1] respectiv [camp2].

Ele pot fi de exemplu:

– INT(INTEGER)

– VARCHAR(lungime de variabila de la 0-255 caractere)

– TEXT(sir maxim de 65535 caractere),

– DATE(data in format YYYY-MM-DD HH:MM:SS)

Introducerea datelor in tabel se face prin instrucțiunea :

INSERT INTO [nume_tabel] (camp1,camp2…) VALUES ('[val_camp1]','[val_camp2]', …);

Interogarea tabelului pentru obtinerea informațiilor se realizează utilizând comanda SELECT ca in exemplul următor:

SELECT * FROM [nume_tabel];

In cazul in care dorim selectarea doar anumitor date din tabel se folosește clauza WHERE:

SELECT * FROM [nume_tabel] WHERE [conditie];

Alți modificatori:

AUTO_INCREMENT –funcționează cu orice tip de intreg la fiecare rand adăugat in baza de date numărul asociat va fi incrementat.

NULL – înseamnă fără valoare (diferit de spatiu sau de zero).

PRIMARY_KEY – este rolul primei coloane din tabel totodată reprezentand elemental de referință pentru fiecare linie.

2.2.4 Funcții specifice comunicări cu MySql

PHP include o biblotecă 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 informațiile dintr-o bază de date MYSQL și le poate modifica.

Mai jos sunt enumerate cateva dintre funcțiile cele mai importante pentru comunicarea cu baza de date:

mysql_connect – realizează conexiunea cu baza de date.

mysql_query – execută o comanda SQL.

mysql_fetch_object – extrage un rând dintr-un rezultat sub formă de obiect.

mysql_fetch_array – extrage un rând dintr-un rezultat sub formă de vector.

mysql_close – închide o conexiune.

mysql_create_db – crează o bază de date.

mysql_select_db – selectează o bază de date.

mysql_drop_db – șterge o bază de date.

mysql_fetch_assoc(sql_rezult) – Returnează un vector asociativ (în care cheile sunt numele coloanelor din tabelul MySQL) cu rezultatul dat de MySQL în urma unei interogari facute

mysql_errno – returnează numărul erorii de la ultima funcție MySQL, sau 0 (zero) dacă nu este vreo eroare.

2.3 Limbajul PHP

2.3.1 Despre Limbajul PHP

PHP, înseamnă "PHP: Hypertext Preprocessor" este un limbaj de scripting de uz general, cu cod-sursă deschis (Open Source), utilizat pe scară largă, și care este potrivit în special pentru dezvoltarea aplicațiilor Web și poate fi integrat în HTML. Sintaxa sa provine din C, Java și Perl și este ușor de învățat. Scopul principal al limbajului este acela de a permite programatorilor web să creeze rapid pagini web generate dinamic, însă cu PHP puteți realiza mult mai multe.

PHP succede un produs mai vechi, numit PHP/FI. PHP/FI a fost creat de către Rasmus Lerdorf în 1995, inițial doar ca un simplu set de scripturi Perl pentru a urmări accesele la rezumatul său online. El a denumit acest set de scripturi 'Personal Home Page Tools — Instrumente pentru paginile personale'. Deoarece era necesară mai multă funcționalitate, Rasmus a scris o implementare mult mai largă în C, care era în stare să comunice cu baze de date și dădea posibilitate utilizatorilor să dezvolte simple aplicații Web dinamice. Rasmus a hotărît să lanseze codurile-sursă ale PHP/FI pentru ca oricine să le poată vedea, utiliza, să poată corecta erorile din ele și să îmbunătățească codul-sursă.

PHP/FI, care se descifra ca Personal Home Page / Forms Interpreter — Interpretor al paginilor personale / al formularelor, includea unele funcționalități de bază ale PHP pe care îl cunoaștem astăzi. El poseda variabile asemănătoare cu cele din Perl, interpretare automată a variabilelor din formulare și sintaxă inclusă în HTML. Insăși sintaxa era similară cu cea din Perl, cu toate că era mult mai limitată, simplă și într-un anumit fel inconsistentă.

În 1997, PHP/FI 2.0, a doua re-scriere a implementării în C, avea un cult din cîțiva mii de utilizatori din lume (estimat), cu aproximativ 50,000 domenii, care raportau că îl au instalat, ceea ce reprezenta aproximativ 1% din toate domeniile din Internet. Cu toate că erau cîteva persoane, care contribuiau porțiuni de coduri-sursă în acest proiect, el era totuși în mare măsură un proiect al unui singur om.

PHP/FI 2.0 a fost oficial lansat doar în noiembrie 1997, după ce și-a petrecut o bună parte a vieții în versiuni beta. În scurt timp el a fost înlocuit de versiunile alfa ale PHP 3.0.

PHP 3.0 a fost prima versiune care se aseamănă mult cu PHP, așa cum îl cunoaștem astăzi. El a fost creat de către Andi Gutmans și Zeev Suraski în 1997 ca o re-scriere completă, după ce ei au descoperit că PHP/FI 2.0 avea o capacitate foarte redusă pentru a dezvolta o aplicație de comerț electronic, asupra cărei ei lucrau într-un proiect al Universității. Într-un efort de a coopera și a continua dezvoltarea PHP/FI cu baza existentă de utilizatori, Andi, Rasmus și Zeev au decis să coopereze și au anunțat PHP 3.0 în calitate de succesor oficial al PHP/FI 2.0, iar dezvoltarea PHP/FI 2.0 a fost în mare măsură stopată.

Unul din cele mai mari avantaje ale PHP 3.0 erau facilitățile sale largi de extindere. În afară de faptul că oferea utilizatorilor finali o infrastructură solidă pentru o multitudine de baze de date, protocoale și interfețe API, facilitățile de extindere ale PHP 3.0 au impulsionat zeci de programatori să se alăture și să înainteze noi module de extindere. Discutabil, aceasta a fost cheia succesului enorm al PHP 3.0. Alte facilități de bază introduse în PHP 3.0 au fost susținerea sintaxei orientate pe obiecte și o sintaxă a limbajului mult mai puternică și consistentă.

Noul limbaj a fost lansat sub un nou nume, care excludea implicarea unei utilizări personale limitate, pe care o avea numele PHP/FI 2.0. El a fost numit pur și simplu 'PHP', sensul fiind un acronim recursiv – PHP: Hypertext Preprocessor — Preprocesor al Hipertextului.

Spre sfîrșitul anului 1998, PHP a atins un număr de zeci de mii de utilizatori (estimat) și sute de mii de site-uri Web raportau că îl au instalat. În punctul său de vîrf, PHP 3.0 a fost instalat aproximativ pe 10% din toate serverele Web din Internet.

PHP 3.0 a fost lansat oficial în iunie 1998, după ce a petrecut aproximativ 9 luni în faza de testare publică.

Către iarna anului 1998, la scurt timp după ce PHP 3.0 a fost lansat oficial, Andi Gutmans și Zeev Suraski au început lucrul asupra rescrierii nucleului PHP. Scopurile reproiectării erau de a îmbunătăți performanța aplicațiilor complexe și de a îmbunătăți modularitatea bazei de coduri-sursă ale PHP. Astfel de aplicații puteau fi realizate datorită noilor facilități din PHP 3.0, precum și a susținerii unei game largi de baze de date ți interfețe API ale terților producători, însă PHP 3.0 nu fusese proiectat să lucreze cu astfel de aplicații complexe în mod eficient.

Noul nucleu, denumit 'Zend Engine' (compus din numele autorilor, Zeev și Andi), a făcut față cerințelor de proiect cu succes, și a fost prezentat pentru prima dată la mijlocul anului 1999. PHP 4.0, bazat pe acest nucleu și în cuplu cu o gamă largă de facilități noi a fost lansat oficial în mai 2000, aproape doi ani după predecesorul său, PHP 3.0. Suplimentar la performanța îmbunătățită substanțial în această versiune, PHP 4.0 a inclus alte facilități de bază, cum ar fi susținerea mult mai multor servere Web, sesiunilor HTTP, buferizarea ieșirii, metode mai securizate de gestionare a datelor introduse de utilizatori și cîteva construcții noi ale limbajului.

Astăzi PHP este utilizat de sute de mii de programatori (estimat) și cîteva milioane de site-uri raportează că îl au instalat, ceea ce alcătuiește peste 20% din toate domeniile din Internet.

Echipa de dezvoltare a PHP include zeci de programatori, precum și alte zeci de persoane ce lucrează asupra proiectelor asociate cu PHP, cum ar fi PEAR și proiectul de documentare.

Pe 13 iulie 2004 a fost lansat PHP 5, cu Zend Engine II, ce a adus și o orientare obiect mai pronunțată și suportînd mai multe caracteristici ale acestui tip de programare.

La sfîrșitul lui 2007 doar versiunea 5.x mai era întreținută, deoarece în data de 13 iulie 2007 (exact la 3 ani după lansarea PHP5), PHP Group a anunțat că PHP4 va fi scos din uz pe 31 decembrie 2007 , deși prognozează că anumite upgrade-uri de securitate se vor oferi pînă pe 8 august . Dezvoltarea la PHP 6 începuse deja în decembrie 2007 și urmează să fie oferit odată cu scoaterea din uz a PHP4.

PHP 6 are următoarea agendă de îmbunătățiri și modificări:

îmbunătățirea suportului pentru Unicode

retragerea definitivă a unor funcți ca register_globals ș magic_quotes, și a variabilelor tip $HTTP_*_VARS

var va fi un alias pentrupublic, și folosirea lui va ridica o atenționare E_STRICT.

suport pentru int pe 64 biți.

taguri tip ASP sunt retrase definitiv.

XMLReader, XMLWriter, Fileinfo vor face parte din distribuția principală

următoarele pachete au fost scoase din distribuția principală: Freetype1, GD1, mime_magic

funcția ereg() nu mai este disponibilă

instanțierea obiectelor prin referină (& new Obiect()) generează o eroare E_STRICT.

erorile tip E_STRICT sunt incluse în E_ALL.

adăugarea instrucțiunii goto permite salturi la un alt bloc de comenzi.

namespace, import, ș goto devin cuvinte rezervate.

accesarea caracterelor într-un șir (string) se face prin operatorul []. {} se scoate din uz ( ex: $str[42] funcționează, $str{42} nu funcționează)

constantele FILE_BINARY și FILE_TEXT devin disponibile pentru folosirea în funcții de citire/scriere fișiere

foreach va suporta array multi dimensional: foreach($a as $b => list($c, $d))

pentru operatorul ternar expresia pentru valoarea true nu mai este obligatorie ($a = $s ?: 'b’; // returns $a = $s;)

opțiunea safe_mode a fost înlăturată.

operatorul and a fost înlăturat.

funcția microtime() returnează un float.

zend.ze1_compatibility_mode a fost înlăturat.

Popularitate:

PHP-ul este unul din cele mai folosite limbaje de programare server-side, conform unui studiu efectuat de Netcraf în aprilie 2002, apărînd pe 9 din cele 37 milioane de domenii cercetate în studiu. De asemenea, există un grafic al creșterii folosirii PHP-ului pe site-ul oficial. Popularitatea de care se bucură acest limbaj de programare se datorează următoarelor caracteristici:

Familiaritatea: sintaxa limbajului este foarte ușoară combinînd sintaxele unora din cele mai populare limbaje Perl sau C

Simplitatea: sintaxa limbajului este destul de liberă. Nu este nevoie de includere de biblioteci sau de directive de compilare, codul PHP inclus într-un document executîndu-se între marcajele speciale;

Eficiența: PHP-ul se folosește de mecanisme de alocare a resurselor, foarte necesare unui mediu multiutilizator, așa cum este web-ul;

Securitate: PHP-ul pune la dispoziția programatorului un set flexibil și eficient de măsuri de siguranță;

Flexibilitate: fiind apărut din necesitatea dezvoltării web-ului, PHP a fost modularizat pentru a bine pasul cu dezvoltarea diferitelor tehnologii. Nefiind legat de un anumit server web, PHP-ul a fost integrat pentru numeroasele servere web existente: Apache,IIS,Zeus,server, etc.

Gratuitate : este probabil cea mai importantă caracteristică a PHP-ului. Dezvoltarea PHP-ului sub licența open-source a determinat adaptarea rapidă a PHP-ului la nevoile web-ului, eficientizarea și securizarea codului.

PHP este simplu de utilizat, fiind un limbaj de programare structurat, ca și C-ul ,Perl-ul sau începînd de la versiunea 5 chiar Java , sintaxa limbajului fiind o combinație a celor trei. Datorită modularității sale poate fi folosit și pentru a dezvolta aplicații de sine stătătorare, de exemplu în combinație cu PHP-GTK sau poate fi folosit ca Perl sau Python în linia de comandă. Probabil una din cele mai importante facilități ale limbajului este conlucrarea cu majoritatea bazelor de date relaționale, de la MySQL și pînă la Oracle, trecînd prin MS Sql Server, PostgreSQL, sau DB2.

PHP poate rula pe majoritatea sistemelor de operare, de la UNIX ,Windows, sau Mac OS X și poate interacționa cu majoritatea serverelor web. Codul dumneavoastră PHP este interpretat de serverul WEB și generează un cod HTML care va fi văzut de utilizator (clientului -browserului- fiindu-i transmis numai cod HTML).

Arhitectura tip LAMP a devenit populară în industria web ca modalitate rapidă, gratuită și integrată de dezvoltare a aplicațiilor. Alături de Linux, Apache și Mysql, PHP reprezintă litera P, deși uneori aceasta se referă la Python sau Perl. Linux ocupă rolul de sistem de operare pentru toate celelalte aplicații, MySQL gestionează bazele de date, Apache are rol de server web, iar PHP are rol de interpretator și comunicator între acestea.

PHP folosește extensii specifice pentru fișierele sale: .php, .php3, .ph3, .php4, .inc, .phtml. Aceste fișiere sunt interpretate de catre serverul web iar rezultatul este trimis în formă de text sau cod HTML către browser-ul clientului.

2.3.2 Tipuri de variabile

Decizia privind modul de stocare a datelor este importantă, în mod caracteristic, datele se stocheaza sub forma de numere atunci când se dorește executarea unor operații matematice asupra datelor, deoarece numerele sunt stocate într-un mod care permite efectuarea de calcule. Pe de alta parte, sirurile sunt stocate folosind o modalitate care facilitează întelegerea lor de către operatorul uman. Datele trebuie stocate sub forma de șiruri dacă formatul acestora nu este numeric sau dacă doriți ca operatorul uman să fie capabil de a introduce sau de a vizualiza datele. Practic, puteți asimila numerele cu un mod de stocare a datelor în interiorul calculatorului. Șirurile se pot asimila unui mod de stocare a datelor în afară calculatorului. Aceste doua mari categorii de date: numere și șiruri, formează opt tipuri principale de variabile :

1. Tipul boolean

Variabilelele de tipul boolean pot lua doar doua valori : FALSE sau TRUE. Variabilele de alt tip decat boolean pot fi convertite la tipul boolean prin operatorul cast (bool) sau (boolean), plasate inaintea valorilor, desi in general nu e nevoie de această convertire, valoarea fiind automat recunoscută de PHP.

2. Tipul integer

PHP foloseste două categorii de numere: întregi (tipul integer) și duble, cu virgulă (tipul float). Variabilele integer reprezintă numerele intregi, ele pot fi specificate in format zecimal, hexazecimal sau octal. Numerele întregi reprezintă numerele fară parte fractionara folosite la numărare, plus zero și numerele negative. Cu alte cuvinte, în PHP termenul de întreg are aceeași semnificație ca și în matematică. De exemplu, numărul 100 poate fi reprezentat în PHP sub forma de întreg.

Scrierea numerelor PHP este simplă. Un întreg PHP se obține prin scrierea cifrelor care îi alcătuiesc valoarea. Dacă valoarea este negativa, scrieți un semn minus imediat la stânga numărului. Iată câteva exemple de numere PHP întregi :

215678 – Număr in reprezentare zecimala
0x1A8 – Număr in reprezentare hexazecimala (reprezintă: 1*16*16 + 10*16 + 8 = 424 (in zecimal))

067 – Reprezintă: 6*8 + 7 = 55 (in zecimal)

3. Tipul float

Reprezintă variabile de tip real [numerele cu virgula], (în lb. engleza se folosește punctul zecimal în loc de virgula). De exemplu 2.5

In general, numerele duble (tipul float) sunt stocate folosindu-se formatul standard IEEE-64, care furnizează 64 de biti. Acest format va permite să stocați valori care pot merge pâna la 1,8 x 10 la puterea 308 sub forma de numere duble și furnizează aproximativ 14 cifre După punctul zecimal (sau cifre semnificative) de precizie.

Iata câteva exemple de numere duble (tipul float)

123.4567 – Număr de tip float

1.2e3; – Reprezintă: 1.2 * 103

4. Tipul string

Reprezintă o înșiruire de caractere, fiecare caracter este memorat pe 1 byte; setul de caractere este limitat la 256 valori distincte. Dimensiunea șirurilor poate fi oricât de mare in PHP, nu exista specificații care să limiteze numărul maxim de caractere dintr-un șir.

Spre deosebire de întregi și de numere float, care conțin cifre, șirurile pot conține orice caracter. Ca atare, șirurile sunt utile pentru stocarea datelor care nu pot fi calculate, precum nume, fraze și adrese.Un exemplu de declarare de string :

$string=”Un string”

$string=’Un string’;

5. Tipul array

Reprezintă un vector de valori (care crează o matrice), fiecare element al matricei are asociat o cheie. Aceasta cheie va fi folosită ulterior la identificarea unui element specific al matricei. In PHP tipul array se mai numește și tip map ordonat, deoarece elemente vectorului sunt ordonate după câmpul cheie. Iata un exemplu simplu de variabile array:

<?php
$fructe[0] = 'mere';
$fructe[1] = 'caise';
$fructe[2] = 'piersici';
?>

6. Tipul object

Reprezintă de fapt instanța unei clase declarate in PHP. O clasă este o structură care conține variabile membru și funcții membru.

7. Tipul resource

Este un tip special de variabilă care pastreaza o legatura spre resurse externe. Exemple de resurse externe: manipulatori pentru deschidere de fișiere, conectare la baze de date, compresia fișierelor, resurse COM, etc…

8. Tipul NULL

Reprezintă varibilele care nu au înca atribuită o valoare. O variabilă se consideră a avea valoarea Null dacă:

– este setată explicit prin atribuirea valorii NULL

– nu a fost asignată incă o valoare acestei variabile

– variabila a fost stearsă prin funcția unset();

Putem afla tipul unei variabile folosind funcția gettype() care returnează un string (sir) conținând tipul variabilei cercetate.

2.3.3 Operatori

Interpretorul PHP permite folosirea a nouă tipuri diferite de operatori. Aceștia operează asupra unor expresii (una, doua sau trei) și furnizează ca rezultat o altă expresie (rezultatul operației corespunzătoare).

Operatori aritmetici:
– adunare ('+');
– scădere ('-');
– împărțire ('/');
– rest ('%').

Aceste operații se aplică asupra unor valori care reprezintă tipuri numerice. Dacă unul dintre operanzi nu are tip numeric, atunci el va fi convertit automat la o valoare întreagă. Dacă cel puțin unul dintre operanzi (după efectuarea eventualelor conversii necesare) este un număr real, atunci rezultatul operației va fi tot un număr real, cu excepția operatorului rest; rezultatul operației de determinare a restului este întotdeauna un număr întreg. Dacă ambii operanzi sunt numere întregi, atunci rezultatul va fi un număr întreg, cu excepția împărțirii al cărei rezultat este întotdeauna un număr real. Dacă operatorul rest este aplicat asupra unor numere reale, atunci rezultatul este un număr întreg. Nu este permisă împărțirea la valoarea 0. Dacă al doilea operand asupra căruia se aplică unul dintre operatorii '/' sau '%' are valoarea 0, va fi semnalată o eroare.

Alți operatori folosiți pentru compararea valorilor variabilelor sunt:
'>' – mai mare
'>=' – mai mare sau egal
'<' – mai mic
'<=' – mai mic sau egal
'==' – rezultatul este true dacă cele două expresii au aceeași valoare;
'===' – rezultatul este true dacă cele două expresii au aceeași valoare și au același tip;
'!=' sau '<>' – rezultatul este true dacă cele două expresii au valori diferite;
'!==' – rezultatul este true dacă cele două expresii au valori diferite sau au tipuri diferite;
'<' – rezultatul este true dacă valoarea primei expresii este mai mică decât valoarea celei de-a doua expresii;
'>' – rezultatul este true dacă valoarea primei expresii este mai mare decât valoarea celei de-a doua expresii;
'<=' – rezultatul este true dacă valoarea primei expresii este mai mică sau egală cu valoarea celei de-a doua expresii;
'>=' – rezultatul este true dacă valoarea primei expresii este mai mare sau egală cu valoarea celei de-a doua expresii.

2.3.4 Instrucțiuni conditionale

Instructiunra IF

Expresiile conditionale sunt esențiale pentru scrierea instrucțiunilor condiționale, prin care se iau decizii. Una dintre cele mai simple și folosite instrucțiuni condiționale este instrucțiunea : if.

If(condiție) {
Instrucțiune(1);
Instrucțiune(2);
………………
}

După cum se observa după if urmează o pereche de paranteze rotunde in interiorul cărora se plasează condiția, adică o expresie logică a carei rezultat poate fi TRUE sau FALSE. Dacă și numai dacă rezultatul expresiei logice (conditia) este TRUE se vor executa instucțiunile : Instrucțiune(1), apoi Instrucțiune(2), etc…

Se observă că acest set de instrucțiune se plasează intre acolade. Doar intr-un singur caz aceste acolade nu sunt necesare și anume: in cazul in care este scrisa doar o singură instrucțiune.

Dacă rezultatul expresiei logice dintre paranteze rotunde este FALSE , setul de instrucțiuni dintre acolade nu se va executa, controlul programului va trece mai departe.

Instrucțiunea ELSE

Sa presupunem ca doriți sa executați o instrucțiune atunci când o condiție este TRUE și o alta instrucțiune când condiția este FALSE. Instrucțiunea else vă permite sa procedați astfel, după cum urmează:

If(condiție) {
Instrucțiune(1);
Instrucțiune(2);
………………
}
else {
Instrucțiune(3);
Instrucțiune(4);
………………
}

In acest din urmă caz dacă expresia logică din paranteze: condiție este adevarată se vor executa instrucțiunile: Instrucțiune(1); Instrucțiune(2); , iar dacă valoarea expresiei logice : condiție are valoarea FALSE se vor executa instrucțiunile: Instrucțiune(3); Instrucțiune(4);

Instrucțiunea asociată unei instrucțiuni if sau else poate fi ea însași o instrucțiune if. O asemenea instrucțiune if se numește "instrucțiune if imbricată".

Instrucțiunea switch, break și default

In cazul in care vrem sa comparăm valoarea unei singure variabile cu o succesiune de valori, in locul instrucțiunii "if" putem folosi instrucțiunea switch:

De exemplu, să presupunem că valoarea variabilei $număr este l, 2 sau 3, reprezentând respectiv dimensiunile "mica", "medie" și "mare". Iată un mic script care afișează dimensiunile asociate valorilor variabilei $număr, folosind funcția switch alaturi de break și default care vor fi explicate mai jos:

<?php

switch($număr) {

case(1):

echo "mic";

break;

case(2):

echo "mediu";

break;

case(3):

echo "mare";

break;

default:

echo "Acesta nu este un cod valabil";}?>

Acțiunea unei instrucțiuni switch este determinată de valoarea unei expresii întregi, nu de valoarea unei expresii condiționale. Numele variabilei este dat între parantezele care urmează după cuvântul cheie switch. Acoladele delimitează o serie de instrucțiuni case și o instrucțiune default opțională, fiecare dintre instrucțiunile cuprinse între acolade putând avea instrucțiuni asociate.

Când este executată, instrucțiunea switch încearcă sa stabilească o identitate între valoarea variabilei sale și valoarea asociată unei instrucțiuni case. Se vor executa instrucțiunile asociate primei instrucțiuni case pentru care identitatea respectivă este valabila. Dacă valoarea variabilei din instrucțiunea switch nu corespunde nici uneia din valorile asociate instrucțiunilor case, se vor executa instrucțiunile asociate instrucțiunii default, dacă exista o asemenea instrucțiune (ne este obligatorie). Un procedeu de programare indicat constă în aceea că fiecare instrucțiune case din cadrul unei instrucțiuni switch să se încheie cu o instrucțiune break.

Instrucțiunea FOR

Instrucțiunea for este o instrucțiune buclă sau o instrucțiune iterativă; cu alte cuvinte, o instrucțiune care execută în mod repetat instrucțiunile asociate. Sintaxa generală a instrucțiunii for este următoarea:

for(expresie1; conditie; expresie2) { 
        Instrucțiune(1); 
          Instrucțiune(2); 
          Instrucțiune(3); 
          ………….
}

expresie1 se execută o singură dată și anume la începutul instrucțiunii; condiție este o expresie logică; instrucțiunea for se execută atâta timp cat valoarea expresiei : condiție are valoarea TRUE. De fiecare dată după execuția instrucțiunilor dintre acolade se execută : expresie2.

Instrucțiunea WHILE

Practic, instrucțiunile while și do while reprezintă versiuni "manuale" ale instrucțiunii for. Dacă o instrucțiune for are trei expresii, o instrucțiune while sau do while una singură, și anume expresia de test (conditia). Fară o expresie de inițializare sau o expresie pas, instrucțiune "for" operează în același mod ca o instrucțiune "while". în consecință, următoarele doua instrucțiuni sunt echivalente:

for ( ; $i<= 3; ) { $suma += $i; }
while ($i <= 3) { $suma ++ $i; }

Instrucțiunea while execută un set de instrucțiuni atâta timp cât valoarea expresiei "condiție" este adevarată. Forma generală a instrucțiunii while este următoarea :

while(condiție) { 
          Instrucțiune(1); 
          Instrucțiune(2); 
          Instrucțiune(3); 
          ………….
}

Setul de instrucțiuni Instrucțiune(1), Instrucțiune(2), etc… se vor executa atâta timp cât valoarea expresiei logice "condiție" are valoarea TRUE.

2.3.5 Funcții

Definirea unei funcții

În afară de a utiliza funcțiile din biblioteca de funcții a limbajului PHP, va puteți defini și folosi propriile funcții. Pentru a defini o funcție, in PHP funcțiile incep intotdeauna cu declaratia: function, ca in exemplul următor:

function nume_funcție(nume_argument) { 
        Aici se insereaza corpul funcției }

Cuvântul cheie function, "numele_funcției" și "nume_argument" alcătuiesc antetul funcției. Termenul de corp al funcției se referă la instrucțiunile incluse între acolade care urmează După antetul funcției. Instrucțiunile din corpul funcției sunt executate atunci când funcția este apelată. Numele funcțiilor nu prezintă sensibilitate la diferența între majuscule și minuscule; ca atare, "f()" și "F()" reprezintă referiri la aceeași funcție. Dacă doriți sa definiți o funcție care nu are argumente, puteți omite "nume_argument"; dacă doriți sa definiți o funcție cu mai multe argumente, puteți include argumente suplimentare După "nume_argument", fiecare argument fiind separat de vecinul sau printr-o virgulă. Parantezele și numele argumentelor

Apelarea unei funcții definite de utilizator

O funcție definita de utilizator poate fi apelată ca orice funcție. De exemplu, iata o instrucțiune care apeleaza funcția "arie()" din exemplul anterior:

<?php

function arie($lungime, $latime) {

return $lungime * $latime;

}

$rezultat = arie(5,3);

echo "Aria exte : $rezultat";

?>

Valorile argumentelor 5 și 3 le înlocuiesc pe acelea ale argumentelor din corpul funcției, care se comportă ca și cum ar fi fost scrisă astfel:

return 5*3

Rezultatul afișat al acestui script va fi : Aria este : 15

2.4 Limbajul HTML

2.4.1 Introducere in Html

HTML (HyperText Markup Language) este un limbaj utilizat pentru crearea paginilor web ce pot fi afișate intr-un browser (sau navigator). HTML este folosit pentru prezentarea unui conținut (text, imagine) intr-o pagina web, furnizează mijloacele prin care conținutul unui document poate fi structurat și adnotat cu diverse tipuri de metadate și indicații de redare și afișare. Aceste indicații pot varia de la decorațiuni minore ale textului, cum ar fi culoarea sau sublinierea unui cuvant ori introducerea unei imagini, pana la adăugarea de elemente sofisticate, tabele, harți de imagini, formulare și cod CSS sau scripturi JavaScript.

Metadatele pot include informații despre titlul și autorul documentului, informații structurale despre cum este imparțit documentul in diferite segmente, paragrafe, liste, titluri etc. și informații esențiale care permit ca documentul să poata fi legat de alte documente pentru a forma astfel hiperlink-uri.

2.4.2 Utilizarea anumitor taguri

Tabel

Tabelele sunt elemente foarte utile pentru așezarea și prezentarea conținutului intr-o pagina web.Pentru a crea tabele in paginile web se folosește elementul <table> … </table> , acesta incadrează alte patru sub-elemente, care alcătuiesc structura tabelului.

Linia (randul) Tabelului <tr> … </tr>

Titlul Tabelului <th> … </th>

Coloanele tabelului (datele) <dt> … </dt>

Sub-titlu tabelului <caption> … </caption>

Linia tabelului de obicei conține elementul pentru titlurile tabelului și elementul pentru coloanele tabelului.

In cadrul elementelor pentru titluri și coloanele tabelului se pot adăuga și alte elemente HTML, cum ar fi cele pentru formatul textului, paragrafe, link-uri sau imagini

Tagul <DIV>

Tag-ul <div></div> este unul din cele mai folosite elemente HTML, aceasta deoarece in combinație cu proprietați CSS poate crea efecte grafice deosebite, iar in interiorul lui pot fi incluse oricare elemente HTML: tabele, formulare, marcatori, linii sau alte DIV-uri. Cadrul in care acestea sunt adăugate poate avea propriul fundal (background), lungime, inalțime și margini cu diferite linii.

Un alt aspect important este și faptul că putem poziționa conținutul din interiorul tag-ului <div> </div> oriunde in pagină, folosind proprietați CSS precum:

position – care poate lua valorile: static, relative, fixed sau absolute

margin – care stabilește distanța dintre marginea cadrului secțiunii (blocul) DIV și elementele din jurul lui

Creearea link-urilor

Link-urile (links) sunt elemente HTML cu ajutorul carora putem deschide alte pagini, sări de la un document la altul sau la alt site. Sunt foarte importante in crearea de pagini web. Forma generala pentru crearea unui link este următoarea:

<a href="url" title="Titlu link">Nume</a>

a este elementul specific pentru crearea link-urilor

href este atributul care marchează indicarea adresei link-ului

url este adresa link-ului (a paginii care va fi deschisa). De exemplu (http://www.marplo.net)

title este atributul prin care se da un titlu link-ului (un text ascuns, care apare numai cand este poziționat mouse-ul deasupra link-ului)

Titlu link este textul ascuns care apare cand este poziționat mouse-ul deasupra link-ului

Nume este textul care va aparea in browser și pe care trebuie dat click cu mouse-ul. In loc de acest text se poate folosi și o imagine, astfel "Nume" va fi inlocuit cu <img src="nume_imagine.extensie">

FORM

Pentru a crea un formular in HTTML se folosește elementul <form> … </form>, in cadrul acestuia se vor adauga celelalte elemente specifice. Elementul <form> … </form> nu conține atribute pentru format, foloseste insa următoarele atribute:

action – aici se scrie adresa URL a unui script de pe server (de obicei PHP sau CGI), program care trebuie sa accepte datele din FORM , le proceseaza și trimite înapoi raspunsul la browser.

method – aici putem scrie get , sau post. Aceste valori specifica ce metoda HTTP va fi folosita pentru a trimite conținutul formularului la server.

enctye – determina mecanismul folosit pentru a codifica conținutul transmis din formular.

name – Este numele formularului, folosit de scripturi VB (Visula Basic) sau JavaSript.

target – Este tinta cadrului (frame) unde pagina va fi vizualizata, După transmiterea datelor din form.

In continuare sunt prezentate restul elementelor de formular care sunt folosite pentru a crea diferite campuri, casete, butoane in pagina web, necesare pentru a aduna datele care vor fi trimise la aplicatie pe server. Cele mai multe se creaza prin atributul type al elementului <input> … </input>

Proprietațile elementului <input> … </input>

type – tipul de FORM folosit (caseta text, buton și altele …)

name – numele elementului respectiv de formular, folosit de scripturile la care sunt trimise datele

value – datele (valoarea) asociate acelui element de formular și care sunt trimise, impreuna cu numele, către scripturi (PHP, CGI, JavaScript)

size – specifica numărul de caractere care dau lungimea zonei de text

maxlength – numărul maxim de caractere acceptate

checked – specifica dacă un buton sau alta forma va fi initial selectata (bifata).

readonly – folosit pentru campuri de tip text, impedica modificarea valorii (textului) din acel camp

disabled – impedica folosirea campului care are aceasta proprietate. Va fi vizibil dar nu va putea fi folosit, datele acestuia nu vor fi trimise din formular la vreun script.

Capitolul 3

SPECIFICAȚIILE APLICAȚIEI

3.1 Scurtă descriere a aplicației

Aplicația a fost realizată ca urmare a necesității acute a unui instrument care să estimeze timpul de realizare a unei documentații sau a unui proiect de arhitectură în cadrul societății comerciale S.C. Rheinbrucke S.R.L. .

Este important ca pentru fiecare proiect să se estimeze mereu aceleași ore necesare realizării acestuia astfel încât timpul alocat proiectanților pentru execuția unui proiect să fie mereu aceeași.

De regulă estimările se fac empiric după experiența fiecărui șef de proiect. Problemele apar în momentele în care acea estimare ține cont de nivelul de pregătire și de dexteritate a proiectantului. Astfel un proiectant care are o îndemânare mai mare poate să realizeze proiecte mai rapid decât altul cu p dexteritate mai scăzută sau mai puțin experimentat.

Reușindu-se să se realizeze o estimare care să țină cont de niște variabile clare diferențele dintre proiectanți pot să fie în avantajul celor care au mai multă experieță și îndemânare.

Aplicația este compusă din două părți importante: introducerea datelor generale despre proeict și afișarea rezultatelor.

Nu a fost necesară realizarea unei interfețe grafice elaborate dorindu-se ca aplicația să fie cât mai ușor de folosit și practică.

Datele de intrare care sunt solicitate în prima parte sunt: titlul proiectului, beneficiarul direct, contractorul, amplasamentul, gradul de complexitate al programului, complexitate RLV, corecții, suprafața terenului, suprafața construită, suprafața construită desfășurată, distanța în km până la instituțiile avizatoare, numărul de deplasări contractate, fazele proiectului, numărul de exemplare ce trebuiesc tipărite, data evaluării, cursul EURO la data evaluării.

3.2 Funcțiile aplicației

Principala funcție a aplicației o reprezintă estimare timpilor de realizare pentru următoarele categorii de documentații:

Masurători teren – RLV – Reprezintă timpul estimat pentru cumularea tuturor dimensiunilor legate de proiect, măsurate pe teren. Dimensiunile servesc la realizarea de planuri, fațade, secțiuni și detalii. Se estimează un singur drum. Nu se mai alocă timp pentru drumuri suplimentare daca acestea sunt necesare din vina proiectantului.

Digitizare RLV – Reprezintă timpul estimat pentru desenarea în CAD a tuturor măsurătorilor obținute la măsuratori teren. Digitizarea include liniile, hașurile și cotele obținute.

Digitizare planșe – Reprezintă desenarea în CAD a unei planșe desenate fie de mână sau pe calculator. Desenul în CAD respectă dimensiunile cotelor, nu a desenului propriu-zis. Planșele pot fi desene de mână cu cote, proiecte vechi desenate cu creionul sau tușul, foi cu proiecte desenate în CAD, poze după planșe de arhitectură, structură etc.

Proiect RLV + Memoriu – Reprezintă realizarea unui proiect existent al unei construcții. Acesta conține copertă, foaie de capăt, borderou,memoriu scris, antemăsurătoare, planuri tehnice, secțiuni si fațade existente, planuri de amplasament sau de situație. Nu se însumează niciodată cu sarcinile de DTAC și PT. Nu se folosește pentru proiecte de intrare în legalitate. Se poate folosi pentru întabulare.

Studiu soluție (planșe digitizate fără cote sau secțiuni și fațade) – Reprezintă soluția preliminară realizată după respectarea tuturor cerințelor temei de proiectare. Studiul de soluție poate fi schiță desenată sau schiță CAD. Soluția trebuie să fie finală, dimensiunile schiței trebuie să fie funcționale și proporțiile să fie corecte. Studiul de soluție se consideră finalizat după acceptarea soluției de către beneficiar și conducere. Sarcina conține multiple încercări și timp de documentare. Această sarcină se trece o singură dată pe proiect. Studiul de soluție se face în baza unei teme de proiectare clar stabilite. Un nou studiu de soluție se ia în considerare când apar modificări substanțiale la tema de proiectare.

Planșă prezentare nivel 1 (planuri, cote generale) – Reprezintă o schiță în CAD a planurilor soluției de arhitectură. Schița reprezintă proporțiile corecte și dimensiunile finale. Planurile prezintă hașuri colorate, text pentru fiecare detaliu sau încăpere, text pentru accese sau puncte cardinale și cote generale interioare și exterioare. Se va calcula suprafața utilă și construită totală și fiecare spațiu interior va avea scrisă suprafața pe el. Planșa de prezentare trebuie sa aibă un cartuș preliminar și sa aibă un aspect final plăcut. Planșele de prezentare nivel 1 se trimit la beneficiar și reprezintă primul contact între biroul de arhitectură și acesta, așadar planșele trebuie să fie fără greșeli și foarte explicite. Această sarcină se bugetează când avem sarcina studiu de soluție.

Planșă prezentare nivel 2 (planuri și secțiuni) – Reprezintă o schiță în CAD mai detaliată decât cea de la nivel 1. Planurile se vor mobila sumar, se pot reprezenta anumite cote de nivel. La acest nivel se vor realiza și secțiunile, una sau două dacă este cazul. Această sarcină se bugetează doar la cererea expresă a beneficiarului și se adaugă la sarcina Planșa prezentare nivel 1 (planuri cote generale).

Planșă prezentare nivel 3 (planuri cotate, sec, fațade) – Reprezintă o schiță în CAD mai detaliată decât cea de la nivel 2. Planurile vor avea cote și pentru uși sau geamuri, cote de nivel integrale, se vor scrie tipurile pardoselilor pe spații, se va mobila complet. Se vor adăuga și toate fațadele, cu precizări asupra materialelor și detaliilor. Fațadele trebuie detaliate final pentru prezentarea finală a soluției de arhitectură aleasă. Această sarcină se bugetează doar la cererea expresă a beneficiarului și se adaugă cumulativ la sarcinile Planșă prezentare nivel 1 (planuri cote generale) și Planșă prezentare nivel 2 (planuri și secțiuni).

Digitizare în 3D – Reprezintă realizarea modelului 3D al unei construcții proiectate. Sarcina are inclusă digitizarea suportului proiectat. Sarcina nu conține digitizare după o poză sau o randare. Suportul trebuie să conțină proporții exacte și cote exacte.

Randări schițate (planșe deja digitizate în 3D) – Reprezintă realizarea unor randări schițate după un model 3D deja construit. Sarcina conține configurarea setărilor de randare, alegerea sumară a unor materiale, poziționarea soarelui, adăugarea sumară a unor elemente de anturaj și timpul efectiv de randare. Sarcina conține și copierea randărilor în folderul proiectului și trimiterea randărilor via mail. Sarcina conține un pachet de 8 randări.

Randări detaliate – Reprezintă realizarea unor randări detaliate după un model 3D deja construit. Sarcina conține configurarea setărilor de randare, alegerea tuturor texturilor de materiale, poziționarea soarelui, adăugarea tuturor elementelor de anturaj necesare și timpul efectiv de randare. Sarcina conține și detalierea 3D cu elemente din librării ale modelului 3D. Sarcina conține timpi pentru incercări, teste și greșeli efectuate în timpul randărilor. Sarcina conține și copierea randărilor în folderul proiectului și trimiterea randărilor via mail. Sarcina conține un pachet de 40 de randări.

Realizare 3D – pregătit pentru fațade și secțiuni Reprezintă introducerea proiectului în sistemul BIM, cu cuantificarea și indexarea tuturor elementelor desenate în baza de date a programului de proiectare. Scopul final este un proiect desenat care se modifică dinamic. Această sarcină necesită obligatoriu folosirea funcțiunilor Schedule, ID-uri, elemente compozite avansate etc. din Archicad. Sarcina exclude proiectul tip DTAC, deoarece presupune obținerea întregului proiect din modelare și calculare în programul de proiectare.

Proiect RH instalații complet – Reprezintă realizarea unui proiect sumar de instalații complet.

Proiectul de instalații electrice conține planuri pe care sunt reprezentate prizele, tipul prizei, întrerupătoarele, circuitele de comandă întrerupător-corp de iluminat numerotat, inventar de obiecte electrice, poziționarea tabloului general de distribuție TGD, antemăsurătoare și un sumar caiet de sarcini care să conțină poze cu tipul corpului de iluminat sau a altor aparate electrice.

Proiectul de instalație termică conține planuri cu fiecare obiect de încălzire/răcire/ventilație, conține traseele sumare/orientative ale țevilor de distribuție ale agentului termic, poziționarea termostatelor, tablourilor de comandă și a utilajelor și echipamentelor, inventar și antemăsuratoare a obiectelor.

Proiectul de instalații sanitare și canalizare va conține planuri cu toate traseele instalațiilor de alimentare cu apă și canal, poziționarea căminelor menajere sau de vizitare. Se vor figura gurile de scurgere și traseul de scurgere al sifoanelor, chiuvetelor, burlanelor, scurgeri pluviale sau alte elemente ce necesită canalizare.

Planuri tavane pt. DTAC – Reprezintă desenarea în CAD a tavanelor unei construcții cu detalii, cote de nivel, textură, instalații etc. Planul tavan este o planșă separată, scara de realizare este 1:50 și conține absolut toate detaliile unui tavan. Această sarcină este special pentru DTAC în cazul în care este solicitat separat. Sarcina de PT include Această sarcină.

SF / DALI / DTAC – Reprezintă realizarea părții desenate a documentației tip DTAC, SF sau DALI. Partea desenată conține planșele finale scara 1:50 sau 1:100, cu toate detaliile cerute de lege și de standardele interne de proiectare. Documentația din sarcină cuprinde toate planurile de nivel, plan șarpantă, plan învelitoare, 2 secțiuni, 4 fațade, detaliu împrejmuire, plan de situație existent și propus cu ridicarea topografică implementată și plan de încadrare în zonă. În cazul în care se fac mai multe tipuri de documentații, timpul rămâne neschimbat.

PT + DDE – Reprezintă realizarea părții desenate a Proiectului Tehnic. Sarcina reprezintă cuantumul calculat pe lângă sarcina SF / DALI / DTAC. Partea desenată conține toate planșele la scara 1:50 si conține toate detaliile cerute de lege și de standardele interne de proiectare. Sarcina conține toate detalii de execuție la scara 1:10, 1:20 sau 1:5 cu zonele cele mai delicate din punct de vedere al execuției. Sarcina conține planșe cu planuri de tavane. PT-ul trebuie să fie gândit astfel încât să cuprindă toate detaliile necesare execuției. Dacă e nevoie de mai multe înseamnă că proiectul este mai complex și a fost deja înmulțit timpul cu factorul corespunzător.

Memoriu DTAC + DTOE, DALI, SF sau PT+DDE – Reprezintă realizarea părții scrise a unui proiect tip DTAC+DTOE, DALI, SF sau PT+DDE. Partea scrisă conține coperta, foaia de capăt, borderou, memoriu și anexarea la documentație a actelor, avizelor și acordurilor. Sarcina conține timpul necesar realizării unei singure documentații scrise tip. În cazul în care se vor face mai multe memorii (S.F., D.A.L.I, P.T. etc.), timpul pentru fiecare extra memoriu va fi 50% din Această sarcină. Spre exemplu, pentru un P.T. si D.T.A.C. sarcina va fi calculat o dată + 50% din valoarea lui.

Antemăsuratoare Arhitectură sau Caiet de sarcini – Reprezintă realizarea antemăsurătorii necesare unui proiect sau realizarea Caietului de sarcini. Antemăsurătoarea se va realiza cu ajutorul tabelului din Excel și conține indexarea tuturor dimensiunilor din interiorul și exteriorul construcției propuse. Caietul de sarcini se va realiza precizând toate lucrările de construcții și finisaje incluse în proiect. Cuantumul de ore din sarcină se calculează pentru antemăsurătoare separat de Caietul de sarcini. Antemăsuratoarea și caietul de sarcini sunt sarcini distincte.

Devize – Reprezintă realizarea unui deviz complet pentru un proiect. Articolele de deviz se creează pe baza antemăsurătorii și se realizează în Devize Online.

Memoriu Mediu – Reprezintă realizarea unui memoriu special pentru obținerea avizului de mediu. Partea scrisă conține toate cerințele cerute de către avizator. Sarcina conține timpul de printare a 2 exemplare.

Memoriu deșeuri – Reprezintă realizarea unui memoriu special pentru obținerea avizului de gestiune a deșeurilor. Partea scrisă conține toate cerințele cerute de către avizator. Sarcina conține timpul de printare a 2 exemplare.

Proiecte de detaliu – Reprezintă desenarea în CAD a unor zone diverse unei construcții cu detalii, cote de nivel, textură, instalații etc. Desenele pot fi planuri, secțiuni, fațade, planuri tavane, desfășurare pereți, vederi speciale, detalii la diferite cote etc. Sarcina se calculează la mp. de desen final realizat. Proiectul de detaliu va conține copertă, foaie de capăt, borderou, parte desenată, parte scrisă, randări și schițe, toate după caz.

Management – Realizarea dosarului de casă și organizarea în dosar a tuturor actelor și avizelor. Timpul petrecut cu beneficiarul, colaboratorii sau avizatorii cu orice problemă legată de proiectul în desfășurare. Timpul poate însemna ședințe, corecturi, comunicare pe mail sau telefon. Timpul petrecut pentru respectarea tuturor normelor interne de calitate, timpul petrecut la ședințe interne referitoare nu numai la proiectul în curs cât și despre viitoare proiecte sau organizare internă. Sarcina se calculează ca fiind 10% din cuantumul de ore de la sarcinilor: SF / DALI / DTAC + PT + DDE + Memoriu DTAC + DTOE.

Coordonare – Atribuțiile coordonării sunt:

– Coordonarea internă a sarcinilor legate de proiectul în curs;

– menținerea relațiilor cu colaboratorii și realizarea oricărei activități care sa ducă la bun sfârșit proiectul

– obținerea de oferte de preț de la colaboratori;

– rezolvarea tuturor problemelor legate de proiect și derularea acestuia;

– crearea sarcinilor (calcul făcut de amândoi) și menținerea organizării în programul de management a tuturor persoanelor care lucrează la proiect;

– înregistrarea tuturor cheltuielilor legate strict de proiect pentru a avea la sfârșit o viziune asupra cheltuielilor;

– drumuri personale la instituții și colaboratori pentru rezolvarea oricărei probleme.

Sarcina se calculează ca fiind 35% din cuantumul de ore de la sarcinilor: SF / DALI / DTAC + PT + DDE + Memoriu DTAC + DTOE.

Desen Tehnic detaliat – Reprezintă desenele tehnice CAD de nivel P.T.+D.D.E. pentru anumite părți sau zone ale unei clădiri. Aceste desene conțin absolut toate detaliile de execuție și prezintă în mod clar orice element ce a fost executat sau urmează să fie. Scara desenelor poate varia între 1:50 și 1:1. Desenele pot fi planuri, secțiuni, fațade, planuri tavane, desfășurare pereți, vederi speciale, detalii la diferite cote etc. Sarcina se calculează la mp. de desen final realizat.

Proiectul de detaliu va conține copertă, foaie de capăt, borderou, parte desenată, parte scrisă, randări și schițe, toate dupa caz.

Capitolul 4

PROIECTAREA ÎN DETALIU

4.1 Arhitectura aplicației

Aplicația este construită pe modelul reprezentat in Fig. 4.1.

Fig 4.1 Arhitectura sistemului

Aplicația se poate folosi în orice tip de browser. Deasemenea aplicația funcționează și pe dispozitivele movile. Limbajele folosite pentru implementare in acest nivel sunt HTML, JavaScript și CSS.

Nivelul 2 este reprezentat de serverul de aplicație (Apache). Aici se preiau cererile trimise de utilizatori, în această situație ele fiind reprezentate de interogările bazei de date pentru afișarea rezultatelor estimării. Limbajul folosit pentru aplicațiile pentru partea de server este PHP.

La nivelul 3 s-a folosit baza de date MySql.

4.2 Structuri de baze de date

Aplicația folosește pentru stocarea informațiilor o baza de date cu un singur tabel, tabel 2015:

Câmpurile tabelului sunt următoarele: id, titlul_proiect, beneficiar_direct, contractor, amplasament, grad_complexitate, complexitate_rlv, orectii, suprafata_teren, suprafata_construita, scd, distanta_amplasament, distanta_avize, nr_deplasari, faze_proiect, nr_exemplare, data_estimarii, curs_euro, masuratori_teren_rlv, digitizare_rlv, digitizare_planse, proiect_rlv_memoriu, studiu_solutie, plansa_prezentare_n1, plansa_prezentare_n2, plansa_prezentare_n3, digitizare_3d, randari_schitate, randari_detaliate, 3d_fatade_sectiuni, proiect_rh_instalatii, planuri_tavane, sf_dali_dtac, pt_dde, memoriu_dtac_dtoe, antemasuratoare_arh, caiet_sarcini, devize, memoriu_mediu, memoriu_deseuri, parte_scrisa_dali, parte_scrisa_sf, coordonare, management, drumuri, situatii_neprevazute, cu, cf, ac, romtelecom, aquatim, eon, colterm, mediu, mediu_puz, ratt, enel, isu, deseuri_pmt, drumuri_pmt, cfr, dsp, sanepid, circulatie_pmt, mediu_pmt, anif, cnadr, drdp, ocpi, drumuri_judetene, isc, oar, rur, alte_avize_cj, alte_avize.

Fiecărui câmp i s-a atribuit tipul potrivit de date. Câmpul id reprezintă câmpul primar care ține evidența fiecărei înregistrări în baza de date, pote fi folosit ca referință pentru a conecta tabelul cu alte tabele sau baze de date. Câmpul id este de tipul int și se incrementează în mod automat.

4.3 Funcții principale

Pentru a înțele mai bin funcționalitatea aplicației am să comentez codul după cum urmează:

Extras din do_estimare.php:

<?php

// includerea fișierului cu datele de conectare la baza de date

include("connectsql.php");

// extras din connectsql.php:

// <?php

// $sql_host="localhost";

// $sql_user="root";

// $sql_pass="";

// $sql_db="tabel2015";

// mysql_connect($sql_host, $sql_user, $sql_pass);

// mysql_select_db($sql_db);

//?>

// se citesc datele transmise de utilizator prin formular și se atribuie aceste date unui set de variabile după cum urmează:

$sql_nr = "SELECT * FROM tab1";

$rez_nr = mysql_query($sql_nr) or die(mysql_error());

$row_nr = mysql_fetch_array($rez_nr);

$titlu_proiect = $_POST['element_1'];

$beneficiar_direct = $_POST['element_5'];

$contractorul = $_POST['element_4'];

$amplasamentul = $_POST['element_6'];

$complexitatea = $_POST['element_16'];

$complexitate_rlv = $_POST['element_18'];

$corectii = $_POST['element_17'];

$suprafata_terenului = $_POST['element_8'];

$suprafata_construita = $_POST['element_7'];

$suprafata_construita_desf = $_POST['element_9'];

$distanta_la_amplasament = $_POST['element_10'];

$distanta_la_avize = $_POST['element_11'];

$numar_deplasari = $_POST['element_102'];

//*******************************************************

//se concatenează fazele proiectului pentru a putea fi introduse ulterior în baza de date:

//*******************************************************

$concatenare = "";

$fazele_proiectului_ = array(''.''.''.''.''.''.''.''.''.''.''.''.'');

for ($i=1; $i<13; $i++)

{

if (isset($_POST['element_20_'.$i.'']))

{

$fazele_proiectului_[$i] = $_POST['element_20_'.$i.''];

}

else

{

$fazele_proiectului_[$i]='';

}

if ($fazele_proiectului_[$i]) {

$concatenare=$concatenare.' + '.$fazele_proiectului_[$i];

}

}

$faze_proiect_lg = ltrim($concatenare,' + ');

//*******************************************************

// Există variabile care iau direct valoruile introduse de utilizator ca apoi să fie introduse în baza de date, după cum urmează:

$numar_exemplare = $_POST['element_12'];

$data_evaluarii_zi = $_POST['element_13_2'];

$data_evaluarii_luna = $_POST['element_13_1'];

$data_evaluarii_an = $_POST['element_13_3'];

$data_final = $data_evaluarii_zi.'.'.$data_evaluarii_luna.'.'.$data_evaluarii_an;

$curs_euro = $_POST['element_14'];

// Principala funcție de estimare din cadrul algoritmului. Reprezintă un sistem de ecuații de gradul 2. Pentru fiecare tip de sarcină ce urmează a fi făcut se estimează empiric, trei situații diferite. Cât timp durează realizarea unui proiect pentru 3 suprafețe diferite în ordine crescătoare. S-a ales această variantă de estimare deorece durata de realizare a proiectelor nu crește direct proporțional cu suprafața luată în calcul.

function estimare($xa, $ya, $xb, $yb, $xc, $yc, $x)

{

$xap= $xa*$xa;

$xbp= $xb*$xb;

$xcp= $xc*$xc;

$xbap= $xbp-$xap;

$xcbp= $xcp-$xbp;

$xba= $xb-$xa;

$xcb= $xc-$xb;

$yba= $yb-$ya;

$ycb= $yc-$yb;

$b= ((($ycb*$xbap)-($yba*$xcbp)) / (($xcb*$xbap)-($xba*$xcbp)));

$a= (($yba-($b*$xba)) / $xbap);

$c= ($ya- ($a*$xap) – ($b*$xa));

$y=($a*$x*$x)+($b*$x)+$c;

return $y;

}

//*****************************************************************

// Calculul sarcinii de RLV / Digitizare planse analogice

//****************************************************************

// S-a considerat constanta pentru ore alocate pentru pregatirea proiectului de RLV – 4 ore

$pregatire_proiect_rlv = 4;

// Calculul sarcinii Masuratori teren – RLV – cu funcția estimare

$ore_mp_mit = 83.75;

$masuratori_in_teren_rlv=number_format($suprafata_construita_desf/$ore_mp_mit/$complexitate_rlv + $pregatire_proiect_rlv, 2);

// Calculul sarcinii Digitizare RLV – cu funcția estimare

$ore_mp_digit_rlv = 209;

$digitizare_rlv=umber_format($suprafata_construita_desf/$ore_mp_digit_rlv/$complexitate_rlv + $pregatire_proiect_rlv, 2);

// Calculul sarcinii Digitizare planse – cu funcția estimare

$ore_mp_digit_pln = 50;

$digitizare_planse=number_format($suprafata_construita_desf/$ore_mp_digit_pln/$complexitate_rlv + $pregatire_proiect_rlv, 2);

// Calculul sarcinii RLV + Memoriu – cu funcția estimare

$ore_mp_prrlv_mem = 25;

$proiect_rlv_si_memoriu=number_format($suprafata_construita_desf/$ore_mp_prrlv_mem/$complexitate_rlv + $pregatire_proiect_rlv, 2);

//*****************************************************************

/*

Pentru RLV se consideră creșterea direct proporțională. Astfel avem următoarele valori:

Măsuratori în teren – 83.75 mp/ ora

Digitizare RLV – 209 mp/ora

Digitizare planșe – 50 mp/ora

Proiect RLV + Memoriu – 25 mp/ora

Avem o variabilă de complexitate. Dacă discutam de spații complicate sau case coeficientul este 1. Dacă vorbim de spații simple (hale) totalul orelor se împarte la coeficientul 2.

Există o variabilă pentru pregatirea muncii de RLV, la orice nivel. Valoarea este de 4 ore pentru pregatirea proiectului.

*/

//*****************************************************************

// Calculul sarcinii Studiu soluție construcție

//*****************************************************************

// Calculul sarcinii Studiu soluție (planșe digitizate fără cote sau secțiuni și fațade) – cu funcția estimare

$studiu_solutie=number_format(estimare(300, 16, 1500, 20, 7000, 60, $suprafata_construita_desf) * $complexitatea*$corectii, 2);

// Calculul sarcinii Planșă prezentare nivel 1 (planuri cote generale) – cu funcția estimare

$plansa_prezentare_nivel_1 = number_format(estimare(300, 4, 3500, 8, 7000, 12, $suprafata_construita_desf), 2);

// Calculul sarcinii Planșă prezentare nivel 2 (planuri și secțiuni) – cu funcția estimare

$plansa_prezentare_nivel_2 = number_format(estimare(300, 31, 3500, 80, 7000, 120, $suprafata_construita_desf), 2);

// Calculul sarcinii Planșă prezentare nivel 3 (planuri cotate, sec, fațade) – cu funcția estimare

$plansa_prezentare_nivel_3 = number_format(estimare(300, 2, 3500, 4, 7000, 6, $suprafata_construita_desf), 2);

//*****************************************************************

// Calculul sarcinii Realizare Volume 3D – cu funcția estimare

//*****************************************************************

// Calculul sarcinii Randari schițate (planșe deja digitizate în 3D) – cu funcția estimare

$randari_schitate = number_format(estimare(300, 4, 3500, 8, 7000, 12, $suprafata_construita_desf), 2);

// Calculul sarcinii Digitizare in 3D – cu funcția estimare- se consideră că durează dublu ca durata a randărilor schițate

$digitizare_in_3d = number_format($randari_schitate * 2, 2);

// Calculul sarcinii Randări detaliate – cu funcția estimare

$randari_detaliate = number_format(estimare(300, 31, 3500, 80, 7000, 120, $suprafata_construita_desf), 2);

// Calculul sarcinii Realizare 3D pregatit pentru fațade și secțiuni – cu funcția estimare

$realizare_3d_pt_ftd_si_sct = number_format(estimare(200, 24, 1000, 48, 3000, 125, $suprafata_construita_desf), 2);

// Calculul sarcinii Proiect RH instalații complet – cu funcția estimare

$proiect_rh_instalatii_complet = number_format(estimare(300, 20, 7000, 80, 20000, 120, $suprafata_construita_desf), 2);

// Calculul sarcinii Planuri tavane pt. DTAC – cu funcția estimare- se consideră că durează de doua ori mai puțin ca un Proiect RH instalații complet

$plan_tvn_pt_dtac = number_format($proiect_rh_instalatii_complet / 2, 2);

//*****************************************************************

// Calculul sarcinii Partea desenata – cu funcția estimare

//*****************************************************************

// Calculul sarcinii SF / DALI / DTAC – cu funcția estimare

$desen_dali_sf_dtac = number_format(estimare(300, 40, 7000, 160, 20000, 240, $suprafata_construita_desf)*$corectii, 2);

// Calculul sarcinii PT + DDE – cu funcția estimare

$desen_pt_dde = number_format(estimare(300, 20, 7000, 80, 20000, 120, $suprafata_construita_desf)*$corectii, 2);

//*****************************************************************

// Calculul sarcinii PARTEA SCRISA

//*****************************************************************

// Calculul sarcinii Memoriu DTAC + DTOE – cu funcția estimare- se consideră o treime din partea desenată PT + DDE

$memoriu_dtac_dtoe = number_format($desen_pt_dde / 3, 2);

// Calculul sarcinii Antemasurătoare arhitectură – cu funcția estimare

$antms_arh = number_format(estimare(300, 12, 7000, 80, 20000, 120, $suprafata_construita_desf), 2);

// Calculul sarcinii Antemasuratoare, Caiet de sarcini – cu funcția estimare

$caiet_de_sarcini = number_format(estimare(300, 8, 7000, 30, 20000, 50, $suprafata_construita_desf), 2);

// Calculul sarcinii Devize – cu funcția estimare

$devize = number_format(estimare(300, 4, 7000, 40, 20000, 80, $suprafata_construita_desf), 2);

// Calculul sarcinii Memoriu Mediu – cu funcția estimare

$memoriu_mediu = number_format(estimare(300, 5, 7000, 8, 20000, 16, $suprafata_construita_desf), 2);

//Calculul sarcinii Memoriu Deșeuri – cu funcția estimare

$memoriu_deseuri = number_format(estimare(300, 3, 7000, 5, 20000, 7, $suprafata_construita_desf), 2);

// Calculul sarcinii Partea scrisă DALI – conf. HG 28/2008 – cu funcția estimare

$memoriu_dali = number_format(estimare(300, 8, 7000, 80, 20000, 120, $suprafata_construita_desf), 2);

// Calculul sarcinii Partea scrisă SF – conf. HG 28/2008 – cu funcția estimare

$memoriu_sf = number_format(estimare(300, 8, 7000, 80, 20000, 120, $suprafata_construita_desf), 2);

//*****************************************************************

// Calculul sarcinii Operațional

//*****************************************************************

$coordonare = number_format(($desen_pt_dde + $desen_dali_sf_dtac + $memoriu_dtac_dtoe) * 0.35, 2); //35% din ore – Desen PT + DDE + Desen DALI+SF+DTAC + Memoriu DTAC+DTOE

$management = number_format(($desen_pt_dde + $desen_dali_sf_dtac + $memoriu_dtac_dtoe) * 0.1, 2); //10% din ore – Desen PT + DDE + Desen DALI+SF+DTAC + Memoriu DTAC+DTOE

$durata_drumuri_ext = $distanta_la_amplasament / 60 * 2; // se consideră deplasarea cu o viteză medie de 60 km/ora. Drumul este dus-intors deci se inmulțește cu 2.

$durata_drumuri_urbe = $distanta_la_avize / 30 * 2; // se consideră deplasarea cu o viteză medie de 15 km/ora. Drumul este dus-intors deci se inmulțește cu 2.

$drumuri = number_format(($durata_drumuri_ext * $numar_deplasari) + ($durata_drumuri_urbe*7), 2); //se considera media avizelor ce ar fi necesare a fi obținute la un proiect 7.

$situatii_neprevazute = number_format(($desen_pt_dde + $desen_dali_sf_dtac + $memoriu_dtac_dtoe) * 0.1, 2);

//Orele alocate pentru pregătirea documentațiilor de avize sunt reprezentate de următoarele constante: $cu = 2; $cf = 2; $ac = 3; $romtelecom = 2; $aquatim = 2; $eon = 2; $colterm = 2; $mediu = 2; $mediu_puz = 8; $ratt = 2; $enel = 2; $isu = 4; $deseuri_pmt = 2; $drumuri_pmt = 4; $cfr = 4; $dsp = 4; $sanepid = 4; $circulatie_pmt = 2; $mediu_pmt = 2; $anif = 8; $cnadr = 8; $drdp = 4; $ocpi = 2; $drumuri_judetene = 2; $isc = 3; $oar = 2; $rur = 2; $alte_avize_cj = 8; $alte_avize= 8;

//Inserarea variabilelor în baza de date se face prin următoarea secvență de cod:

$sql = "INSERT INTO tab1(titlul_proiect, beneficiar_direct, contractor, amplasament, grad_complexitate, complexitate_rlv, orectii, suprafata_teren, suprafata_construita, scd, distanta_amplasament, distanta_avize, nr_deplasari, faze_proiect, nr_exemplare, data_estimarii, curs_euro, masuratori_teren_rlv, digitizare_rlv, digitizare_planse, proiect_rlv_memoriu, studiu_solutie, plansa_prezentare_n1, plansa_prezentare_n2, plansa_prezentare_n3, digitizare_3d, randari_schitate, randari_detaliate, 3d_fatade_sectiuni, proiect_rh_instalatii, planuri_tavane, sf_dali_dtac, pt_dde, memoriu_dtac_dtoe, antemasuratoare_arh, caiet_sarcini, devize, memoriu_mediu, memoriu_deseuri, parte_scrisa_dali, parte_scrisa_sf, coordonare, management, drumuri, situatii_neprevazute, cu, cf, ac, romtelecom, aquatim, eon, colterm, mediu, mediu_puz, ratt, enel, isu, deseuri_pmt, drumuri_pmt, cfr, dsp, sanepid, circulatie_pmt, mediu_pmt, anif, cnadr, drdp, ocpi, drumuri_judetene, isc, oar, rur, alte_avize_cj, alte_avize )

VALUES('$titlu_proiect', '$beneficiar_direct', '$contractorul', '$amplasamentul', '$complexitatea', '$complexitate_rlv', '$corectii', '$suprafata_terenului', '$suprafata_construita', '$suprafata_construita_desf', '$distanta_la_amplasament', '$distanta_la_avize', '$numar_deplasari', '$faze_proiect_lg', '$numar_exemplare', '$data_final', '$curs_euro', '$masuratori_in_teren_rlv', '$digitizare_rlv', '$digitizare_planse', '$proiect_rlv_si_memoriu', '$studiu_solutie', '$plansa_prezentare_nivel_1', '$plansa_prezentare_nivel_2', '$plansa_prezentare_nivel_3', '$digitizare_in_3d', '$randari_schitate', '$randari_detaliate', '$realizare_3d_pt_ftd_si_sct', '$proiect_rh_instalatii_complet', $plan_tvn_pt_dtac', '$desen_dali_sf_dtac', '$desen_pt_dde', '$memoriu_dtac_dtoe', '$antms_arh', '$caiet_de_sarcini', '$devize', '$memoriu_mediu', '$memoriu_deseuri', '$memoriu_dali', '$memoriu_sf', '$coordonare', '$management', '$drumuri', '$situatii_neprevazute', '$cu', '$cf', '$ac', '$romtelecom', '$aquatim', '$eon', '$colterm', '$mediu', '$mediu_puz', '$ratt', '$enel', '$isu', '$deseuri_pmt', '$drumuri_pmt', '$cfr', '$dsp', '$sanepid', '$circulatie_pmt', '$mediu_pmt', '$anif', '$cnadr', '$drdp', '$ocpi', '$drumuri_judetene', '$isc', '$oar', '$rur', '$alte_avize_cj','$alte_avize')";

mysql_query($sql) or die(mysql_error());

// Calculul orelor totale necesare pentru realizarea proiectului integral precum și calculul orelor totale necesare pentru realizarea sarcinilor pe fiecare categorie în parte rezultă din următoarea secvență de cod:

$ttotall = $masuratori_in_teren_rlv + $digitizare_rlv + $digitizare_planse + $proiect_rlv_si_memoriu + $studiu_solutie + $plansa_prezentare_nivel_1 + $plansa_prezentare_nivel_2 + $plansa_prezentare_nivel_3 + $digitizare_in_3d + $randari_schitate + $randari_detaliate + $realizare_3d_pt_ftd_si_sct + $proiect_rh_instalatii_complet + $plan_tvn_pt_dtac + $desen_dali_sf_dtac + $desen_pt_dde + $memoriu_dtac_dtoe + $antms_arh + $caiet_de_sarcini + $devize + $memoriu_mediu + $memoriu_deseuri + $memoriu_dali + $memoriu_sf + $coordonare + $management + $drumuri + $situatii_neprevazute + $cu + $cf + $ac + $romtelecom + $aquatim + $eon + $colterm + $mediu + $mediu_puz + $ratt + $enel + $isu + $deseuri_pmt + $drumuri_pmt + $cfr + $dsp + $sanepid + $circulatie_pmt + $mediu_pmt + $anif + $cnadr + $drdp + $ocpi + $drumuri_judetene + $isc + $oar + $rur + $alte_avize_cj + $alte_avize;

$total_1 = $masuratori_in_teren_rlv + $digitizare_rlv + $digitizare_planse + $proiect_rlv_si_memoriu;

$total_2 = $studiu_solutie + $plansa_prezentare_nivel_1 + $plansa_prezentare_nivel_2 + $plansa_prezentare_nivel_3;

$total_3 = $digitizare_in_3d + $randari_schitate + $randari_detaliate + $realizare_3d_pt_ftd_si_sct + $proiect_rh_instalatii_complet + $plan_tvn_pt_dtac;

$total_4 = $desen_dali_sf_dtac + $desen_pt_dde;

$total_5 = $memoriu_dtac_dtoe + $antms_arh + $caiet_de_sarcini + $devize + $memoriu_mediu + $memoriu_deseuri + $memoriu_dali + $memoriu_sf;

$total_6 = $coordonare + $management + $drumuri + $situatii_neprevazute;

$total_7 = $cu + $cf + $ac + $romtelecom + $aquatim + $eon + $colterm + $mediu + $mediu_puz + $ratt + $enel + $isu + $deseuri_pmt + $drumuri_pmt + $cfr + $dsp + $sanepid + $circulatie_pmt + $mediu_pmt + $anif + $cnadr + $drdp + $ocpi + $drumuri_judetene + $isc + $oar + $rur + $alte_avize_cj + $alte_avize; ?>

Afișare în pagină a rezultatelor se face prin următoarea secvență de cod:

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Date generale proiect</title>

<link rel="stylesheet" type="text/css" href="view.css" media="all">

<script type="text/javascript" src="view.js"></script>

<script type="text/javascript" src="calendar.js"></script>

</head>

<body id="main_body" >

<img id="top" src="top.png" alt="">

<div id="form_container">

<h1><a>Date 2</a></h1>

<form id="form_2" class="appnitro" method="post" action="">

<input class="val_af no_frame" type="text" name="" value="<?php echo "Total: ".$ttotall; ?>" readonly><br /><br />

<label class="description" >Titlul proiectului: <span class="typee2"><?php echo $titlu_proiect; ?></span></label>

<label class="description" >Beneficiarul direct: <span class="typee2"><?php echo $beneficiar_direct; ?></span></label>

<label class="description" >Contractorul: <span class="typee2"><?php echo $contractorul; ?></span></label>

<label class="description" >Amplasamentul: <span class="typee2"><?php echo $amplasamentul; ?></span></label>

<label class="description" >Gradul de complexitate al programului: <span class="typee2"><?php echo $complexitatea; ?></span></label>

<label class="description" >Complexitate RLV: <span class="typee2"><?php echo $complexitate_rlv; ?></span></label>

<label class="description" >Corecții: <span class="typee2"><?php echo $corectii; ?></span></label>

<label class="description" >Suprafața terenului: <span class="typee2"><?php echo $suprafata_terenului; ?></span></label>

<label class="description" >Suprafața construită: <span class="typee2"><?php echo $suprafata_construita; ?></span></label>

<label class="description" >Suprafața construită desfășurată: <span class="typee2"><?php echo $suprafata_construita_desf; ?></span></label>

<label class="description" >Distanța în km până la amplasament: <span class="typee2"><?php echo $distanta_la_amplasament; ?></span></label>

<label class="description" >Distanța în km până la instituțiile avizatoare: <span class="typee2"><?php echo $distanta_la_avize; ?></span></label>

<label class="description" >Nr. de deplasări contractate: <span class="typee2"><?php echo $numar_deplasari; ?></span></label>

<label class="description" >Fazele proiectului: <br /><span class="typee2"><?php echo $faze_proiect_lg; ?></span></label>

<label class="description" >Numărul de exemplare ce trebuiesc tipărite: <span class="typee2"><?php echo $numar_exemplare; ?></span></label>

<label class="description" >Data evaluării: <span class="typee2"><?php echo $data_final; ?></span></label>

<label class="description" >Cursul EURO la data evaluării: <span class="typee2"><?php echo $curs_euro; ?></span></label>

<br /><br />

<label class="description" for="elm_1">RLV / Digitizare planse analogice <input class="val_af no_frame" type="text" name="" value="<?php echo $total_1; ?>" readonly></label>

<input class="checkb" id="elm_1_1" type="checkbox" name="elm_1_1" value="<?php echo $masuratori_in_teren_rlv; ?>"><label class="choice" for="elm_1_1">Masuratori teren – RLV <input class="val_af" type="text" name="" value="<?php echo $masuratori_in_teren_rlv; ?>" readonly></label>

<input class="checkb" id="elm_1_2" type="checkbox" name="elm_1_2" value="<?php echo $digitizare_rlv; ?>"><label class="choice" for="elm_1_2">Digitizare RLV <input class="val_af" type="text" name="" value="<?php echo $digitizare_rlv; ?>" readonly></label>

<input class="checkb" id="elm_1_3" type="checkbox" name="elm_1_3" value="<?php echo $digitizare_planse; ?>"><label class="choice" for="elm_1_3">Digitizare planse <input class="val_af" type="text" name="" value="<?php echo $digitizare_planse; ?>" readonly></label>

<input class="checkb" id="elm_1_4" type="checkbox" name="elm_1_4" value="<?php echo $proiect_rlv_si_memoriu; ?>"><label class="choice" for="elm_1_4">Proiect RLV + Memoriu <input class="val_af" type="text" name="" value="<?php echo $proiect_rlv_si_memoriu; ?>" readonly></label>

<br />

<label class="description" for="elm_2">Studiu solutie constructie <input class="val_af no_frame" type="text" name="" value="<?php echo $total_2; ?>" readonly></label>

<input class="checkb" id="elm_2_1" type="checkbox" name="elm_2_1" value="<?php echo $studiu_solutie; ?>"><label class="choice" for="elm_2_1">Studiu solutie (planse digitizate fara cote sau sec. si fatade) <input class="val_af" type="text" name="" value="<?php echo $studiu_solutie; ?>" readonly></label>

<input class="checkb" id="elm_2_2" type="checkbox" name="elm_2_2" value="<?php echo $plansa_prezentare_nivel_1; ?>"><label class="choice" for="elm_2_2">Plansa prezentare nivel 1 (planuri cote gen) <input class="val_af" type="text" name="" value="<?php echo $plansa_prezentare_nivel_1; ?>" readonly></label>

<input class="checkb" id="elm_2_3" type="checkbox" name="elm_2_3" value="<?php echo $plansa_prezentare_nivel_2; ?>"><label class="choice" for="elm_2_3">Plansa prezentare nivel 2 (planuri si sec) <input class="val_af" type="text" name="" value="<?php echo $plansa_prezentare_nivel_2; ?>" readonly></label>

<input class="checkb" id="elm_2_4" type="checkbox" name="elm_2_4" value="<?php echo $plansa_prezentare_nivel_3; ?>"><label class="choice" for="elm_2_4">Plansa prezentare nivel 3 (planuri cotate, sec, fatade) <input class="val_af" type="text" name="" value="<?php echo $plansa_prezentare_nivel_3; ?>" readonly></label>

<br />

<label class="description" for="elm_3">Realizare Volume 3D <input class="val_af no_frame" type="text" name="" value="<?php echo $total_3; ?>" readonly></label>

<input class="checkb" id="elm_3_1" type="checkbox" name="elm_3_1" value="<?php echo $digitizare_in_3d; ?>"><label class="choice" for="elm_3_1">Digitizare in 3D <input class="val_af" type="text" name="" value="<?php echo $digitizare_in_3d; ?>" readonly></label>

<input class="checkb" id="elm_3_2" type="checkbox" name="elm_3_2" value="<?php echo $randari_schitate; ?>"><label class="choice" for="elm_3_2">Randari schitate (planse deja digitizate in 3D) <input class="val_af" type="text" name="" value="<?php echo $randari_schitate; ?>" readonly></label>

<input class="checkb" id="elm_3_3" type="checkbox" name="elm_3_3" value="<?php echo $randari_detaliate; ?>"><label class="choice" for="elm_3_3">Randari detaliate <input class="val_af" type="text" name="" value="<?php echo $randari_detaliate; ?>" readonly></label>

<input class="checkb" id="elm_3_4" type="checkbox" name="elm_3_4" value="<?php echo $realizare_3d_pt_ftd_si_sct; ?>"><label class="choice" for="elm_3_4">Realizare 3D pregatit pentru fatade si sectiuni <input class="val_af" type="text" name="" value="<?php echo $realizare_3d_pt_ftd_si_sct; ?>" readonly></label>

<input class="checkb" id="elm_3_5" type="checkbox" name="elm_3_5" value="<?php echo $proiect_rh_instalatii_complet; ?>"><label class="choice" for="elm_3_5">Proiect RH instalatii complet <input class="val_af" type="text" name="" value="<?php echo $proiect_rh_instalatii_complet; ?>" readonly></label>

<input class="checkb" id="elm_3_6" type="checkbox" name="elm_3_6" value="<?php echo $plan_tvn_pt_dtac; ?>"><label class="choice" for="elm_3_6">Planuri tavane pt. DTAC <input class="val_af" type="text" name="" value="<?php echo $plan_tvn_pt_dtac; ?>" readonly></label>

<br />

<label class="description" for="elm_4">Partea desenata <input class="val_af no_frame" type="text" name="" value="<?php echo $total_4; ?>" readonly></label>

<input class="checkb" id="elm_4_1" type="checkbox" name="elm_4_1" value="<?php echo $desen_dali_sf_dtac; ?>"><label class="choice" for="elm_4_1">SF / DALI / DTAC <input class="val_af" type="text" name="" value="<?php echo $desen_dali_sf_dtac; ?>" readonly></label>

<input class="checkb" id="elm_4_2" type="checkbox" name="elm_4_2" value="<?php echo $desen_pt_dde; ?>"><label class="choice" for="elm_4_2">PT + DDE <input class="val_af" type="text" name="" value="<?php echo $desen_pt_dde; ?>" readonly></label><br />

<label class="description" for="elm_5">Partea scrisa <input class="val_af no_frame" type="text" name="" value="<?php echo $total_5; ?>" readonly></label>

<input class="checkb" id="elm_5_1" type="checkbox" name="elm_5_1" value="<?php echo $memoriu_dtac_dtoe; ?>"><label class="choice" for="elm_5_1">Memoriu DTAC + DTOE <input class="val_af" type="text" name="" value="<?php echo $memoriu_dtac_dtoe; ?>" readonly></label>

<input class="checkb" id="elm_5_2" type="checkbox" name="elm_5_2" value="<?php echo $antms_arh; ?>"><label class="choice" for="elm_5_2">Antemasuratoare ARHITECTURA<input class="val_af" type="text" name="" value="<?php echo $antms_arh; ?>" readonly></label>

<input class="checkb" id="elm_5_3" type="checkbox" name="elm_5_3" value="<?php echo $caiet_de_sarcini; ?>"><label class="choice" for="elm_5_3">Caiet de sarcini <input class="val_af" type="text" name="" value="<?php echo $caiet_de_sarcini; ?>" readonly></label>

<input class="checkb" id="elm_5_4" type="checkbox" name="elm_5_4" value="<?php echo $devize; ?>"><label class="choice" for="elm_5_4">Devize <input class="val_af" type="text" name="" value="<?php echo $devize; ?>" readonly></label>

<input class="checkb" id="elm_5_5" type="checkbox" name="elm_5_5" value="<?php echo $memoriu_mediu; ?>"><label class="choice" for="elm_5_5">Memoriu Mediu <input class="val_af" type="text" name="" value="<?php echo $memoriu_mediu; ?>" readonly></label>

<input class="checkb" id="elm_5_6" type="checkbox" name="elm_5_6" value="<?php echo $memoriu_deseuri; ?>"><label class="choice" for="elm_5_6">Memoriu deseuri <input class="val_af" type="text" name="" value="<?php echo $memoriu_deseuri; ?>" readonly></label>

<input class="checkb" id="elm_5_7" type="checkbox" name="elm_5_7" value="<?php echo $memoriu_dali; ?>"><label class="choice" for="elm_5_7">Partea scrisa DALI – conf. HG 28/2008 <input class="val_af" type="text" name="" value="<?php echo $memoriu_dali; ?>" readonly></label>

<input class="checkb" id="elm_5_8" type="checkbox" name="elm_5_8" value="<?php echo $memoriu_sf; ?>"><label class="choice" for="elm_5_8">Partea scrisa SF – conf. HG 28/2008 <input class="val_af" type="text" name="" value="<?php echo $memoriu_sf; ?>" readonly></label><br />

<label class="description" for="elm_6">Operațional <input class="val_af no_frame" type="text" name="" value="<?php echo $total_6; ?>" readonly></label>

<input class="checkb" id="elm_5_1" type="checkbox" name="elm_6_1" value="<?php echo $coordonare; ?>"><label class="choice" for="elm_5_1">Coordonare <input class="val_af" type="text" name="" value="<?php echo $coordonare; ?>" readonly></label><br />

<label class="description" for="elm_7">DOCUMENTE, ACORDURI SI AVIZE <input class="val_af no_frame" type="text" name="" value="<?php echo $total_7; ?>" readonly></label>

<input class="checkb" id="elm_8_1" type="checkbox" name="elm_8_1" value="<?php echo $cu; ?>"><label class="choice" for="elm_8_1">Obtinerea certificatului de urbanism <input class="val_af" type="text" name="" value="<?php echo $cu; ?>" readonly></label>

<input class="checkb" id="elm_8_2" type="checkbox" name="elm_8_2" value="<?php echo $cf; ?>"><label class="choice" for="elm_8_2">Obtinere extras de carte funciara la zi <input class="val_af" type="text" name="" value="<?php echo $cf; ?>" readonly></label>

<input class="checkb" id="elm_8_3" type="checkbox" name="elm_8_3" value="<?php echo $ac; ?>"><label class="choice" for="elm_8_3">Autorizație construire / desfintare <input class="val_af" type="text" name="" value="<?php echo $ac; ?>" readonly></label>

<input class="checkb" id="elm_8_4" type="checkbox" name="elm_8_4" value="<?php echo $romtelecom; ?>"><label class="choice" for="elm_8_4">Aviz Romtelecom <input class="val_af" type="text" name="" value="<?php echo $romtelecom; ?>" readonly></label>

<input class="checkb" id="elm_8_5" type="checkbox" name="elm_8_5" value="<?php echo $aquatim; ?>"><label class="choice" for="elm_8_5">Aviz Aquatim <input class="val_af" type="text" name="" value="<?php echo $aquatim; ?>" readonly></label>

<input class="checkb" id="elm_8_6" type="checkbox" name="elm_8_6" value="<?php echo $eon; ?>"><label class="choice" for="elm_8_6">Aviz E-On Gaz <input class="val_af" type="text" name="" value="<?php echo $eon; ?>" readonly></label>

<input class="checkb" id="elm_8_7" type="checkbox" name="elm_8_7" value="<?php echo $colterm; ?>"><label class="choice" for="elm_8_7">Aviz Colterm <input class="val_af" type="text" name="" value="<?php echo $colterm; ?>" readonly></label>

<input class="checkb" id="elm_8_8" type="checkbox" name="elm_8_8" value="<?php echo $mediu; ?>"><label class="choice" for="elm_8_8">Aviz Agentia de Protectia mediului <input class="val_af" type="text" name="" value="<?php echo $mediu; ?>" readonly></label>

<input class="checkb" id="elm_8_9" type="checkbox" name="elm_8_9" value="<?php echo $mediu_puz; ?>"><label class="choice" for="elm_8_9">Aviz Agentia de Protectia mediului PUZ <input class="val_af" type="text" name="" value="<?php echo $mediu_puz; ?>" readonly></label>

<input class="checkb" id="elm_8_10" type="checkbox" name="elm_8_10" value="<?php echo $ratt; ?>"><label class="choice" for="elm_8_10">Aviz RATT <input class="val_af" type="text" name="" value="<?php echo $ratt; ?>" readonly></label>

<input class="checkb" id="elm_8_11" type="checkbox" name="elm_8_11" value="<?php echo $enel; ?>"><label class="choice" for="elm_8_11">Aviz Enel <input class="val_af" type="text" name="" value="<?php echo $enel; ?>" readonly></label>

<input class="checkb" id="elm_8_12" type="checkbox" name="elm_8_12" value="<?php echo $isu; ?>"><label class="choice" for="elm_8_12">Aviz Inspectoratul pentru Situatiile de Urgenta <input class="val_af" type="text" name="" value="<?php echo $isu; ?>" readonly></label>

<input class="checkb" id="elm_8_13" type="checkbox" name="elm_8_13" value="<?php echo $deseuri_pmt; ?>"><label class="choice" for="elm_8_13">Aviz Biroul de gestiune deseuri al Primariei Timisoara <input class="val_af" type="text" name="" value="<?php echo $deseuri_pmt; ?>" readonly></label>

<input class="checkb" id="elm_8_14" type="checkbox" name="elm_8_14" value="<?php echo $drumuri_pmt; ?>"><label class="choice" for="elm_8_14">Aviz Drumuri Primaria Timisoara <input class="val_af" type="text" name="" value="<?php echo $drumuri_pmt; ?>" readonly></label>

<input class="checkb" id="elm_8_15" type="checkbox" name="elm_8_15" value="<?php echo $cfr; ?>"><label class="choice" for="elm_8_15">Aviz CFR <input class="val_af" type="text" name="" value="<?php echo $cfr; ?>" readonly></label>

<input class="checkb" id="elm_8_16" type="checkbox" name="elm_8_16" value="<?php echo $dsp; ?>"><label class="choice" for="elm_8_16">Aviz Directia de Sanatate Publica <input class="val_af" type="text" name="" value="<?php echo $dsp; ?>" readonly></label>

<input class="checkb" id="elm_8_17" type="checkbox" name="elm_8_17" value="<?php echo $sanepid; ?>"><label class="choice" for="elm_8_17">Aviz Inspectoratul de Politie Sanitara si Medicina Preventiva (Sanepid) <input class="val_af" type="text" name="" value="<?php echo $sanepid; ?>" readonly></label>

<input class="checkb" id="elm_8_18" type="checkbox" name="elm_8_18" value="<?php echo $circulatie_pmt; ?>"><label class="choice" for="elm_8_18">Aviz Comisia de circulatie Primaria Timisoara <input class="val_af" type="text" name="" value="<?php echo $circulatie_pmt; ?>" readonly></label>

<input class="checkb" id="elm_8_19" type="checkbox" name="elm_8_19" value="<?php echo $mediu_pmt; ?>"><label class="choice" for="elm_8_19">Aviz Biroul de mediu al Primariei Timisoara <input class="val_af" type="text" name="" value="<?php echo $mediu_pmt; ?>" readonly></label>

<input class="checkb" id="elm_8_20" type="checkbox" name="elm_8_20" value="<?php echo $anif; ?>"><label class="choice" for="elm_8_20">Aviz ANIF <input class="val_af" type="text" name="" value="<?php echo $anif; ?>" readonly></label>

<input class="checkb" id="elm_8_21" type="checkbox" name="elm_8_21" value="<?php echo $cnadr; ?>"><label class="choice" for="elm_8_21">Aviz CNADR <input class="val_af" type="text" name="" value="<?php echo $cnadr; ?>" readonly></label>

<input class="checkb" id="elm_8_22" type="checkbox" name="elm_8_22" value="<?php echo $drdp; ?>"><label class="choice" for="elm_8_22">Aviz DRDP <input class="val_af" type="text" name="" value="<?php echo $drdp; ?>" readonly></label>

<input class="checkb" id="elm_8_23" type="checkbox" name="elm_8_23" value="<?php echo $ocpi; ?>"><label class="choice" for="elm_8_23">Aviz OCPI <input class="val_af" type="text" name="" value="<?php echo $ocpi; ?>" readonly></label>

<input class="checkb" id="elm_8_24" type="checkbox" name="elm_8_24" value="<?php echo $drumuri_judetene; ?>"><label class="choice" for="elm_8_24">Aviz drumuri judetene <input class="val_af" type="text" name="" value="<?php echo $drumuri_judetene; ?>" readonly></label>

<input class="checkb" id="elm_8_25" type="checkbox" name="elm_8_25" value="<?php echo $isc; ?>"><label class="choice" for="elm_8_25">Aviz Inspectoratul de Siguranta in Constructii <input class="val_af" type="text" name="" value="<?php echo $isc; ?>" readonly></label>

<input class="checkb" id="elm_8_26" type="checkbox" name="elm_8_26" value="<?php echo $oar; ?>"><label class="choice" for="elm_8_26">Inregistrare OAR <input class="val_af" type="text" name="" value="<?php echo $oar; ?>" readonly></label>

<input class="checkb" id="elm_8_27" type="checkbox" name="elm_8_27" value="<?php echo $rur; ?>"><label class="choice" for="elm_8_27">Inregistrare RUR <input class="val_af" type="text" name="" value="<?php echo $rur; ?>" readonly></label>

<input class="checkb" id="elm_8_28" type="checkbox" name="elm_8_28" value="<?php echo $alte_avize_cj; ?>"><label class="choice" for="elm_8_28">Aviz Consiliul judetean – altele <input class="val_af" type="text" name="" value="<?php echo $alte_avize_cj; ?>" readonly></label>

<input class="checkb" id="elm_8_29" type="checkbox" name="elm_8_29" value="<?php echo $alte_avize; ?>"><label class="choice" for="elm_8_29">Alte avize <input class="val_af" type="text" name="" value="<?php echo $alte_avize; ?>" readonly></label>

</form> <div id="footer"></div> </div>

</body>

</html>

Capitolul 5

UTILIZAREA APLICAȚIEI

5.1 Introducerea datelor de intrare

5.1.1 Pagina principală

Fig. 5.1 Pagina principală

Fig. 5.2 Pagina principală

După cum se poate observa în figurile 5.1 și 5.2, în pagina principală a aplicației i se cere utilizatorului să introducă următoarele date de intrare: titlul proiectului, beneficiarul direct, contractorul, amplasamentul, gradul de complexitate al programului, complexitate RLV, corecții, suprafața terenului, suprafața construită, suprafața construită desfășurată, distanța în km până la instituțiile avizatoare, numărul de deplasări contractate, fazele proiectului, numărul de exemplare ce trebuiesc tipărite, data evaluării, cursul EURO la data evaluării

Odată introduce aceste date de intrare prin apăsarea butonului Estimează aplicația rulează algoritmul din fișierul do_estimare.php aflat pe server și afișează informația rezultată. Toate informațiile introduse împreună cu rezultatele obținute se stocheză în baza de date.

5.1.2 Afișarea rezultatelor

Fig. 5.3 – Afișarea rezultatelor

Fig. 5.4 – Afișarea rezultatelor

După acționarea butonului Estimează aplicația afișează valorile umătoare:

– Titlul proiectului

– Beneficiarul direct

– Contractorul

– Amplasamentul

– Gradul de complexitate al programului

– Complexitate RLV

– Corecții

– Suprafața terenului

– Suprafața construită

– Suprafața construită desfășurată

– Distanța în km până la amplasament

– Distanța în km până la instituțiile avizatoare

– Nr. de deplasări contractate

– Fazele proiectului

– Numărul de exemplare ce trebuiesc tipărite

– Data evaluării

– Cursul EURO la data evaluări

Din calcul aplicația afișează orele estimate pentru:

– RLV / Digitizare planșe analogice: Măsuratori teren – RLV, Digitizare RLV, Digitizare planșe, Proiect RLV + Memoriu;

– Studiu soluție construcție: Studiu soluție (planșe digitizate fără cote sau sec. și fațade), Planșa prezentare nivel 1 (planuri cote generale), Planșa prezentare nivel 2 (planuri și secțiuni), Planșa prezentare nivel 3 (planuri cotate, secțiuni, fațade);

– Realizare Volume 3D: Digitizare in 3D, Randări schițate (planșe deja digitizate în 3D), Randăi detaliate, Realizare 3D pregătit pentru fațade și secțiuni, Proiect RH instalații complet, Planuri tavane pt. DTAC;

– Partea desenată: SF / DALI / DTAC, PT + DDE;

– Partea scrisă: Memoriu DTAC + DTOE, Antemăsurătoare arhitectură, Caiet de sarcini, Devize, Memoriu Mediu, Memoriu deșeuri, Partea scrisă DALI – conf. HG 28/2008, Partea scrisă SF – conf. HG 28/2008, Operațional, Coordonare.

– Obținerea următoarelor documente, acorduri și avize: Obținerea certificatului de urbanism, Obținere extras de carte funciara la zi, Autorizație construire / desfințare, Aviz Romtelecom, Aviz Aquatim, Aviz E-On Gaz, Aviz Colterm, Aviz Agenția de Protecția mediului, Aviz Agenția de Protecția mediului PUZ, Aviz RATT, Aviz Enel, Aviz Inspectoratul pentru Situații de Urgență, Aviz Biroul de gestiune deșeuri al Primăriei Timișoara, Aviz Drumuri Primăria Timișoara, Aviz CFR, Aviz Direcția de Sănătate Publică, Aviz Inspectoratul de Poliție Sanitară și Medicină Preventivă (Sanepid), Aviz Comisia de circulație Primăria Timișoara, Aviz Biroul de mediu al Primăriei Timișoara, Aviz ANIF, Aviz CNADR, Aviz DRDP, Aviz OCPI, Aviz drumuri județene, Aviz Inspectoratul de Siguranță în Construcții, Înregistrare OAR, Înregistrare RUR, Aviz Consiliul județean – altele, Alte avize.

CONCLUZII

Aplicația realizată îndeplinește condițiile temei propuse și atinge principalele obiective stabilite, astfel:

Pagina de internet este și ușor de utilizat iar prima este reprezentată de o interfață grafciă simplă ce poate să fie parcursă repede. Prin intermediul acestei prime pagini se introduc datele necesare estimării. Câmpurile folosite sunt validate cu ajutorul unui JavaScript, neputându-se continua spre partea a doua fără completarea integrală a formularului.

A doua parte a aplicației estimează orele necesare pentru fiecare sarcină în parte efectivă și afișează eficient rezultatele. Acestea sunt afișate într-un format ușor de citit și se pot salva pe disc. Tot aici se calculează totalul orelor necesare pentru a elabora un pachet întreg de documentații și totalul orelor pe categorii de documentații.

În concluzie, s-a creat o aplicație practică care va ajuta activitatea de organizare a proiectelor în cadrul societății comerciale și poate a altor societăți de profil.

Toate estimările ce se calculează cu ajutorul aplicației se rețin într-o bază de date accesibilă oricând.

Aplicația este online și se poate folosi de persoanele desemnate din cadrul societății pentru reazalizarea de estimări pentru viitoare proiecte.

Bibliografie

[Tay98] Dave Taylor, Creearea paginilor web cu HTML 4

[DuB01] Paul, DuBois, My SQL

[McC02] Bill McCarty, PHP4

[Cas99] Jesus Castagnetto,Harish Rawat,Sascha Schumann, Chris Scollo,

Deepak Veliath, Professional PHP Programming

[***11,a] http://php.net/manual/en/function.phpinfo.php

[***11,b] http://www.victorkapra.ro

[***11,c] Cursuri gratuite HTML CSS PHP AJAX: http://www.marplo.net

[***11,d] Online web tutorials http://www.w3schools.com/

[***11,e] http://php.about.com/od/learnphp/p/learn_php_free.htm

[***11,f] http://dev.mysql.com/doc/refman/4.1/en/what-is-mysql.html

[***11,g] Baze de date MYSQL: http://dev.mysql.com/doc/refman/5.1/en/database-use.html

[***11,h] http://www.w3schools.com/php/php_ref_mysqli.asp

ANEXE

Serverul XAMPP Anexa 1

Anexa 2

Baza de date – PhpMyAdmin

Anexa 3

Aplicația de estimare proiect

DECLARAȚIE DE AUTENTICITATE

A

LUCRĂRII DE FINALIZARE A STUDIILOR

Titlul lucrării Estimarea timpilor de realizare a documentațiilor pentru activitatea de proiectare în arhictectură

Autorul lucrării Gurza Vlad-Gabriel

Lucrarea de finalizare a studiilor este elaborată în vederea susținerii examenului de finalizare a studiilor organizat de către Facultatea de Inginerie Electrică și Tehnologia Informației din cadrul Universității din Oradea, sesiunea IULIE a anului universitar 2014.

Prin prezenta, subsemnatul Gurza Vlad-Gabriel

[anonimizat], CNP

declar pe proprie răspundere că această lucrare a fost scrisă de către mine, fără nici un ajutor neautorizat și că nici o parte a lucrării nu conține aplicații sau studii de caz publicate de alți autori.

Declar, de asemenea, că în lucrare nu există idei, tabele, grafice, hărți sau alte surse folosite fără respectarea legii române și a convențiilor internaționale privind drepturile de autor.

Oradea,

Data

10.06.2015 Semnătura

Similar Posts