Eines Warenkorbsystem für Anfänger
Ein kurzes Tutorial für Anfänger um ein einfaches aber funktionelles Warenkorbsystem zu erstellen. Freue mich über Rückmeldungen und Kritik - denn nur so verbessert man sich :)
2009-12-31 14:25:21 2009-12-31 14:25:21 web3hoster
CREATE TABLE books ( id int(6) unsigned NOT NULL auto_increment, title varchar(100) NOT NULL default '', author varchar(100) NOT NULL default '', price decimal(5,2) NOT NULL default '00.00', PRIMARY KEY (id) ) TYPE=MyISAM; INSERT INTO books VALUES (1, 'Geisterseher', 'Schiller Friedrich', '24.99'); INSERT INTO books VALUES (2, 'Wanderhure', 'Oolon Colluphid', '17.99'); INSERT INTO books VALUES (3, 'Micha der Streuner', 'Oolon Colluphid', '14.99');Um Programmieren die Arbeit mit MySQL zu erleichtern wurde PHPmy Admin geschaffen. Bevor du die Daten einpflegen kannst musst du die MySQL Datenbank anlegen, nachdem du das getan hast kannst du die Datenbank in phpMy Admin aufrufen. Die Datenbank ist Links aufgelistet. Klicke dich in die von dir zuvor angelegte Datenbank. Neue Tabelle in Datenbank `Datenbank´ erstellen. Gib den Namen books ein und 4 Felder und klicke auf OK. Nun kannst du die Daten von Punkt 1. bis 8. eingeben. Bitte achte immer auf die groß und klein Schreibung! Danach kannst du unter dem Punkt Einfügen die Daten von 9. bis 11. in die Tabelle eingeben. Die oben angebenen Daten findest du im Anhang in der Datei php-cart-1.txt Nachdem wir unsere Datenbank angelegt haben können wir damit beginnen unsere Shopping Cart anzulegen. Welche Ansprüche an die Shopping Cart gestellt werden Die Cart die wir erstellen sollte einfach zu bedienen sein für Internet Nutzer. Wir wollen eine Nachricht auf jeder Seite anzeigen (z.B. " Sie haben 5 Artikel in Ihrem Warenkorb"), auf die der Kunde klicken kann um in den Warenkorb zu gelangen. Jeder Artikel kann gelöscht werden oder die Anzahl kann verändert werden. Alle Lager Details haben wir in unserer Datenbank angelegt, alles was wir nun benötigen für jeden Kunden ist die ID jedes Produkts das zum Warenkorb hinzugefügt wird. Um dies umzusetzten nutzen wir PHP built-in Session Handles Kapazitäten. Sessions in PHP nutzen PHPs Session Handles sind einfach zu verstehen Um die Session zu beginnen, fügen wir einfach session start(); hinzu am Anfang unseres Codes. Danach können die Session Variablen oder Arrays etc. hinzugefügt werden: Code:
1
$_SESSION['name'] = 'Matthew'; $_SESSION['age'] = 31;
Diese $_SESSION Varaible wird nun auf allen Webseiten unseres PHP Skripts verfügbar sein (wenn session start(); als erstes angeben wird. Ein paar Worte über Cookies Das Grundlegende verhalten von Sessions ist die Session ID weiter zu geben (ein langer String aus Zahlen und Nummern die den Kunden identifizieren für den Server) wie ein Cookie auf dem lokalen PC. Auch wenn die Funktion Cookies ausgeschaltet ist funktioniert der Befehl Session - PHP gibt die ID jeder Seite weiter (in der Form meineseite.php?PHPSESSIONID=) somit gehen gemachte Informationen oder Artikel im Warenkorb nicht "verloren" von Seite zu Seite. Die Cart (Warenkorb) erstellen Wir werden nun den Inhalt der Shopping Cart in einer List anlegen wo die Produkt IDs durch Komma getrennt in der Session Namens (erwartungsgemäß) ´cart` - als Beispiel angelegt werden, in der Cart mit "1,1,3,1,2" sind 3 Artikel aufgelistet 3Produkte von #1, und je ein Produkt von #2 und #3. Als erstes erstellen wir den Code um auf jeder Seite den Text "Sie haben X Artikel..." Nachricht auf jeder Seite anzeigen zu lassen: Code:
1
function writeShoppingCart() {
2 $cart = $_SESSION['cart'];
3 if (!$cart) {
4 return '<p>Sie haben keine Artikel in Ihrem Warenkorb</p>';
5 } else {
6 // Gliedert die Session variale auf
7 $items = explode(',',$cart);
8
9 return '<p>Sie haben <a href="cart.php">'.count($items).' item'.$s.' in Ihrem Warenkorb</a></p>';
10 }
11 }
Den hier angegebenen Code finden Sie in der Datei php-cart-2.txt Diese Funktion bekommt als erstes den Wert ´cart1´Session Variable zugewiesen und wird in der lokalen Variable $cart gespeichert. Wenn die Cart (Warenkorb) leer ist, geben wir eine passende Nachricht zurück; wenn nicht nutzen wir die Funktion explode() um ein Array von allen Produkten auf der Cart (Warenkorb) zu erstellen und diese dann zu zählen count() und das Resultat anzuzeigen. Nun können wir die richtige Nachricht irgendwo auf der Seite anzeigen: echo writeShoppingCart(); Ich hoffe ich habe mich verständlich ausgedrückt. Machen wir weiter an dem Punkt den Inhalt der Cart (Warenkorb) selbst anzuzeigen. Zeig mir die Artikel Die Shopping Cart (Warenkorb) Seite selbst kann auf verschiedene erreicht werden. Der Kunde hat vielleicht auf den Link erstellt durch die Funktion writeShoppingCart() oben geklickt, oder vielleicht auf den Link ´Zum Warenkorb hinzufügen´ auf der Produkt Seite. Wenn das letztere geschehen ist, müssen wir diesen Klick abfangen und den Inhalt unseres Warenkorbs aktualisieren bevor die neue Produktliste angezeigt wird - einfach genug, alles was wir tun müssen ist die ID des gewählten Produkts zur ´cart´Session Variablen hinzuzufügen. Unser Produkt Link wird wie folgt aussehen:
<a href="cart.php?action=add&id=1">Zum Warenkorb hinzufügen</a>Keine Gedanken wegen der ´Aktion=add´, dazu kommen wir später. Die ID kann nun von $_GET[?id?] verarbeitet werden und fügt der Cart (Warenkorb) hinzu: Code:
1
$cart = $_SESSION['cart'];
2 if ($cart) {
3 $cart .= ','.$_GET['id'];
4 } else {
5 $cart = $_GET['id'];
6 }
7 $_SESSION['cart'] = $cart;
Nun beschäftigen wir uns mit dem Inhalt unserer Cart (Warenkorb)! Mehrere Artikel, ein Produkt Wie in unserem Beispiel zuvor ist es möglich das ein Kunde mehr als ein Arikel von einem Produkt bestellen möchte. Wir wollen nun etwas hinzufügen das eine Kombination des selben Produkts in einer Anzeige angezeigt wird (mit einer entsprechenden Anzeige der genauen Anzahl).
1
$cart = $_SESSION['cart'];
2 if ($cart) {
3 $items = explode(',',$cart);
4 $contents = array();
5 foreach ($items as $item) {
6 $contents[$item] = (isset($contents[$item])) ? $contents[$item] + 1 : 1;
7 }
Nun nachdem wir die Liste der Produkt IDs verwarbeitet haben, haben wir wiederholt durch sie ein neues Array namens $contents erstellt, welche aus dem Key=>Werte Paar wo der key durch die Produkt ID und dem Wert der Anzahl des Produkte im Warenkob zusammengesetzt wird. So um unserer Bespiel zuvor zu verwenden, eine Cart (warenkorb) enthält "1,1,3,1,2" wird in ein Array umgesetzt ´1´=>3,´2´=>1,´3´=>1. Nun da wir eine akkuraten Zähler für jedes Produkt haben, nun können wir die Produkte eine anfrage an die Datenbank senden um die Details in einer Tabelle auszugeben:
1
$total = 0;
2 $output[] = '<table>';
3 foreach ($contents as $id=>$qty) {
4 $sql = 'SELECT * FROM books WHERE id = '.$id;
5 $result = $db->query($sql);
6 $row = $result->fetch();
7 extract($row);
8 $output[] = '<tr>';
9 $output[] = '<td><a href="cart.php?action=delete&id='.$id.'" class="r">Löschen</a></td>';
10 $output[] = '<td>'.$title.' von '.$author.'</td>';
11 $output[] = '<td>'.$price.'?</td>';
12 $output[] = '<td><input type="text" name="qty'.$id.'" value="'.$qty.'" size="3" maxlength="3" /></td>';
13 $output[] = '<td>'.($price * $qty).'?</td>';
14 $total += $price * $qty;
15 $output[] = '</tr>';
16 }
17 $output[] = '</table>';
18 $output[] = '<p>Gesamtsumme: £'.$total.'</p>';
Notiz. Ich nutze eine PHP KLasse um die Datenbank Verbindungen zu verwalten, ihr Code muss etwas umgeschrieben werden. Ganz einfach - wir wiederholen das neue Array $contents und schicken eine anfrage an die Datenbank für jede Produkt ID. Dann geben wir die relevanten Details für jedes Produkt aus. Title, Autor und Preis und am zeigen wir den Gesamtpreis für die Bestellung an. Für jeden Artikel fügen wir einen Link ein um den Artikel vom Warenkorb zu löschen, eine Textbox die die momentane Anzahl des Artikel anzeigt und ein Gesamtpreis (dieser wird nur vom Basis Preis abweichen wenn die Anzahl pro Produkt höher als 1 ist). Der Grund warum ich $output[] = verwende ist weil ich das Array später auf dem Bildschirm ausgeben will. So weit so gut - nun wie löschen wir Produkte von dem Warenkorb? Ein Produkt löschen Wie oben gezeigt, der Link um eine Produkt zu löschen folgt dem selben Format wie der `zum Warenkorb hinzufügen´Link:
<a href="cart.php?action=delete&id=1">Löschen</a>Erweitern wir den Code von vorhin und fügen switch() hinzu um die verschiedenen Aktionen zu verwalten die im Warenkorb geschehen können:
1
$cart = $_SESSION['cart'];
2 $action = $_GET['action'];
3 switch ($action) {
4 case 'add':
5 if ($cart) {
6 $cart .= ','.$_GET['id'];
7 } else {
8 $cart = $_GET['id'];
9 }
10 break;
11 case 'delete':
12 if ($cart) {
13 $items = explode(',',$cart);
14 $newcart = '';
15 foreach ($items as $item) {
16 if ($_GET['id'] != $item) {
17 if ($newcart != '') {
18 $newcart .= ','.$item;
19 } else {
20 $newcart = $item;
21 }
22 }
23 }
24 $cart = $newcart;
25 }
26 break;
27 }
28 $_SESSION['cart'] = $cart;
Neu hinzugefügt ´delte´case durch die ´cart´session, sucht nach Produkt IDs die NICHT zu löschen sind und fügt diese zu einer temporären Variablen namens $newcart hinzu. Nachdem der Vorgang abgeschlossen ist wird der neue Inhalt wieder in $cart eingefügt. Produkt aktualisieren Als letztes werden wir Kunden erlauben den Inhalt des Warenkorbs zu aktualisieren, durch eine manuelle Änderung der Anzahl der Produkte. Um das umzusetzten, werden wir die Shopping cart in den Befehl
Related topics
Unkaputtbare Hyperlinks
Wer das Publizieren im Internet nicht bloß als technische Spielerei oder gar eine Designtätigkeit auffasst, wird automatisch ein digitaler Bibliothekar ...
Autor :
chris@
Category:
PHP-Tutorials
Templates mit PHP
Dieses Tutorial beschreibt in mehreren Teilen wie man Templates in PHP verwendet. Ferner erhält man eine Einführung in die Entwicklung eines eigenen Templatesystems. ...
Autor :
mortalan@
Category:
PHP-Tutorials
Spielereien mit Zeit und Datum
Das Rechnen mit Datum und Zeit ist nur selten unproblematisch, PHP stellt uns dafür zahlreiche Funktionen zur Verfügung. Wir wollen uns im folgenden ein paar davon ansehen und an Beispielen erproben. ...
Autor :
Stephane
Category:
PHP-Tutorials
Login/Memberbereich mit Sessions
Adminmodul für das eigene Gästebuch, Controlpanel eines Forum oder einfach nur für ein geschützer Bereich. ...
Autor :
webmaster1@
Category:
PHP-Tutorials
phpinfo() shows nothing
Today I want to show you how to output the phpinfo(). ...
Autor :
Webmasterfreaky
Category:
PHP-Tutorials
Responsive Webdesign
Einstieg in Responsive Webdesign und Grids ...
Autor :
admin
Category:
Other tutorials