janosch: MySQL: doppelte datensätze zu einem zusammenfassen

hallo,

ich habe eine shopdatenbank mit folgenden feldern:

id
datum
name
vorname
bestellung
adresse
tel

mein php-script schreibt bei bestellungen dort datensätze rein:
+++++++++++++++++++++++++++++++

$db->query("INSERT INTO $shop_table (name,vorname,datum,newsletter,email,typ,strasse,plz,ort,telefon,fax,long_text,nachricht,bestellnummer) VALUES ('$b_last','$b_first','$datum','$newsletter','$b_email','$typ','$b_addr','$b_zip','$b_city','$b_phone','$b_fax','$strWurdeGekauft','$comment','$bestellungnr')");

+++++++++++++++++++++++++++++++

so weit so gut.

kommt jetzt eine neue (2.) bestellung von herrn mustermann rein, will ich alle datensätze nach vor-, zunammen und ort prüfen, falls vorhanden, dann alle bestellungen in einen datensatz fassen. wie kann ich mit php prüfen ob der datensatz vorhanden ist.

janosch

  1. yo,

    id
    datum
    name
    vorname
    bestellung
    adresse
    tel

    das sieht ein wenig danach aus, als wenn es keine kundentabelle gibt, sondern man bei jeder bestellung immer wieder seine daten eingeben muss. ob das sinnvoll ist oder nicht, kann ich in deinem fall nicht beurteilen, aber es ist ein hinweis wert, bestellungen und kunden zu trennen.

    was mir noch aufgefallen ist, die spalten in der tabellenbeschreibung stimmt nicht mit den spalten in der insert answeisung überein.

    kommt jetzt eine neue (2.) bestellung von herrn mustermann rein, will ich alle datensätze nach vor-, zunammen und ort prüfen, falls vorhanden, dann alle bestellungen in einen datensatz fassen. wie kann ich mit php prüfen ob der datensatz vorhanden ist.

    das zu prüfen ist sehr leicht, einfach einen Select über die gewünschten spalten machen. <--- ABER, zuvor musst du das genauer spezifizieren. zum einen würde hier fehlende kundentabelle sinn machen, da man dann einfach über die ID des kunden suchen könnte. es können ja auch theoretisch zwei kunden mit gleichen namen im gleichen haus wohnen, obwohl das wohl eher selten vorkommen wird. außerdem willst du ja nicht immer die bestellung zusammenfassen, sondern vielleicht nur, wenn sie am gleichen tage gemacht wird. so wird es glaube ich bei quelle und co gemacht.

    jetzt aber zu einem viel wichtigeren punkt. eine bestellung beinhaltet ja noch keine artikel. ich kann nur vermuten, aber ich denke mal, du hast bis jetzt die bestellungen und die artikel nicht voneinander getrennt ?

    das ist nämlich sehr wichtig, wo deine artikel stehen, wenn du zum beispiel zwei bestellungen am gleichen tag von einer person zu einer bestellung zusamenführen willst.

    Ilja

  2. Hello,

    hallo,

    ich habe eine shopdatenbank mit folgenden feldern:

    id

    datum        Datum, seit wann er Kunde ist?

    name
    vorname

    bestellung   was hat die in dieser Tabelle zu suchen?

    adresse
    tel

    Sieht verflict nach mangelhafter Normalisierung aus

    T_Kunde
         T_Bestelllung
              T_Beestellposition
                   T_Artikel

    Und um festzustellen, ob ein Kunde schon mal 'was bestellt hat, solltest Du festlegen, anhand welcher Kriterien der Kunde wiedererkannt werden soll. Was soll ihn denn authentifizieren?

    Angenommen, da heißt einer Hort Meier, davon gibt es ca. 750 in DE.

    Also wäre es doch sowieso zweckmäßig, wenn Du ihn vor dem Kauf "nachweisbar" über seine Rechte aufkläsrt, also ihm einmal per Post eine Anmeldebestätigung für den Shop mit Loginname und Passwort schickst. Dann kann er immer wiedererkannt werden. Anonyme Verkäufe sind über das Internet nicht so gesund für den Lieferanten...

    Liebe Grüße aus http://www.braunschweig.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen