Skapa backend till en webbshop

By , . Latest revision .

Du ska skapa grunden till en webbshop, backend-delen, den delen som administratören använder för att lägga in och administrera produkter och lagervärde. Du skall även skapa vissa delar i databasen för varukorg och orderhantering, delar som i ett senare skede kan användas av en webbshop frontend för att ge användare möjlighet att shoppa i din webbshop.

#Förkunskaper

Du är väl bekant med Anax Lite.

Du har jobbat igenom följande övningar:

#Introduktion

Du skall bygga ett CRUD-baserat adminsgränssnitt samt träna på att programmera i databasen via lagrade procedurer, funktioner, triggers och transaktioner.

#Webbshop

Ett exempel på en webbshop.

Ett exempel på en webbshop.

För att få en förståelse för vad som förväntas kan du kika på devdungeon’s webbshop. Det du ser är frontenden till en webbshop där användaren kan se produkter, lägga dem i en varukorg och beställa dem genom att checka ut och betala.

Din uppgift är att bygga backenden till en sådan webbshop. Den delen som administratören ser. Det handlar mestadels om ett CRUD-gränssnitt för att hantera produkter, deras lagerstatus, ordrar, fakturor och leveranser. Du skall lösa en delmängd av detta.

Vad som ska säljas i din affär bestämmer du själv. Det kan vara kläder, djur, elektronik m.m. Tänk på upphovsrätten om du lånar material från nätet.

#Databasen

I en föreläsning gick Mikael igenom ett case med en databas för ehandel. Om du tittar på den så får du en databasmodell som du kan återanvända, eller låna ideér från.

Kika på föreläsningen (det börjar 23:30 in i klippet och håller på till cirka 1:05:00).

SQL-koden som används hittar du bland föreläsningsanteckningarna som example/sql-eshop.sql. Du kan använda den som bas om du vill, eller så bygger du din egen, välj ditt fokus.

Hur du väljer att modellera din databas, vilka tabeller du använder, är helt upp till dig själv.

#Programmera i databasen

En viktig del i uppgiften är att träna på att använda lagrade procedurer, inbyggda funktioner, triggers och transaktioner. Försök finna där dessa kan användas på ett “tillräckligt vettigt” sätt.

Du kan även använda dessa konstruktioner på din övriga databaskod i Anax Lite.

Du kan alltså delvis lösa uppgiften genom att skriva om din gamla databaskod. Var tydlig i redovisningstexten om du gör på det viset.

#Krav

  1. Skapa en backend till en webbshop som kan nås av en inloggad administratör. Ha en länk i din navbar till webbshoppen.

  2. Du skall använda minst en lagrad procedur, en egendefinierad funktion, en trigger och en transaktion. Skapa en fil anax-lite/sql/setup-webshop.sql där du sparar all SQL-kod.

  3. Lägg till minst 5 produkter av minst två olika kategorier i databasen. En produkt skall ha en beskrivning, bild, kategori, pris, lagerstatus.

  4. Skapa ett gränssnitt i Anax Lite där man kan göra CRUD på produkter och lager.

  5. Skapa ren SQL för att implementera en varukorg. Man skall kunna lägga till/ta bort en produkt i en varukorg. Man skall kunna visa varukorgens innehåll.

  6. Skapa ren SQL för att göra en order baserat på en varukorg. Man skall kunna visa innehållet i en order och ta bort en order. När en varukorg övergår till en order skall du även “flytta” motsvarande antal produkter från lagret till ordern.

  7. Lägg in stöd så att databasen har koll på när du behöver beställa nya produkter. När en produkt har färre än 5 produkter i lagret så lägger du in en rad, tillsammans med en tidsstämpel för när det hände, i en speciell tabell där du kan se vilka produkter som behövs beställas. Skapa SQL för en rapport som visar de produkter du skall beställa.

  8. Skriv dokumentation i anax-lite/sql/setup-webshop.md som visar hur man använder ditt SQL API mot databasen för att jobba med varukorg, order och rapporten för beställning.

  9. Validera och publicera.

#Extrauppgift

  1. Gå igenom din gamla SQL-kod och se om det finns fler möjligheter att programmera i databasen. Fundera sedan över om detta är ett bra sätt eller ej, fördelar och nackdelar.

#Tips från coachen

Lycka till och hojta till i forumet om du behöver hjälp!

#Revision history

  • 2017-04-21: (A, lew, mos) Första utgåvan.

Document source.

Category: php, kurs oophp, anax-lite.