Categorii
• Adauga categorie - Adauga o noua categorie.
• Vezi categorii - Afiseaza toate categoriile pe care le avem. Putem vedea si toti copii categoriilor si produselor continute.
• Modifica categorie - Modifica informatiile unei categorii: nume, descriere si imagine.
• Sterge categorie - Sterge o categorie. Toate produsele vor avea cat_id = 0. Produse
• Adauga produs - Adauga un produs in magazinul tau. Vei adauga si imaginea si vei prelucra automat si o imagine mica.
• Vezi produse - Afisezi toate produsele tale din catalog grupate pe categorii.
• Modifica produs - Modifica informatiile unui produs. De asemenea, poti sterge si imaginea produsului.
• Sterge produs - Sterge un produs din catalog. Comanda
• Vezi comenzi - Aici poti vizualiza toate comenziile pe care le ai si statusul lor.
• Modifica comenzi - In unele cazuri, un client ar putea suna pentru a modifica o comanda sau pentru a a anula o comanda. Aici, poti face asta. Configurare magazin - Aici poti modifica datele magazinului tau, design etc
Fiecare sub-modul va avea urmatoarea structura similara:
• index.php
• list.php
• add.php
• modify.php
• process<sub-modul>.php
Pagina index.php reprezinta doar o cale de intrare pentru administrator in site. Aici vei vedea mereu daca utilizatorul este logat sau nu. In felul asta vei fi siguri ca numai cei autorizati vor putea umbla in paginile de administrare.
Toate paginiile de administrare vor avea aceeasi sursa, fisierul template.php aflat in folderul admin/include.
Toate conturile administratorilor sunt salvate in tabela tbl_user. Pentru simplicitate, tabela va contine doar id-ul utilizatorului si parola.
Iata cum functioneaza autentificarea:
• Administratorul introduce id-ul si parola.
• Scriptul verifica daca aceasta combinatie id-parola exista in baza de date.
• Daca exista, porneste o sesiune si ii permite administratorului sa continue.
• Daca nu exista, ii afiseaza un mesaj de eroare.
Functia de autentficare este doLogin() si este localizata in fisierul functions.php din folderul admin/library.
Iata si codul sursa al fisierului:
<?php
/*
Verifica daca exista o sesiune curenta. Daca nu, redirectioneaza
Utilizatorul la pagina de login
*/
function checkUser()
{
//daca nu exista sesiunea, redirectioneaza
if (!isset($_SESSION['plaincart_user_id'])) {
header('Location: ' . WEB_ROOT . 'admin/login.php');
exit;
}
// logout utilizator
if (isset($_GET['logout'])) {
doLogout();
}
}
/*
*/
function doLogin()
{
// daca exista o eroare, o salvam in aceasta variabila
$errorMessage = '';
// mai intai, ne asiguram ca id-ul si parola nu sunt goale
if ($userName == '') {
$errorMessage = 'You must enter your username';
} else if ($password == '') {
$errorMessage = 'You must enter the password';
} else {
// verifica baza de date pentru a vedea daca exista combinatia
// id - parola
$sql = "SELECT user_id
FROM tbl_user
WHERE user_name = '$userName' AND user_password = PASSWORD('$password')";
$result = dbQuery($sql);
/*
Logout
*/
function doLogout()
{
if (isset($_SESSION['plaincart_user_id'])) {
unset($_SESSION['plaincart_user_id']);
session_unregister('plaincart_user_id');
}
header('Location: login.php');
exit;
}
/*
Genereaza combo box-uri pentru categoriile existente
*/
function buildCategoryOptions($catId = 0)
{
$sql = "SELECT cat_id, cat_parent_id, cat_name
FROM tbl_category
ORDER BY cat_id";
$result = dbQuery($sql) or die('Cannot get Product. ' . mysql_error());
// numar de pagini
$maxPage = ceil($numrows/$rowsPerPage);
$self = $_SERVER['PHP_SELF'];
// creeaza anteriorul si urmatorul
// plus prima pagina si ultima pagina
if ($pageNum > 1)
{
$page = $pageNum - 1;
$prev = " <a href="$self?page=$page{$queryString}">[Prev]</a> ";
functions.php
Daca autentificarea are loc cu succes, vei initializa variabila sesiune $_SESSION['plaincart_user_id']. Toate paginile vor verifica existenta acestei variabile de sesiune cu ajutorul functiei checkUser(). Aceasta functie va redirectiona utilizatorul la pagina de login daca sesiunea nu exista.
function checkUser()
{
if (!isset($_SESSION['plaincart_user_id'])) {
header('Location: ' . WEB_ROOT . 'admin/login.php');
}
if (isset($_GET['logout'])) {
doLogout();
}
}
Daca in URL avem logout, vom apela functia doLogout().
function doLogout()
{
if (isset($_SESSION['plaincart_user_id'])) {
unset($_SESSION['plaincart_user_id']);
session_unregister('plaincart_user_id');
}
header('Location: login.php');
}
Vizualizarea categoriilor de produse
Toate categoriile sunt listate aici. Interogarea sql prezenta aici este destul de simpla. Doar selectezi id-ul categoriei, id-ul parintelui si numele categoriei si folosesti o bucla while.
Fiecare categorie va avea un link Modifica si un link Sterge. Cand dai click pe link-ul Modifica, vei fi redirectionat catre pagina de modificare a categoriei, iar cand dai click pe linkul Sterge, vei sterge categoria, dupa ce ai confirmat acest lucru intr-o fereastra JavaScript. Aceasta confirmare este necesara pentru a nu sterge ceva din greseala.
Cand pagina se incarca verifici daca exista variabila catId in sirul de interogare. Aceasta variabila va fi utilizata ca parametru de functia javascript addCategory().
Aici vei adauga o categorie in baza de date. Vei avea nevoie de numele, imaginea si descrierea categoriei. Atat numele cat si descrierea sunt obligatorii, dar imaginea nu este. Daca nu vrei sa adaugi o imagine, vei lasa campul necompletat. Bineinteles ca nu este recomandat si cel mai bine ar fi sa adaugi o imagine pentru fiecare categorie.
Iata cum va arata pagina de adaugare a unei categorii si codul ei sursa:
add.php
Formularul are o variabila ascunsa (hidden) hidParentId. Valoarea ei este setata in fisierul list.php.
Dupa ce trimiti datele din formular, va fi utilizat fisierul processCategory.php. Toate operatiiile legate de categorii sunt facute in acest fisier.
La inceputul acestui fisier exista o conditie switch pentru a alege actiunea dorita.
$action = isset($_GET['action']) ? $_GET['action'] : '';
switch ($action) {
case 'addCategory' :
addCategory();
break;
case 'modifyCategory' :
modifyCategory();
break;
case 'deleteCategory' :
deleteCategory();
break;
case 'deleteImage' :
deleteImage();
break;
default :
header('Location: index.php');
}
Pentru a adauga o categorie, apelezi functia addCategory(). Pentru a nu exista probleme cu numele imaginii, vei genera un nume pentru fiecare imagine aleatoriu, utilizand functia rand().
Imaginea va deveni ceva de genul 6c444ed816ce251d610c25154dc28462.jpg. In acest fel vom scapa de problema conflictelor de nume.
Editarea si stergerea categoriilor
Formularul pentru modificarea unei categorii este identic cu cel de la adaugare, cu singura diferenta ca afisezi si informatiile introduse deja.
Iata sursa fisierului modify.php, responsabil cu editarea unei categorii:
<?php
if (!defined('WEB_ROOT')) {
exit;
}
// ne asiguram ca exista un id de categorie
if (isset($_GET['catId']) && (int)$_GET['catId'] > 0) {
$catId = (int)$_GET['catId'];
} else {
header('Location:index.php');
}
$sql = "SELECT cat_id, cat_name, cat_description, cat_image
FROM tbl_category
WHERE cat_id = $catId";
$result = dbQuery($sql);
$row = dbFetchAssoc($result);
extract($row);
modify.php
Langa imaginea categorie, vei avea un link Sterge imagine cu ajutorul caruia vei sterge imaginea aferenta categoriei. Stergerea imaginei se va face apeland functia deleteImage().
Aceasta functie va sterge imaginea dupa ce in prealabil ai confirmat acesta actiunea intr-o fereastra javascript.
function deleteImage()
{
if (isset($_GET['catId']) && (int)$_GET['catId'] > 0) {
$catId = (int)$_GET['catId'];
} else {
header('Location: index.php');
}
_deleteImage($catId);
// modifica in baza de date
$sql = "UPDATE tbl_category
SET cat_image = ''
WHERE cat_id = $catId";
dbQuery($sql);
header("Location: index.php?view=modify&catId=$catId");
}
Dupa stergerea imaginii, modifici numele in baza de date. Va trebui doar sa setezi cat_image la un sir gol.
Stergerea unei categorii se face foarte simplu. Vei da click pe link-ul Sterge aferent categoriei dorite. Stergerea unei categorii va conduce la stergerea tuturor copiilor. Functia utilizata este deleteCategory().
Procesul consta in:
• Modifica cat_id pentru produsele din aceeasta categorie la 0.
• Sterge imaginea daca exista.
• Sterge categoria din baza de date.
Vizualizarea produselor
Aceasta pagina afiseaza toate produsele pe care le ai in baza de date. Poti sa le vezi pe toate sau doar pe cele dintr-o categorie. Vei afisa numele produsului, imaginea mica, categoria si link-urile Modifica si Sterge.
Pentru a selecta doar produsele dintr-o categorie, vei utiliza un combo box cu numele tuturor categoriilor si functia javascript viewProduct(). Aceasta functie va fi apelata atunci cand vei selecta o categorie in combo box. Daca doresti sa afisezi toate produsele, vei alege Toate produsele in combo box.
Iata codul fisierului list.php, responsabil cu afisarea produselor:
Codul este unul foarte simplu. Doar executa o interogare pentru a cicla printre produse si a afisa informatiile legate de produse. Daca exista mai mult de 5 produse pe pagina, vei afisa produsele in mai multe pagini.
function getPagingQuery($sql, $itemPerPage = 10)
{
if (isset($_GET['page']) && (int)$_GET['page'] > 0) {
$page = (int)$_GET['page'];
} else {
$page = 1;
}
// incepe de la acest rand
$offset = ($page - 1) * $itemPerPage;
return $sql . " LIMIT $offset, $itemPerPage";
}
Paginarea se face utilizand cuvantul cheie MySQL LIMIT. Vei specifica punctul de plecare si numarul de randuri returnate. Functia getPagingLink() returneaza link-urile paginilor.
Adaugarea produselor
Adaugarea unui produs in catalogul tau este un proces foarte simplu. Doar introduci informatiile produsului si apesi butonul Adauga. Vei avea nevoie de urmatoarele date despre produs:
• Categorie
• Nume
• Descriere
• Pret
• Cantitate in stoc
• Imagine
Toate campurile sunt obligatorii, exceptand imaginea. Nu sunt mari diferente fata de adaugarea unei categorii. In partea de sus a formularului, ai un combo box care iti prezinta toate categoriile, din care vei selecta una pentru produsul tau. Lista cu categoriile este construita de functia buildCategoryOptions(). Iata codul care formeaza aceasta lista:
<?php
// cauta categoriile in baza de date
// construieste combo bxul
$list = '';
foreach ($categories as $key => $value) {
$name = $value['name'];
$children = $value['children'];
$list .= "<optgroup label="$name">";
foreach ($children as $child) {
$list .= "<option value="{$child['id']}"";
if ($child['id'] == $catId) {
$list.= " selected";
}
$list .= ">{$child['name']}</option>rn";
}
$list .= "</optgroup>";
}
// ...
?>
Daca veti alege Adauga un produs nou din lista de produse, vei vedea ca in formular, categoria va fi selectata deja la cea corecta.
Cantitatea de produse este limitata la 65.535, deoarece ai in definitia tabelei smallint(5). Este suficient pentru aproape orice magazin online, dar daca doriti sa pui mai nulte produse in stoc, modifica la mediumint(8).
Imaginea pe care trebuie s-o furnizezi este imaginea mare a produsului. Scriptul va genera un thumbnail pentru aceasta imagine pe care o va afisa in lista de produse. Imaginile vor trebuie sa fie insa doar jpeg sau gif.
Editarea si stergerea produselor
Nu cred ca trebuie sa explic prea mult aici, pentru ca este un proces identic cu cel de la categorii. Vei afisa formularul unde modifici datele produsului si langa imagine pui un link necesar stergerii ei.
Procesul de stergere a unui produs se deruleaza astfel:
• Sterge toate referintele despre acest produs din tbl_order_item.
• Sterge toate referintele din tbl_cart.
• Sterge imaginea mica a produslui si thumbnail-ul.
• Sterge produsul din baza de date.
Iata si codul functiei deleteProduct() responsabila pentru acest proces:
function deleteProduct()
{
if (isset($_GET['productId']) && (int)$_GET['productId'] > 0) {
$productId = (int)$_GET['productId'];
} else {
header('Location: index.php');
}
// sterge toate referintele la acest produs
// tbl_order_item and tbl_cart
$sql = "DELETE FROM tbl_order_item
WHERE pd_id = $productId";
dbQuery($sql);
$sql = "DELETE FROM tbl_cart
WHERE pd_id = $productId";
dbQuery($sql);
// preia numele imaginii si a thumbnailului
$sql = "SELECT pd_image, pd_thumbnail
FROM tbl_product
WHERE pd_id = $productId";
// sterge imagine si thumbnail
if ($row['pd_image']) {
unlink(SRV_ROOT . 'images/product/' . $row['pd_image']);
unlink(SRV_ROOT . 'images/product/' . $row['pd_thumbnail']);
}
// sterge produsul din baza de date
$sql = "DELETE FROM tbl_product
WHERE pd_id = $productId";
dbQuery($sql);
header('Location: index.php');
}
Administrarea comenzilor
Toate comenzile clientilor vor fi afisate aici. Poti vedea comenzile si lua o decizie in cazul lor. De exemplu, la inceput, toate comenzile au statutul Nou. Dupa ce trimiti pachetul la client, poti sa schimbi statusul unei comenzi in Onorat.
Statusurile comenzilor pot fi:
• Nou
• Onorat
• Anulat
• Complet
Sa vedem ce inseamna fiecare.
Nou - Toate comenzile initiale au acest statut.
Onorat - O comanda impachetata si trimisa la client va avea acest statut.
Anulat - O comanda anulata de client sau din alte motive.
Complet - Dupa primirea coletului de catre client si realizarea platii, o comanda se poate considera completa.
Utilizand un combo box, vei putea alege sa vezi doar comenzile cu un anumit status.
Configurarea magazinului
Aici putem configura cateva informatii utilizate in intreg site-ul.
• Informatii despre magazin
• Nume
• Adresa
• Telefon
• E-mail
• Costul de expediere
• Modeda utilizata
• Un stegulet daca sa se trimita un email administratorului sau nu cand s-a facut o comanda
Informatiile legate de magazin pot fi vizualizate in footer. Nu ar trebuie sa lasi nici un camp liber. Aceste campuri sunt foarte importante daca doresti sa ai un business adevarat. Acest lucru poate creste increderea clienutului in dumneavoastra si va poate mari vanzarile.
Moneda este un simplu combo box din care veti selecta intre leu, dolar si euro.
Daca doresti sa trimiti un email la fiecare comanda facuta catre administrator, poti bifa acest lucru. Daca insa ai un magazin online foarte activ, ar fi bine sa dezactivezi optiunea aceasta pentru ca veti fi bombardat cu foarte multe email-uri si s-ar putea ca server-ul tau de mail sa creada ca are de-a face cu spam-uri.
Foarte tare..as avea si eu nevoie de putin ajutor cu php-ul.
Poate ati putea face o noua lectie despre asta sau doar sa-mi dati nu sfat(daca nu e prea mare deranjul)
Am de facut un chestionar cu 10 intrebari(pana aici tot e bine si frumos) dar la sfarsitul chestionarului trebuie sa-mi afiseze la cate intrebari a fost raspuns corect si la cate gresit.
Daca m-ar putea ajuta cineva i-as fi recunoscator.
Multumesc anticipat!
0RaspundeAi votat deja acest comentariu!Multumim pentru votul tau!
Raspunde
Pentru a adauga comentarii trebuie sa fii membru eCursuri.ro
Intra in contul tau sau inregistreaza-te GRATUIT (dreapta sus)