Webdesign profesionist

Webdesign profesionist

Share

Asta e viata mea....

03/07/2018

Incepand de azi , la Web Ro Design, vom avea un serviciu dedicat de GDPR destinat companiilor care detin un site sau un magazin online!

23/06/2017

Indiferent de pagina de la care am ajuns aici, vom afisa continutul cosului. In situatiile obisnuite, cand un utilizator executa click pe „View Cart”, aceasta este singura parte de cod care este executata, astfel:


if($_SESSION['cart']&&array_count_values($_SESSION['cart']))
display_cart($_SESSION['cart']);
else
{ echo 'There are no items in your cart';
echo ''
}

Asa cm puteti vedea in acest cod , daca avem un cos care contine ceva, atunci vom apela functia display_cart(). In cazul in care cosul este gol, vom oferi utilizatorului un mesaj care sa il anunte acest lucru.

Functia display_cart() afiseaza continutul cosului intr-un format HTML lizibil. Codul pentru aceasta functie poate fi gasit in output_fns.php si il vom vedea mai jos:

Functia display_cart() din output_fns.php
http://webrodesign.ro/vizualizarea-cosului-virtual-de-cumparaturi/

Vizualizarea cosului virtual de cumparaturi | Web Ro Design Indiferent de pagina de la care am ajuns aici, vom afisa continutul cosului. In situatiile obisnuite, cand un utilizator executa click pe "View Cart", aceasta

Implementarea cosului virtual de cumparaturi | Web Ro Design 22/06/2017

Implementarea cosului virtual de cumparaturi

Intreaga functionalitate de cos virtual de cumparaturi se invarte in jurul unei variabile sesiune, numita cart. Aceasta este un tablou asociativ care are drept chei ISBN-urile, iar ca valori cantitatile. De exemplu, daca adaug un singur exemplar al unei carti in cosul meu virtual de cumparaturi, atunci tabloul va contine:

0672317842 => 1

adica, un exemplar al cartii care are ISBN-ul 0672317842. Cand adaugam produse in cos acestea vor fi adaugate in tablou. Cand vizualizam cosul virtual, vom utiliza tabloulcart pentru a cauta detaliile complete ale articolelor din baza de date.

De asemenea, mai utilizam doua variabile sesiune pentru a controla ceea ce este afisat in antet, adica numarul total de articole (Total items) si valoarea totala a acestora (Total Price). Aceste variabile se numesc „items”, respectiv „total_price”.

Utilizarea scriptului show_cart.php

Haideti sa studiem modul in care este implementat codul cosului virtual, vizualizand scriptul show_cart.php. Acesta este scriptul care afiseaza pagina pe care o vom vizita daca executam click pe oricare din legaturile „View Cart” sau „Add to Cart”. Daca apelam show_cart.php fara niciun parametru , atunci vom vedea continutul cosului. Daca il apelam cu un ISBN ca parametru, atunci va fi adaugat in cos articolul avand acel ISBN.

Vom vedea , la un moment dat, alte doua optiuni. Exista un buton „Save Changes” pe care il putem utiliza pentru a modifica numarul de articole din cos. Pentru aceasta putem modifica direct cantitatile si executa click pe „Save Changes”. Acesta este de fapt un buton de trimitere care ne duce inapoi la scriptul show_cart.php pentru a actualiza cosul. In plus, mai exista un buton „Go to Checkout” pe care utilizatorul poate executa click atunci cand este pregatit sa paraseasca siteul. Vom reveni la asta. Deocamdata vreau sa fisam scriptul show_cart.php mai jos:

http://webrodesign.ro/implementarea-cosului-virtual-de-cumparaturi/

Implementarea cosului virtual de cumparaturi | Web Ro Design Tutoriale PHP, implementarea cosului virtual de cumparaturi in php

22/06/2017

Un nou articol in categoria "Proiectarea unui cos virtual de cumparaturi utilizand PHP"

http://webrodesign.ro/prezentarea-detaliilor-despre-carte/

