Som sagt kræves der helst lidt viden om OOP hvis man virkelig vil lærer noget, og ikke bare lave copypaste

Relaterede dokumenter
Arrays i PHP. Denne guide er oprindeligt udgivet på Eksperten.dk. Skrevet den 04. Feb 2009 af taskmgr I kategorien Programmering / PHP

I denne artikel, vil der blive gennemgået de grundlæggende PHP-funktioner, såsom udskrift til skærmen, tid og dato og if-sætningen.

Med register_globals = On får du automatisk adgang til en række variabelnavne i dit script.

I mit script tager jeg højde for det problem ved, at gemme et unikt tal mellem 0-9 på 6 cifre og derved vil de så blive vist som 2 online.

SESSION med PHP. En let begynderguide som kan føre dig ind i en verden af muligheder. Denne guide er oprindeligt udgivet på Eksperten.

Kontrol-strukturer i PHP

Loginsystem (med MySQL)

At klippe en streng over på det mest hensigtsmæssige sted

Dynamisk PHP design OPDATERET

Ratingsystem i PHP og MySQL

I denne artikel vil du ved hjælp af arrays kunne afrunde et decimaltal til et helt tal.

Database design for begyndere

Loginsystem med PHP4, klasser, sessions og MySQL database

Simpel upload af filer

Anvendelse af metoder - Programmering

Tagwall med Php & MySQL

Start på javascript. Denne guide er oprindeligt udgivet på Eksperten.dk. Skrevet den 03. Feb 2009 af webstuff I kategorien Programmering / JavaScript

Upload af billeder/filer for nybegyndere Del. 2

Gæstebog med validering opbygget med MySQL

Singleton pattern i Java

Koden i denne guide vil kun virke i Flash MX 2003 og MX ikke ældre versioner!

//Udskriver System.out.println("Hej " + ditfornavn + " " + ditefternavn + "."); System.out.println("Du er " + dinalder + " aar gammel!

Begrynder til at lave log ind system

PHP Pagination. Denne guide er oprindeligt udgivet på Eksperten.dk. Skrevet den 01. May 2011 af dab93 I kategorien Programmering / Andre

I denne arktikle går jeg gennem Slet, Ret og Opret data i en MySQL database. der er også en lille del i den hvor den postere datanen ud i en løkke

Parameters. Denne artikel beskriver hvorfor parameters er gode. Den forudsætter lidt kendskab til C# og ADO.NET.

Afsending af s vha. ASP

Listen over reserverede ord er meget lang, men de væsentligste vil jeg beskrive her i denne artikel:

Introduktion til SQL queries

Tilfældige tal. Denne artikel introducerer generering af tilfældige tal og viser lidt om hvad man kan og ikke mindst hvad man ikke bør bruge.

Log ind med PHP. Denne guide er oprindeligt udgivet på Eksperten.dk. Skrevet den 09. May 2011 af dab93 I kategorien Programmering / Andre

Tracking af YouTube i Google Tag Manager og Universal Analytics (Seneste version)

Arrays og deres slægtskab med objects

Java Klasse nedarvninger

Delphi - CrackMe og Keygen

Endnu mere om tilfældige tal

Hej alle sammen, nu fjerner vi lige mystikken om alle de "ulovlige tags" her på eksperten.dk

Skrevet den 18. Feb 2010 af arne_v I kategorien Programmering / Visual Basic.NET

Ekstra hastighed med array's i Excel-VBA

Hvad er Objekter - Programmering

I denne artikel vil jeg gennemgå hvordan en side for RSS "Live Bogmærke" kan se ud.

Undtagelseshåndtering i C#

PHP Snippets. De små korte. Skrevet af Daniel Pedersen

PHP guide af Daniel Pedersen

Introduktion til funktioner, moduler og scopes i Python

Singleton pattern i C#

RMI introduktion. Denne artikel beskriver Java RMI (Remtote Method Invocation).

Session-highjack...et halvt skridt mod en modgift

Denne artikel er en detaljeret gennemgag af det fundamentale i batchfiler til hjemmebrug :-) FEEL THE POWER! ;-)

