Einfaches Warenkorbsystem

thommy1972

Mitglied
Hallo
Habe mal wieder einer Frage...
Ich habe folgende Seite:
http://el-presenta.shop.fm/catalog.php?kategorie=Top-Angebote

Nun bräuchte ich aber einen Warenkorb in den dann die Menge und Artikel kommt...
Wenn ich einfach ein Feld mache mit Menge und ein Input Button kann ich die Werte (theoretisch) in eine Datenbank schreiben.
Von dort auch wieder auslesen u.s.w.
Aber was mach ich wenn ein Besucher einfach die Seite verlässt ? Dann hab ich zig Artikel in der DB ohne Bestellung....
 
Hallo,

also entweder speicherst du das ganze nicht in der DB sondern in einem Cookie/Session.
Oder wenn du es in einer DB speichern willst dann speichere doch einen Timestamp mit dazu und lösche (z.B. bei einem erneuten Scriptaufruf) die Einträge in der DB welche ein bestimmtes Alter (z.B. 1 Tag) erreicht haben.
 
Was hast du denn für ein Problem mit den Sessions?

Ich gehe mal davon aus, dass wenn du keine Session-ID hast auch diese nicht in deiner DB speicherst - folglich gehe ich davon aus, dass du dafür die IP-Adresse zu rate ziehst. Solltest du die IP-Adresse hernehmen dann könnte der Warenkorb theoretisch (versehentlich) durch einen anderen Besucher übernommen werden. Wie bekannt haben die wenigsten Internetuser eine feste IP-Adresse.
Das nur nebenbei.

Nur zu deiner Frage:
PHP:
// aktuelle Zeit als Timestamp ermitteln
$aktuelle_zeit = time();

// Timestamp ermitteln ab alle älteren Einträge gelöscht werden sollen.
$alte_zeit = $aktuelle_zeit - 86400; // 86400 = 60 Sekunden * 60 Minuten *24 Stunden = 1 Tag oder eben 86400 Sekunden

mysql_query("DELETE FROM `TABELLE` WHERE `timestamp` < $alte_zeit");

Das ganze kann man natürlich auch noch kürzen aber für das Verständnis habe ich die "Langform" gewählt.

Code natürlich ungetestet.
 
Script scheint zu funktionieren... Jetzt hab ich aber ein anderes Prob ^^
Hab ja in meiner Datenbank nun die IP, TIMESTAMP und einzelpreis des Artikels.
Nun erechne ich mit $gesamtpreis = $menge * $stpreis den Gesamtpreis der einzelnen Artikel.
Das ganze ist in einer WHILE Schleife gepackt etwa so:
PHP:
<?php
include("connect.php");
$sql = "SELECT * FROM warenkorb WHERE ip = '".$_POST['ip']."'";
$ausgabe = mysql_query($sql);
$row = mysql_fetch_array(mysql_query("SELECT * FROM warenkorb WHERE ip = '".$_POST['ip']."'"));
while($row = mysql_fetch_array($ausgabe))
  {
echo "<div align='center' style='background-color:#FFFFE0; border:1px solid #804000;'>";
echo "<table align='center' width='600'>";
echo "<tr><td width='100px'>Menge: </td>";
echo "<td>Test";
echo $row['menge'];
echo "</td></tr>";
echo "<tr><td>Artikelnummer: </td>";
echo "<td>";
echo $row['artnr'];
echo "</td></tr>";
echo "<tr><td>Artikel: </td>";
echo "<td>";
echo $row[titel];
echo "</td></tr>";
echo "<td>Einzelpreis: </td>";
echo "<td>";
echo $row[stpreis];
echo "</td><tr>";
echo "<td><strong>Gesamtpreis: </td>";
$gesamtpreis = $row[stpreis] * $row[menge];
echo "<td>";
echo $gesamtpreis;
echo ",00 Euro</strong>";
echo "</td></tr></table></div>";
  }
  echo "<a href='index.php' target='_parent'>Zurück</a>";
  ?>

Wie errechne ich aber nur aus allen Gesamten den Endbetrag also alle Gesamtpreise der Artikel (z.B. 3*5 Euro = 15 Euro aus Artikel 1, 2*3=6 euro aus Artikel 2 u.s.w.)
 
Zuletzt bearbeitet:
In dem du dir eine zweite Variable machst zu der du innerhalb deiner while-Schleife die jeweiligen preise hinzu addierst.

Also z.B.
PHP:
while() {
$total = $total + $gesamtpreis;
}
echo 'Sie Summe Ihrer Bestellung beträgt '.$total' Euro';

Ausserdem würde ich das
PHP:
echo ",00 Euro</strong>";
sein lassen und den Betrag als Float speichern. Für die Ausgabe des Preises dann ggf. sprintf nach dem Muster
PHP:
sprintf("%01.2f", $money);
nehmen um den Punkt durch ein Komma zu ersetzen.
 
Zurück