Script PHP Prezentarea detaliilor despre carte | Web Ro Design Tuturial PHP - Realizarea unui magazin online folosind PHP

Photos 20/06/2017

Un nou articol pe siteul meu despre realizarea unui magazin online cu ajutorul PHP:

http://webrodesign.ro/listarea-cartilor-dintr-o-categorie/

Procesul pentru listarea cartilor dintr-o categorie este asemanator cu cel pentru listarea categoriilor. Scriptul care realizeaza acest lucru se numeste show_cat.php si este prezentat mai jos:

[php]


[/php]

acest script php are o structura foarte asemanatoare cu pagina index, diferenta fiind aceea ca returnam carti si nu categorii. Incepem, ca de obicei cu functia session_start() si apoi realizam conversia ID-ului de categorie , pe care l-am transferat, intr-un nume de categorie, utilizand functia get_category_name() in modul urmator:

[php]
$name = get_category_name($catid);
[/php]

Aceasta functie cauta numele categoriei in baza de date. Ea este prezentata mai jos:

[php]
function get_category_name($catid)
{
// interogheaza baza de date pentru a obtine numele corespunzator pentru ID-ul categoriei
$catid = intval($catid);
$conn = dbconnect();
$query = "select catname from categorie where catid =$catid";
$result = @$conn->query($query);
if(!result)
return false;
$num_cats = @$result->num_rows;
if($num_cats == 0)
return false;
$row = $result->fetch_object();
return $row->catname;
}
[/php]

D**a ce am regasit numele categoriei , putem reda un anten HTML si putem incepe regasirea cartilor din baza de date care fac parte din categoria aleasa, in modul urmator:

[php]
$book_array = get_books($catid);
display_books($book_array);
[/php]

Functiile get_books() si display_books() sunt foarte asemanatoare cu functiile get_categories() si display_categories(), deci nu le vom studia acum. Singura diferenta este aceea ca returnam informatii din tabela "books" si nu din tabela "categories".

Functia display_books() ofera o legatura la fiecare carte din categorie prin intermediul scriptului show_book.php. Din nou, fiecarei legaturi ii este trecut ca sufix un parametru. De data aceasta, parametrul este ISBN-ul cartii.

La sfarsitul scriptului show_cat.php exista cod pentru afisarea unor functii suplimentare in cazul in care este deschis o sesiune de lucru a unui administrator. Vom studia toate acestea in sectiunea referitoare la functiile pentru administrare.

Programare orientata pe obiecte sau procedural? (III) | Web Ro Design 17/05/2016

Programarea orientata pe obiecte sau procedural? (III)
http://webrodesign.ro/programare-orientata-pe-obiecte-sau-procedural-iii/

Implementarea evidentiata in articolul anterior pune in evidenta cateva probleme specifice programarii procedurale pe care le detaliem in continuare.

Limbajele de programare procedurale nu permit stabilirea unor legaturi clare intre datele care trebuie prelucrate si functiile responsabile cu prelucrarea lor. Structura de date „ListaCarti” este definita separat de definitiile functiilor „Initializare”, „Adaugare”, „Cautare”, „Catalogare”, care o folosesc. Limbajul de programare nu pune la dispozitie o entitate conceptuala care sa reuneasca datele de prelucrat cu functiile utilizate pentru managementul lor. In cazul programelor care implica numeroare structuri de date aceasta separare intre date si metode de prelucrare poate face intretinerea programului dificila.
Functia „Cautare” este o functie auxiliara a carei existenta nu este ceruta de specificatiile problemei. Ea a fost introdusa de programator in procesul de construire a solutiei. Totusi, functia „Cautare” poate fi apelata direct din programul principal, la fel ca si functiile reprezentand operatii mentionate in descrierea problemei. In consecinta, coul client reprezentat de functia main() poate avea acces si utiliza detalii specifice implementarii. In cadrul articolelor noastre , prin cod-client pentru o componenta software vom intelege orice portiune de cod care utilizeaza serviciile acelei componente. Caracteristica prezentata face ca solutia sa fie mai putin flexibila , deoarece schimbarea detaliilor de implementare ar putea afecta codul-client. Ideal ar fi sa dispunem de mecanisme de protectie care sa impiedice utilizarea de catre codul-client a unor elemente specifice implementarii, codul-client ar trebui sa aiba acces numai la o interfata prestabilita.
Structura de date „ListaCarti” poate fi accesata direct din functia main () fara a utiliza functiile special proiectate pentru managementul ei. Acest fapt poate conduce la alterarea consistentei continutului acesteia. Este recomandata crearea unor mecanisme de protectie care sa limiteze accesul la o structura de date a acelor functii special proiectate pentru a o gestiona.
Initializarea structurii dedate „ListaCarti” este realizata in mod explicit de catre programator la inceputul functiei main(). Omiterea accidentala aunei operatii de initializare este o sursa comuna de erori in programare. Initializarea automata a structurilor de date la momentul crearii acestora ar contribui la cresterea calitatii aplicatiilor.
Programale procedurale au un caracter monolitic. Este dificil sa reutilizam parti dintr-o aplicatie procedurala in cadrul unei alte aplicatii.

Implementarea solutiei prin programarea orientata pe obiecte presupune identificarea principalelor entitati prezente in descrierea problemei si care vor colabora la rezolvarea ei. Decidem sa consideram entitatile „Biblioteca”, „carte”,”stare”, ultimul concept reprezentand starea particulara a unei carti cu variantele „Pregatire”, „Disponibila”, „Imprumutata”, si „Intarziata”.

Uratorul pas consta in stabilirea relatiilor intre entitatile identificate. Avem mai multe tipuri de relatii:

biblioteca include o lista de carti, asadar intre entitatile „Carte” si „Biblioteca” avem o relatie de tip parte-intreg. O biblioteca contine mai multe carti, dar fiecare carte apartine unei dingure biblioteci., fiind vorba de o relatie n-la-1. Relatiile de acest tip se reprezinte grafic cu ajutorul unei linii ce uneste cele doua entitati avand un romb plin la capatul dinspre intreg (entitatea „Biblioteca”).
fiecare carte are o stare, dar o aceeasi stare poate fi partajata de mai multe carti (mai multe carti pot fi simultan „disponibile”, „imprumutate”, „intarziate” sau in „pregatire”). La fel ca si in cazul anterior intre entitatile Stare si carte exista o relatie de tip parte-intreg, cu multiplicitatea 1-la-n. Ea va fi reprezentata printr-o linie care uneste doua entitati avand un romb gol la capatul dinspre intreg (entitatea „Carte”).
entitatile „Pregatire”, „Disponibila”, „Imprumutata” si „Intarziata” sunt cazuri particulare ale entitatii „Stare”. Acest tip de relatie de la aprticular la general se reprezintaprintr-o linie care uneste cele doua entitati avand un triunghi gol la capatul disnpre entitatea care reprezinta generalul (entitatea „Stare”).

Continuarea in articolul urmator……..:)

Programare orientata pe obiecte sau procedural? (III) | Web Ro Design Tutoriale C/C++ Detalii privind solutia oferita de programarea procedurala

Photos 14/05/2016

Programarea orientata pe obiecte sau procedural? (II)

http://webrodesign.ro/programare-orientata-pe-obiecte-sau-procedural-ii/

In continuarea articolului nostru pe aceeasi tema revenim acum cu completari. Vom studia, pentru inceput ,o solutie procedurala la aceasta problema pentru a carei implemetare am folosit limbajul C. Datele referitoare la carte le vom prezenta cu ajutorul unei structuri cu urmatoarele campuri:

CARTE

+_cod:int

+_titlu:char*

+_categorie:char*

+_stare:int

+_dataImprumutului:time_t

Starea unei carti este prezentata cu ajutorul unui camp numeric _stare, folosind urmatoarele coduri:
Cod Numeric Denumire
1 Pregatire
2 Disponibila
3 Imprumutata
4 Intarziata

Vom prezenta lista de carti cu ajutorul unui vector de structuri CARTE , pozitiile libere in cadrul listei fiind marcate cu ajutorul valorii 0 in campul _cod din structura. Implementarea unei solutii in limbajul C este prezentata in continuare:

// Nume fisier: biblioteca_procedural.c

/**

*Numarul maxim de carti ce poate fi stocat in cadrul bibliotecii

*/

NUMAR_MAX_CARTI 100

/**

* Starile posibile in care se poate afla o carte

*/

PREGATIRE 1

DISPONIBILA 2

IMPRUMUTATA 3

INTARZIATA 4

/**

*Numarul de secunde care reprezinta 14 zile. D**a 14 zile cartile nereturnate trec in starea INTARZIATA.

*/

SECUNDE_IN_14_ZILE (14*24*60*60)

/**

*Prima pozitie nu este utilizata deoarece 0 nu este un cod de stare valid.

*/

char* DENUMIRI_STARI []={„”

,”PREGATIRE”

,”DISPONIBILA”

,”IMPRUMUTATA”

,”INTARZIATA”};

/**

*Structura utilizata pentru a reprezenta informatiile despre o carte

*/

struct CARTE

{

//Codul de inventar al cartii

int_cod;

char* _titlu;

//categoria din care face parte cartea

char* _categorie;

//Starea (situatia) cartii

int_stare;

//Data la care a cartea a fost ultima data imprumutata

tine_t _dataImprumut;

};

/**

*Vector in care vom memora lista cartilor din biblioteca

*/

struct CARTE Listacarti [NUMAR_MAX_CARTI];

/**

*Numarul curent de carti in biblioteca. Indica de asemenea si prima pozitie libera in vectorul Listacarti

*/

int NrCartiInBiblioteca = 0;

/**

*Intializeaza lista de carti a bibliotecii. Toate codurile pentru elementele vectorului ListaCarti vor fi setate la valoarea 0. Similar , titlurilr si categoriil vor primi ca valoare sirul vid „”.

*/

void Initializare ()

