Shop Bestellsystem Problem

OP #3949297
Lesenswert?
• ▲
▼
Problem:
Bei einem Shop kann ein Kunde (test_benutzer) bestellen. Dazu legt er 
die Produkte im Warenkorb.
1
DATENBANKTABELLE WARENKORB
2
id  produktid  benutzer
3
1   47         test_benutzer
4
2   925        test_benutzer
5
3   12         einbenutzer
6
DATENBANKTABELLE KATALOG
7
id  name             verfügbar
8
47  Widerstand 1K    10
9
12  Kondensator 2pF  0
10
925 Fernseher        12
Dann kommt der Bestellprozess (bei nichtverfügbarkeit geblockt), der 
Kunde gibt seine Daten an, diese werden in SESSIONS gespeichert.
Nun möchte ich, dass die folgenden Dinge passieren:
- in die Tabelle bestellungen werden die Daten eingegeben (gelöst).
- jedes Produkt, das er im Warenkorb hat, wird in der Tabelle Katalog 1 
weniger verfügbar. (?)

$user ist definiert.
So würde ein herausfinden der Datensätze aussehen:
1
$db=mysqli_connect("host","xxxxxxxx","xxxxxxxx");
2
    mysqli_set_charset($db,"utf8");
3
    mysqli_select_db($db,"shop");
4
    $sql = "SELECT * FROM warenkorb WHERE benutzer='$user'";
5
    $result = mysqli_query($db,$sql);
6
    while ($row = mysqli_fetch_assoc($result)){
7
      //mache was mit den Daten
8
    }
9
    mysqli_close($db);
Nur wie kann man die Verfügbarkeit für JEDES der Produkte im Warenkorb 
von Benutzer $user um 1 dekriminieren?

Für 1 Produkt kann man das so machen, wobei ? die produktid aus der 
Tabelle warenkorb ist.
1
$sql="UPDATE katalog SET verfuegbarkeit=verfuegbarkeit-1 WHERE id=?"
Gast #3950608
Lesenswert?
• ▲
▼
Paul Schmitz schrieb:
> $sql="UPDATE katalog SET verfuegbarkeit=verfuegbarkeit-1 WHERE id=?"

Das bedeutet für mich, dass jeder Kunde nur jeweils ein Teil aus dem 
Sortiment bestellen darf.

Paul Schmitz schrieb:
> STK500-Besitzer schrieb:
>> Man darf nur jeweils ein Teil bestellen?
>> Komischer Laden...
>
> Darf man nicht nur 1, man kann mehrere im Warenkorb haben, die dann alle
> Bestellt werden.

Mein Post war wohl missverständlich.

Eine Bestellmenge kann man nicht eingeben?
Gast #3950620
Lesenswert?
• ▲
▼
Nase schrieb:
> Paul Schmitz schrieb:
>> $sql = "SELECT * FROM warenkorb WHERE benutzer='$user'";
> Du solltest Grundlagen lernen, sofern du mit deinem Shop irgendetwas
> Ernsthaftes vorhast.

Gut, "benutzer" könnte der Effizienz wegen als INT verwirklicht werden, 
außerdem ein Semikolon and Ende der Abfrage. Aber das ist doch für ein 
Warenkorb-System, in dem vielleicht mal ein paarhundert Einträge 
gleichzeitig stehen, erstmal egal.
Natürlich nur, wenn $user gegen SQL-Injection geschützt ist.

Paul Schmitz schrieb:
> $db=mysqli_connect("host","xxxxxxxx","xxxxxxxx");
Ich würde Benutzername, Passwort und den Namen der Datenbank in 
Variablen auslagern und diese in einer include-Datei (z.B. Namens 
sql_data.php) aufbewahren:
Wenn du dann einmal die Login-Daten änderst (z.B. wegen Server-Umzug, 
zweites System aufbauen, ...) musst du nur an einer Stelle die SQL-Daten 
anpassen und nicht in jedem Skript einzeln.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren