Warenkorb


#1
Hallo zusammen,
ich sitze an meinem Warenkorb fest.
Habe eine Tabelle mit "id, user, artikel, menge"
der user wird nach IP oder Nutzername zugewiesen.

In Artikel werden die Artikelnummern mit , getrennt aufgezählt und passend dazu die mengen
Num: 1,2,3,4
Men: 7,5,1,2

nun möchte ich diese trennen
PHP:
            $warenkorb = $result->fetch_assoc();
          
            $artikel = explode(",", $warenkorb['warenkorb_artikel']);
            $menge = explode(",", $warenkorb['warenkorb_menge']);
und um damit weiter arbeiten zu können möchte ich diese in einem Array wieder zusammenfügen, meine Versuche sind alle fehlgeschlagen hoffe hier kann mir jemand weiterhelfen.

Vielen Dank im vorraus
Schmiedebolzen
 
Zuletzt bearbeitet von einem Moderator:

Bratkartoffel

gebratene Kartoffel
Premium-User
#2
Hi,

würde hier eher zu einer denormalisierten Speicherung innerhalb der Datenbank raten. Macht vieles (unter anderem auch das hier) einfacher.

Also pro Artikel einen Eintrag in die Tabelle, nicht mehr Kommata-getrennt.

Grüsse,
BK
 
#4
Vielen Dank für die schnellen Antworten, darüber hatte ich auch nachgedacht aber würde es nicht den Ladevorgang stark verzögern?

ComFreek du hast es erfasst genau dieses Ergebnis wollte ich haben ;)
 

Bratkartoffel

gebratene Kartoffel
Premium-User
#5
Vielen Dank für die schnellen Antworten, darüber hatte ich auch nachgedacht aber würde es nicht den Ladevorgang stark verzögern?
Auf was bezogen? Die bisherige Speicherung und das zip oder die normalisierte Speicherung (genau das meinte ich @ComFreek :))

Ich denke dass du in beiden Fällen keine messbaren Unterschiede festellen wirst.

Grüsse,
BK
 
#6
Vielen Dank für eure Mühe, hat super funktioniert.
Ich habe es jetzt so gemacht dass alles seine eigene Zeile bekommt und per LEFT JOIN abgefragt.

SQL:
SELECT
 warenkorb.*,
 artikel.id,
 artikel.name,
 artikel.kategorie,
 artikel.preis,
 artikel.bild1
FROM
 warenkorb
LEFT JOIN
 artikel ON warenkorb.artikel = artikel.id
WHERE
 ip = '$_SERVER[REMOTE_ADDR]' OR ip = '$_SESSION[username]'[/sql]
 
Zuletzt bearbeitet von einem Moderator:

Bratkartoffel

gebratene Kartoffel
Premium-User
#7
Hi,

noch eine kleine Anmerkung: Ich würde die Variablen nicht direkt in SQL verwenden, sondern entweder escapen oder (besser) mit Prepared Statements arbeiten.
Zweiteres hätte den Vorteil, dass du es einmal lernst und dann überall richtig machen kannst. Wenn du es immer so machst, dann hast du kein Problem mehr mit SQL-Injections.

Grüsse,
BK