{

int i;

for (i=0; i

26/02/2016

Utilizarea spatiilor albe in HTML si PHP

Asa cm stiu cei care redacteazamanual programe HTML , spatiile albe (liniile vide, caracterele de tabulare si alte spatii suplimentare) pot contribui la pastrarea unui mediu de programare aerisit, fara a afecta in niciun fel ceea ce utilizatorul vede in browser. Prin inserarea de linii vide intre sectiunile unui program , plasarea elementelor imbricate cu un caracter de tabulare mai la dreapta fata de predecesorul lor si spatierea liniilor de program puteti determina un script sa aiba un aspect mai organizat , de asmenea , va fi mai usor de programat la inceput si de depanat ulterior. Astfel, utilizarea judicioasa a spatiilor albe in activitatea este incurajata si poate fi utilizata atat in PHP cat si in HTML. Pe parcursul articolelor mele pe acest site voi aborda trei domenii ale dezvoltarii programelor HTML si PHP: scripturile PHP si HTML , datele (HTML) pe care scripturile PHP le trimit catre browsere si maniera in care browserul web interpreteaza ceea ce primeste de la server. Iata, pe scurt, problema spatiilor libere pentru fiecare din aceste domenii.

Cand programam in PHP trebuie sa intelegem ca spatiile libere sunt , in general (dar nu si universal), ignorate. O linie vida (sau mai multe...) sunt irelevante pentru rezultatul final. Similar , caracterele de tabularesi spatiile sunt , in mod normal, lipsite de orice efect asupra PHP.

Spatierea liniilor de program PHP isi face aparitia si in codul HTML sursa al unei pagini web, dar are efect minimal asupra a ceea ce se poate vedea in browserl web Pentru a ajusta spatierea respectiva, trebuiesc folosite etichete HTML speciale. Iata mai jos, un script minuscul care face asta:





Va salut!

26/02/2016

Elemente de sintaxa PHP

D**a ce am vazut cm stau lucrurile din perspectiva HTML este momentul sa incepem prezentarea realizarii unui script PHP. Pentru a crea prima pagina PHP vom incepe exact ca atunci cand cream un document HTML, pornind de la zero.

Exista insa trei diferente majore intre un document HTML standard si un document PHP. Mai intai , scripturile care contin PHP trebuie salvate cu extensia .php (de exemplu index.php). In al doilea rand, codul PHP se delimiteaza cu etichetele , pentru ca este nevoie sa specificam care sunt portiunile de program realizate cu PHP , in cazul scriptului nostru. In final, si la fel de important, scripturile PHP trebuie rulate pe un server in care este instalat limbajul PHP (in timp ce scripturile HTML pot fi rulate de pe orice calculator....).

Acum, urmeaza o alta chestiune pe care trebuie sa discutam si care este importanta si prin prisma primelor scripturi pe care le sciem, dar si din perspectiva viitoarelor proiecte de care ne vom ocupa. Va trebui sa rulam functia phpinfo (). Vom vedea , cu ajutorul acestei functii , ce versiune de PHP avem pe server , cm sunt setate principalele functii si variabile ale cestuia. Iata ce trebuie sa facem:

Scriem un script de forma:

[box type="download"]





Testam functii php











[/box]

2. Salvam acest script sub denumirea informatii.php (sigur, il puteti salva sub orice denumire doriti, dar nu uitati ca extensia trebuie sa fie .php in mod obligatoriu).

3. Urcam prin FTP (sau prin orice alta medota) acest script pe serverul nostru, unde vrem sa vedem informatiile referitoare la php.

4. Accesam , in browser, urmatoarea adresa: www.siteulmeu.ro/informatii.php In mod normal, browserul va afisa in acel moment informatiile despre versiunea de php instalata pe server si principalele ei setari. E foarte important sa stim asta, repet, pentru ca, cu timpul, vom trece la proiecte mult mai complexe decat rularea unui singur script si e bine sa stim pe ce ne bazam.

E important de stiut:

Asa cm extensia unui fisier din calculator indica sistemului de operare aplicatia care trebuie utilizata la deschiderea fisierului, extensia unei pagini web indica serverului modul in care trebuie prelucrat fisierul. daca, sa zicem, fisierul nostru se numeste fisier.php atunci el el va parcurge modulul PHP, fisier.aspex este prelucrat ca ASP.NET, iar fisier.html este un document HTML static (de obicei...). Aceste lucruri sunt determinate de parametrii serverului web.
Interesati-va la furnizorul serviciilor dvs de internet pentru a afla care sunt extensiile de fisier pe care le puteti folosi in documentele PHP. Exista un obicei (extrem de deranjant cateodata....) al unor furnizori de internet de a filtra anumite tipuri de fisiere. E bine sa stim dinainte..... Totusi, nu s-au constatat probleme la fisierele .php Pentru alte extensii.....da!
De asemenea, tot de la furnizorul de internet trebuie sa aflam daca sunt acceptate etichetele scurte (care folosesc in loc de , respectiv etichetele de ASP (). Ocazional, veti vedea , in unele scripturi si aceste etichete, dar este bine sa le folositi pe cele clasice.
phpinfo() este un exemplu de functie php. Cand vom vorbi despre functii si crearea functiilor php vom invata mai multe despre functii si despre modul de creare a unor functii php proprii.
In timp, veti vedea ca este bine sa aveti permanent pe calculator un script de genul celui de mai sus care sa foloseasca functia phpinfo(). Il puteti folosi pentru a testat capabilitatile unui server pe care trebuie sa lucrati sau pentru a vedea caracteristile acceptate de acesta , de genul : baze de date, creare de imagini etc etc etc. De asemenea, o alta utilizare ar fi aceea ca , poate, doriti sa experimentati diferite extensii si vreti sa stiti dinainte pe care dintre acestea serverul le va prelucra corect si pe care nu.

404 Not Found

Want your business to be the top-listed Computer & Electronics Service in Bucharest?
Click here to claim your Sponsored Listing.

Category

Telephone

Address


Masina De Paine 18
Bucharest
021134