Du setzt die Sessions auf jeder Seite im Shop ein.
Es muss also überall der Befehl session_start(); sein.
Vorsichtshalber würde ich ihn vor der ersten Ausgabe schreiben. Weiß aber nicht ob das notwendig ist.
Struktur:
ArtikelAnzahl = Anzahl / Menge des Artikels (Array)
ArtikelNummer = Artikelnummer (Array)
Also: Session starten:
Danach kannst du auf alle Sessionvariablen mit $_SESSION["Elementname"] zugreifen.
Beispiel: Status des Warenkorbs:
PHP:
$anz = 0;
for($i=0;$i<count($_SESSION["ArtikelAnzahl"]);$i++)
{
$anz += $_SESSION["ArtikelAnzahl"][$i];
}
echo "Sie haben ".$anz." Artikel in ihrem Wahrenkorb.";
Zum Hinzufügen:
PHP:
$_SESSION["ArtikelAnzahl"][] = $anzahl;
$_SESSION["ArtikelNummer"][] = $nummer;
Die Variablen $anzahl und $nummer können z.B. aus einem GET oder POST kommen.
Beispiel: addtobasket.php?anzahl=1&artnummer=151
Dann wird in den Warenkorb 1x Artikel 151 hinzugefügt.
Anzeige des Warenkorbs:
PHP:
echo "<h1>Ihr Warenkorb</h1>
<table width=600>
<tr>
<th width=50>Anz.</th>
<th width=*>Bezeichnung:</th>
<th width=100>Stückpreis:</th>
<th width=150>Zwischensumme:</th>
</tr>\n";
$Verbindung = @mysql_connect($db_host, $db_user, $db_pass);
for($i=0;$i<count($_SESSION["ArtikelAnzahl"]);$i++)
{
$anz = $_SESSION["ArtikelAnzahl"][$i];
$nr = $_SESSION["ArtikelNummer"][$i];
$SQLString = "SELECT * FROM Artikel WHERE ArtikelNummer=".$nr;
$Ergebnis = mysql_db_query($db_name, $SQLString, $Verbindung);
$info = mysql_fetch_array($Ergebnis, MYSQL_ASSOC);
echo "<tr>
<td width=50>".$anz."x</td>
<td width=*>".$info["Bezeichnung"]."</td>
<td width=100 align=right>".$info["Preis"]." €</td>
<td width=150 align=right><b>".($info["Preis"]*$anz)." €</b></td>
</tr>\n";
}
echo "</table>\n";
Leeren des Warenkorbs:
(Ganz einfach ;-))
Ich weiß nicht, ob das mit den Arrays so funktioniert (müsste es aber). Das Script ist nicht getestet.
Hab selbst mit Sessions wenig am Hut.
Purer Anfänger mit geringen Kenntnissen darüber.
Die Datenbank muss so aussehen:
Code:
Tabelle Artikel:
+---------------+-------------+---------+
| Artikelnummer | Bezeichnung | Preis |
+===============+=============+=========+
| 1 | Artikel A | 9.99 |
| 2 | Artikel B | 4.99 |
| 3 | Artikel C | 0.99 |
+---------------+-------------+---------+
Datentypen sollten sein:
+---------------+--------------+
| Artikelnummer | INT(5) |
| Bezeichnung | VARCHAR(255) |
| Preis | DOUBLE |
+---------------+--------------+
Ich glaube kaum, dass du mehr als 99999 Artikel haben wirst. Daher INT(5).
Der Preis müsste eine Zahl mit Komma sein. Daher Double (Zwei Nachkommastellen)
(Ich habe das noch nicht verwendet und weiß daher nicht, ob es den Datentyp Double gibt. Aber mit ziemlich hoher warscheinlichkeit schon.
Ich hoffe, dass ich helfen konnte.