Denne artikel er til dem der ønsker at vide mere om hvad CSS er og hvad CSS kan bruges til hvad angår WWW.

Tredjepart webservices

Den forudsætter kendskab til XML og C# men ikke til brug af XML i C#.

Derfor vil jeg bygge dette eksempel på een table hvor der kan tilkyttes personer til ALLE noder og der kan tilføjes et vilkårligt antal niveauer

Bits, bit operationer, integers og floating point

Reeksamen, DSDS, forår 2008

Regulære udtryk, 2. del

Den forudsætter kendskab til C++ og lidt kendskab til SQL og MySQL C API.

Ide med Diff. Mål. Tidsplan. 1.uge: 2.uge:

Send fra Java. Denne artikel fortæller hvad man skal bruge og hvordan man skal kode for at sende fra Java.

Uploade billeder eller andre filer ved hjælp af php og mysql

PHP 3 UGERS FORLØB PHP, MYSQL & SQL

Installationsvejledning til Virk Tæller

Bærbar varme og støj - Vcore ændringer

Introduction til.net remoting i C#

I denne artikel vil vi bruge en User klasse som vi så vil gruppere på forskellige måder.

Den forudsætter kendskab til XML og VB.NET men ikke til brug af XML i VB.NET.

Delphi og Databaser for begyndere

Mozilla Firefox (tidligere Firebird): Fremhæve ord

jquery - selectors, attributes, traversing og manipulation

Test med NUnit. Denne artikel introducerer NUnit. Den forklarer ideen med NUnit. Og den viser hvordan man konkret bruger det.

Introduction til.net remoting i VB.NET

Visual Basic for begyndere

Aftenskole i programmering sæson Core Data del 2. Sæson 2-13

Sådan skriver du artikler til Eksperten!

b) Udvid din implementation af forme til at understøtte.equals. To objekter af samme form er ens hvis de har samme værdier i felterne.

Det er primært relevant for dem hvor der arbejdes på en gammel bærbar computer, som ikke har en stærk processer og nok ram, at gøre godt med.

Filen global.asa, en asp programmørs ven

Brugerdefineret menuer i Access

HTML, PHP, SQL, webserver, hvad er hvad??

Data load og udtræk. 2. iteration: implmentation (test af backend) PHP mysql. Loade og parse XML (SimpleXML, Xpath) Filhåndtering i PHP JSON

Program Dokumentation PC Software Skrevet af. Gruppen. Version 1.0

Offset til terminalskærm i Java

Mircobit Kursus Lektion 3 (Du skal her vælge Lets Code Og nederst Microsoft Block Editor.)

C# spil (del 1) - Kom i gang med et simpelt spil

SQL for MySQL-begyndere

Threads i Java. Denne artikel giver en introduktion til threads i Java. Den beskriver hvad tråde er og forklarer hvordan de bruges i Java

Programmering for begyndere Lektion 2. Opsamling mm

Introduktion til ActionScript, fortsat

Database programmerings tips

Kapitel 3 Betinget logik i C#

Flerbruger miljø, opdel database

Sådan kan du sende data fra din egen hjemmeside til JitBesked via en HTML-JDF.

Trådløs rækkevidde. Denne guide er oprindeligt udgivet på Eksperten.dk. Skrevet den 03. Feb 2009 af bufferzone I kategorien Netværk / Generelt

Beskriver WOW Ik 100% godt men gør mit bedste + alle stavefejl er gratis men dog er der ikke mange

Test med JUnit 3. Denne artikel introducerer JUnit 3. Den forklarer ideen med JUnit. Og den viser hvordan man konkret bruger det.

Prepared Statements. Denne artikel beskriver hvorfor prepared statements er gode. Den forudsætter lidt kendskab til Java og JDBC.

Denne artikel gennemgår kort nogle mulighederne for brug af XML i ASP. Det sker ved brug af eksempler. Eksemplerne vil være i VBS.

Indledning. Hvorfor det forholder sig sådan har jeg en masse idéer om, men det bliver for meget at komme ind på her. God fornøjelse med læsningen.

PUT og INPUT funktionerne

Transkript:

Denne guide er oprindeligt udgivet på Eksperten.dk Indkøbsvogn i PHP I denne artikel vil jeg prøve at lave en indkøbskurv som let kan udvides, og som ikke er svær at forstå. Det er bedst med viden om OOP(klasser), helst PHP5, men PHP4 kan også gøre det. Man kan med en god hjerne også gætte sig til lidt OOP :) Skrevet den 06. Feb 2009 af mysitesolution I kategorien Programmering / PHP Som sagt kræves der helst lidt viden om OOP hvis man virkelig vil lærer noget, og ikke bare lave copypaste kode :) Edit: $_SESSION["cart"] == $cart->getproducts(); skulle være $_SESSION["cart"] = $cart->getproducts(); Af forskelle fra PHP4 og PHP5 er kan nævnes: Variabler En variabel i en PHP4 klasse defines med "var $var1;" og den kan bruges både indenfor og udenfor klassen. I PHP5 kan man selv vælge om den skal kunne ses udenfor klassen. Ved "private $var1;" kan den kun ses indenfor klassen, og ved "public $var1;" kan den ses både udenfor og indenfor klassen. Funktioner PHP4 s funktioner ses ud som dette "function FunktionsNavn() " og kan som "var" ses både udenfor og indenfor klassen. Ved PHP5 kan man også gøre som PHP4, men man kan også sætte private eller public foran. Klassen Først laver vi selvfølgelig klassen, som jeg ikke regner med skal forklares... class ShoppingCart Produkt variabel Vi skal så have en variabel til at gemme vores produkter i. Her bruger jeg en privat variabel, da jeg ikke synes det er hensigtmæssigt at man skal kunne ændre den på alle leder og kanter udefra. Min kodestil, er at bruge små bokstaver til private variabler og stort bokstav til offentlige variabler. Derfor bliver navnet $products.

class ShoppingCart private $products; Til produkterne vil jeg gemme 2 ting, varernummer (pnum) og antal (count), man kunne også vælge at gemme navne på produkterne osv., men jeg synes det er en klart bedre metode at konstant hente navne osv. direkte fra database. Man kunne evt. lave en cache til dette. Funktion: GetProducts Vi skal have en funktion som henter vores produkter ud som et array, og det gøres meget let, ved bare at retunere vores product array. private function GetProducts() return $this->products; Funktion: GetProductCount Vi laver også en funktion til at hente antal produkter af en slags. Vi sender varenummeret med funktionen, og hvis varen ikke findes, så skal den retunere false. Det gør vi med if (isset($this->products[$pnum])) hvor isset retunere true hvis produktet findes, og false hvis det ikke findes. Hvis det findes retunere vi så nummeret, og hvis ikke så retunere vi false. public function GetProductCount($pnum) return $this->products["$pnum"]; Funktion: AddProduct Vi skal selvfølgelig også en funktion til at tilføje et produkt. Det produkt skal ikke tilføjes hvis det allerede findes, men hvis det findes, skal antal af produktet forhøjes med antallet. Vi tjekker også om varenummeret og antallet virkelig er et tal. Dette gøres med is_numeric(). Der er den ulempe ved is_numeric at et decimal tal også bliver accepteret. Det kan løses på flere måder, men det er stortset underordnet.

Derefter tjekker vi om produktet findes, som vi også gjorde før. Hvis det gør, så skal antallet bare forhøjes, og ellers skal produktet tilføjes. public function AddProduct($pnum, $count) if (is_numeric($pnum) && is_numeric($count)) $this->products["$pnum"] += $count; $this->products["$pnum"] = $count; Funktion: SetProducts Denne funktion forklares yderligere senere, men den skal bare kunne tjekke om et array sendt med, er numre, og derefter udskifte vores product array med det der er sendt med. Der er ikke så meget nyt i denne funktion. public function SetProducts($array) $this->products = array(); foreach ($array as $key => $value) if (is_numeric($key) && is_numeric($value)) $this->products["$key"] = $value; Endelig klasse Jeg har en masse andre funktioner at ville fyrer ind i den. Men da jeg mener det er bedst med forholdsvis overskuelige artikler så stopper jeg her. Til dem der vil have mere, kan jeg evt. lave endnu en artikel med en udvidet klasse. class ShoppingCart private $products; public function AddProduct($pnum, $count) if (is_numeric($pnum) && is_numeric($count)) $this->products["$pnum"] += $count;

$this->products["$pnum"] = $count; public function GetProductCount($pnum) return $this->products["$pnum"]; public function GetProducts() return $this->products; public function SetProducts($array) $this->products = array(); foreach ($array as $key => $value) if (is_numeric($key) && is_numeric($value)) $this->products["$key"] = $value; Afprøvning jeg har lavet en lille fil som kan teste din kurv. Den ses her: require("cart.class.php"); $cart = new ShoppingCart; //Loader vores klasse //Opretter vores klasse $products["1212"] = 2; $products["1214"] = 2; $cart->setproducts($products); $cart->addproduct("1212", 2); $cart->addproduct("1212", 4); //Sætter vores nye produkter //Tilføjer produkt //Tilføjer produkt echo $cart->getproductcount("1212"); //Udskriver vare antal for 1212

print_r($cart->getproducts()); //Udskrive produkterne if ($cart->addproduct("jkh", false)) //Er dette add gyldigt? echo "Produktet blev tilføjet."; echo "Produktet var ugyldigt."; //Nej er det ikke! Hvis den virker skulle den gerne retunere noget lignede dette: 8Array ( [1212] => 8 [1214] => 2 ) Produktet var ugyldigt. Brug i det "virkelige" liv Nu har vi jo set hvordan vi kan holde på produkterne osv. men hvordan overfører vi det side til side? Det er ret let :) Vi kan gøre det på forskellige måder. Den ene er at gemme indholdet i en session. Det kan være en dårlig måde, da det gemmes i rammene, så man kan også gemme et id og hente det fra en database. Vi tager den lette her i første omgang (Den anden kan jeg tage til en artikel 2). Sidst i et PHP dokument tilføjer vi bare dette: session_start(); $_SESSION["cart"] = $cart->getproducts(); Vi kan så hente indholdet i starten af en side ved at bruge: session_start(); $cart = new ShoppingCart; $cart->setproducts($_session["products"]); Dette burde give sig selv. Hvis du kan noget OOP, så kan du i hvert fald også sessions :) Da dette er min første artikel, så må i også gerne vurdere min måde at skrive artikler på, så jeg ved hvad

jeg skal gøre anderledes en anden gang. :) Ellers, så skriv hvis jeg har lavet et par fejl. Kommentar af olebole d. 29. Jul 2007 1 Du skøjter voldsomt hurtigt hen over forskellene på OOP under PHP4 og PHP5 Kommentar af cf560 d. 25. Nov 2006 2 Super Kommentar af plazm d. 28. Nov 2005 3 Kanon artikkel. Har ikke testet den, men den giver en meget god gennemgang og beskriver koden godt. Kommentar af nyhuusdk d. 02. Jun 2008 4 Jeg synes den er rigtig god, med lidt udbygning virker den geneialt :) Lære mig os lidt mere om formålet med oop og klasser generalt Kommentar af wicez (nedlagt brugerprofil) d. 02. Dec 2005 5 God beskriv af OOP Kommentar af mr-kill d. 28. Nov 2005 6 super nice :D Kommentar af there-is-only-xul d. 30. Dec 2005 7 fair artikel, men 1) brug singleton 2) $this->products["$pnum"] er lidt forkert, da der ikke skal " " omkring $variable 3) undgå at ligne php.net/oop så meget.. Kommentar af pvtsommer d. 07. Apr 2006 8 Virkelig flot og overskueligt sat op! Kommentar af sommer89 d. 29. Nov 2005 9 Fin artikel. Kan bestemt anbefales. Kommentar af windcape d. 29. Jul 2007 10 rimelig god, men konceptet kunne være designet meget bedre med automatisk serialization via. en singleton.