Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] mehrere MySQL Datensätze auslesen und zusammenfassen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] mehrere MySQL Datensätze auslesen und zusammenfassen

    Hallo zusammen,

    Ich suche nun seit 2 Tagen aber leider finde ich nichts was mir wirklich weiter hilft, ggf. liegt es auch daran das ich nicht genau weiß was ich suchen muss

    Ich habe mir einen kleinen Shop gebaut mit Warenkorb, das läuft auch alles soweit und die Produkte stehen nun in einer Datenbank mit der ses_id,

    nun möchte ich alle Datensätze mit der session ID XY in eine Tabelle zusammenführen, dies habe ich nun auch mit einer while schleife versucht, die Ausgabe klappt doch finde ich keinen weg diese Ausgaben (meist 2-3) in einer Tabelle zusammen zu führen,

    Ausgabe aller Datensätze
    PHP-Code:
    $result mysql_query("SELECT * FROM ".$dbprefix."shop_cart WHERE membersesid='".mysql_real_escape_string($_GET['cartid'])."'");
    while(
    $row mysql_fetch_row($result))
    echo 
    $row[3]. '<br>'
    $row[3] lässt sich aber leider nicht so in die Datenbank eintragen wie ich möchte, er trägt mir leider nur jeweils den letzten Datensatz ein, ich brauche dort aber alle die die vorgegebene ses_id besitzen.

    sprich echo $row[3]; gibt aus

    Produkt #1
    Produkt #2
    Produkt #3

    trage ich es in die Datenbank ein steht dort aber nur Produkt #3, stehen sollte dort aber Produkt #, Produkt #2, Produkt #3.

    Das Soll mit den Mengen, Preisen etc. allen in einer Tabelle stehen aber soweit bin ich ja noch nicht.

    Wie oder mit was kann ich nun aus row[3] eine Variable mit allen Produkten erstellen und diese in die DB eintragen ?

    Vielen Dank für eure Tips/Hilfe.

  • #2
    Ich seh da kein Insert. Wenn ich raten soll würde ich sagen: mach Klammern um die WHILE Schleife!

    Kommentar


    • #3
      .. und außerdem würde ich die Methode mysql_fetch_row() nicht unbedingt benutzen, da die Spalten so nur indiziert werden. Wenn du also später mal dein Statement umbaust oder z.B. die Datenbank umbaust, musst du dein komplettes Programm umschreiben

      PHP-Code:
      while($row mysql_fetch_object($result)) {
          echo 
      $row->product_title;

      So zum Beispiel.. dann hast du die einzelne Zeile als Objekt. Wenn dir ein Array lieber ist, dann kannst du das natürlich auch machen:
      PHP-Code:
      while($row mysql_fetch_assoc($result)) {
          echo 
      $row['product_title'];

      .. packt dir das result in ein assoziatives Array

      Kommentar


      • #4
        und sowieso:

        PHP-Code:
        while($row=$stmt->fetch(PDO::FETCH_ASSOC)){..} 
        und keine mysql Schnittstelle.

        Kommentar


        • #5
          Wenn du nur die Daten aus den 3 Tabellen haben willst dann erstell doch einfach eine View Tabelle.

          Mfg Splasch

          Kommentar


          • #6
            danke erstmal für die Antworten!

            Ich habe bisher noch kein insert eingebaut weil ich ja vorher immer noch das Problem mit der schleife bzw. Variablen klären muss

            Aber daran soll es ja nicht Scheidern.



            PHP-Code:
            $result mysql_query("SELECT * FROM ".$dbprefix."shop_cart WHERE membersesid='".mysql_real_escape_string($_GET['cartid'])."'");
            while(
            $row mysql_fetch_assoc($result)) {

            $productname $row['productname'];

            mysql_query("INSERT ".$dbprefix."shop_orders SET
            ordertext             ='"
            .mysql_real_escape_string($productname)."'");




            setze ich das mysql_query("INSERT ".$dbpre... in die schleife erstellt er mir 2 DB Einträge, will diese ja aber in einem Eintrag zusammenfassen.

            Setze ich es außerhalb wird Garnichts eingetragen da die Variable ja nur in der Schleife funktioniert


            Zitat von splasch Beitrag anzeigen
            Wenn du nur die Daten aus den 3 Tabellen haben willst dann erstell doch einfach eine View Tabelle.

            Mfg Splasch
            es sind ja keine Tabellen, eine Tabelle aus der gelesen werden soll, wenn ein user ein produkt in den warenkorb einfügt ist es ein eintrag, wenn er 20 einfügt eben 20 einträge, diese sollen abgegriffen werden und in einer anderen Tabelle wieder als ein einziger eintrag eingefügt werden, dort werden dann später die Daten für die PDF oder sonstige einträge abgerufen.

            Kommentar


            • #7
              Zitat von A1MlezZ Beitrag anzeigen
              es sind ja keine Tabellen, eine Tabelle aus der gelesen werden soll, wenn ein user ein produkt in den warenkorb einfügt ist es ein eintrag, wenn er 20 einfügt eben 20 einträge, diese sollen abgegriffen werden und in einer anderen Tabelle wieder als ein einziger eintrag eingefügt werden, dort werden dann später die Daten für die PDF oder sonstige einträge abgerufen.
              Dann ist aber dein Titel definitive falsch:

              Ist nun 1 Tabelle oder doch mehrere entscheid dich mal.

              Kommentar


              • #8
                Sorry, sollte nun eher passen

                mehrere MySQL Datensätze auslesen und zusammenfassen

                Kommentar


                • #9
                  Guten Morgen,

                  atm bin ich soweit das er mir die Ausgaben in einem array zusammenfügt und ich diese auch in die DB eintragen kann:

                  PHP-Code:
                  $result mysql_query("SELECT * FROM ".$dbprefix."shop_cart WHERE membersesid='".mysql_real_escape_string($_GET['cartid'])."'");
                  while(
                  $row mysql_fetch_assoc($result)){

                  $productlist[]    = $row['productname'];
                  }

                  $productadd print_r($productlisttrue);

                  //Ist nur eine Ausgabe für mich!
                  echo "<pre>"
                  echo 
                  $productadd;
                  echo 
                  "</pre>";  

                  mysql_query("INSERT ".$dbprefix."shop_orders SET
                  ordertext             ='"
                  .mysql_real_escape_string($productadd)."'"); 

                  In der Datenbank steht:

                  Array
                  (
                  [0] => Produkt#1
                  [1] => Produkt#2
                  )


                  kann ich das ganze auch so ausgeben lassen das dort nur

                  Produkt#1
                  Produkt#2

                  eingetragen wird ? also ohne dieses array etc ?

                  Kommentar


                  • #10
                    Mal abgesehen davon das es gegen die Normalform spricht alles in einen Datensatz - Spalte zu packen.
                    Brauchst du das Array nur auf einen String umwandeln wenn du es nicht als Array in der Datenbank stehen haben willst.

                    Dazu gibt mehre Möglichkeiten. Da eben viele Wege nach Rom führen.

                    zB. implode()
                    http://php.net/manual/de/function.implode.php

                    Wenn du das Array beibehalten willst und nur Ausgeben möchtest dann eigenen sich foreach Schleifen sehr gut dafür.

                    Mfg Splasch

                    Kommentar


                    • #11
                      Mal abgesehen davon dass er nicht liest was hier geschrieben wurde und sein db - design falsch ist .. Mach es richtig oder garnicht.

                      Kommentar


                      • #12
                        darüber hatte ich mir auch schon so einige Gedanken gemacht, ggf. könnt ihr mir ja sagen wie ich es am besten mache, ich selbst habe mich vor die Wahl gestellt, einen Datenbankeintrag in dem ich alle Artikel aus dem Warenkorb zusammen fasse und auf folgende Spalten aufteile:

                        id | Datum | Bestellnummer | Artikel | Kundennummer | Preis | aktive

                        in Artikel wollte ich dann einen Quellcode eintragen bzw. eine Tabelle mit alle notwendigen Daten, Mengen, Preisen etc.

                        Grund: Die Datenbank bleibt übersichtlicher und man muss nur eine Zeile auslesen ....


                        Die andere Möglichkeit wäre ich lasse bei einem Artikel im Warenkorb den einen DB Eintrag und bei 10 sind es eben 10, lässt sich so auch ganz leicht im Browser ausgeben, PDF erstellen etc.

                        Würde sogar inzwischen fast behaupten das es die bessere Variante ist ....



                        Mein Nachteil ist das mir bei einigen Punkten einfach die Erfahrung fehlt aber das sollte ja nicht von einem vorhaben abhalten, wenn man eine nette Anlaufstelle wie php.de oder Google hat kann man alles lernen und es ist ja auch bekanntlich kein Meister vom Himmel gefallen (glaube ich *g*)



                        Über anregungen etc. würde ich mich sehr freuen



                        Zitat von Sakron Beitrag anzeigen
                        Mal abgesehen davon dass er nicht liest was hier geschrieben wurde und sein db - design falsch ist .. Mach es richtig oder garnicht.
                        Du sagst es, gib kreatives Feedback oder lass es ... auf flame kann ich verzichten ....

                        Ich kann dir auch gerne mal "PHP Einsteiger" definieren ....

                        Kommentar


                        • #13
                          id | Datum | Bestellnummer | Artikel | Kundennummer | Preis | aktive

                          in Artikel wollte ich dann einen Quellcode eintragen bzw. eine Tabelle mit alle notwendigen Daten, Mengen, Preisen etc
                          Du musst Beziehung zwischen den Tabellen herstellen. Zb eine 1/n oder n/m je nach dem was du genau brauchst.

                          Wenn du wirklich was über die Datenbank Entwicklung lernen willst lies dir das hier durch:
                          http://reeg.junetz.de/DSP/node7.html
                          http://v.hdm-stuttgart.de/~riekert/l...kelz/index.htm
                          http://www.phpwelt.de/tutorials/tutprint.php?tid=52

                          Wäre Zuviel hier das alles dir zu erklären.

                          Mfg Splasch

                          Kommentar


                          • #14
                            Lies dir den Artikel "Normalisierung" auf Wikipedia durch.

                            Dann hast du in etwa folgende Tabellen:
                            - Kunde
                            - Bestellung/Warenbork
                            - Artikel

                            - Bestellung <> Artikel

                            Alles andere, was du bis jetzt hast, ist Müll.

                            Kommentar


                            • #15
                              Zitat von ChristianK Beitrag anzeigen
                              Lies dir den Artikel "Normalisierung" auf Wikipedia durch.

                              Dann hast du in etwa folgende Tabellen:
                              - Kunde
                              - Bestellung/Warenbork
                              - Artikel

                              - Bestellung <> Artikel

                              Alles andere, was du bis jetzt hast, ist Müll.
                              Ja die Links hab ich ihm bereits gepostet zum Normalisieren und geben mehr Aufschluss als Wikipedia.

                              Was ich noch vergessen hab ist zur Planung des Er Diagramm kannst du die kostenlose Software Mysql Workbench benutzen.
                              Download unter: http://www.mysql.de/products/workbench/

                              Mfg Splasch

                              Kommentar

                              Lädt...
                              X