mySQL Abfrage, Ausgabe der Werte

Einklappen
Dieses Thema ist geschlossen.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • mySQL Abfrage, Ausgabe der Werte

    Hallo liebe Community,

    hab, bevor ich hier schreibe, schon etliche Foren und Tutorials durchwälzt und ausprobiert. Leider bisher ohne den gewünschten Erfolg.

    Hier mein Quellcode:
    PHP-Code:
    <?php
    include 'include/db.inc.php';

         
    error_reporting(E_ALL);


         
    // Datenbankabfrage, alle Hauptartikel auslesen (WaWi)
         
    $hauptartikelauslesen mysql_query("SELECT
                                      artikelnummer1,
                                      artikelnummer2,
                                      artikelnummer3
                               FROM
                                      `meineonlinewawi`

                               WHERE  duplikat LIKE 'NEIN'
                               AND    duplikatanzahl LIKE '2'
                               ORDER  by
                                      `artikelnummer1` ASC"
    );
                                      
         
    // while Schleife 1   
         
    while($row mysql_fetch_assoc($hauptartikelauslesen)){  

         
    // Datenbankabfrage, frage Bestand der Artikel ab (gambio Shop)   
         
    $bestandsabfrage mysql_query("SELECT products_quantity 
                                           FROM products 
                                          WHERE products_model in ('"
    $row['artikelnummer1'] ."', '"$row['artikelnummer2'] ."', '"$row['artikelnummer3'] ."')  LIMIT 3");
         
         
    print_r($row);
         echo 
    '<hr>'
         }
               
         
    ?>
    Alles was ich brauche ist eine Lösung wie ich die 3 Werte products_quantity von...
    • artikelnummer1
    • artikelnummer2
    • artikelnummer3

    ...aus der Datenbankabfrage ausgeben kann - um sie dann weiter zu verarbeiten.
    Möchte die drei Zahlen dann nehmen und mit php min vergleichen.
    Aber scheitere ja schon an der Asugabe

    Wahrscheinlich stelle ich mich nur blöd an gerade, bin dankbar für Eure Hilfe.
    Zuletzt geändert von kugelschubs; 22.09.2015, 11:16.

  • #2
    $bestandsabfrage ist eine Result-Resource die (wie weiter oben in der ersten Abfrage ja auch) mittels mysql_fetch_xxx() zeilenweise ausgelesen werden können.

    Wenn du offenbar schon Neueinsteiger bist, willst du dich aber ohnehin nicht mehr mit mysql-krams beschäftigen sondern dir gleich ein Tut anschauen, dass auf mysqli oder PDO basiert.
    Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
    Schön - etwas Geschichte kann ja nicht schaden.
    Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

    Kommentar


    • #3
      Hab jetzt versucht das ganze mal mit mysqli umzusetzen,
      klappt bis auf die Tatsache das nur ein Datensatz ausgegeben wird statt mehreren. Da könnte ich jetzt bitte nochmal Hilfe brauchen.
      Vermute mal stark das es an meiner Verschachtelung liegt und das ganze dann in ein array gepackt werden muss, aber wie?

      PHP-Code:
      <?php
      $mysqli 
      = new mysqli("localhost""Nutzer""Passwort""Datenbank");

      /* check connection */
      if ($mysqli->connect_errno) {
          
      printf("Connect failed: %s\n"$mysqli->connect_error);
          exit();
      }

      $query "SELECT artikelnummer1, artikelnummer2, artikelnummer3 FROM meineonlinewawi WHERE duplikat LIKE 'NEIN' AND duplikatanzahl LIKE '2' ORDER by artikelnummer1 ASC";
      if (
      $result $mysqli->query($query)) {

          
      /* fetch associative array */
          
      while ($row $result->fetch_assoc()) {
              echo  
      'Hauptartikel: '.$row['artikelnummer1'].'&nbsp;&nbsp;&nbsp;&raquo;&nbsp;Duplikat 1: '.$row['artikelnummer2'].'&nbsp;&nbsp;&nbsp;&raquo;&nbsp;Duplikat 2 :'.$row['artikelnummer3'].'<br>'."\n";
              
      $bestandsabfrage "SELECT products_quantity FROM products WHERE products_model in ('"$row['artikelnummer1'] ."', '"$row['artikelnummer2'] ."', '"$row['artikelnummer3'] ."')  LIMIT 3";
              if (
      $result $mysqli->query($bestandsabfrage)) {
              while (
      $row $result->fetch_row()) {
              echo 
      ''.$row[0].' '.$row[1].' '.$row[2].'';
              }
              }
          }
          
          
      /* free result set */
          
      $result->free();
      }

      /* close connection */
      $mysqli->close();

      ?>
      Zuletzt geändert von kugelschubs; 22.09.2015, 19:40.

      Kommentar


      • #4
        Du solltest in Schleifen keine SQL-Abfragen ausführen. Das ist selten eine gute Idee. Verwende stattdessen besser einen INNER JOIN oder LEFT JOIN.

        Verwende nicht LIKE für Vergleiche. Dafür gibt es den = Operator.

        Durchnummerierte Spalten deuten auf ein fehlerhaftes Datenbankdesign hin. Beschäftige dich mit dem Thema Normalisierung.

        Außerdem solltest du den Kontextwechsel beachten und Werte, die du in SQL-Abfragen einfügst, immer mit mysqli_real_escape_string() maskieren. Und Werte, die du in HTML-Code einfügst, müssen mit htmlspecialchars() maskiert werden. Wenn du das nicht machst, ist der Code im besten Fall einfach nur fehlerhaft und im schlimmsten Fall eine große Sicherheitslücke.

        &nbsp; sollte nicht als Abstandhalter missbraucht werden. Für Abstände gibt es CSS.

        Eine Code-Zeile sollte nicht mehr als 80 Zeichen haben, wenn du sie in einem Forum postest, sonst artest das in mühsamer Scrollerei aus.
        Zuletzt geändert von h3ll; 22.09.2015, 20:01.

        Kommentar


        • #5
          Zitat von h3ll Beitrag anzeigen
          Du solltest in Schleifen keine SQL-Abfragen ausführen. Das ist selten eine gute Idee. Verwende stattdessen besser einen INNER JOIN oder LEFT JOIN.
          Ich hab mir das mit INNEr JOIN und LEFT JOIN angeschaut und verstehe das Prinzip nicht wirklich dahinter.
          Ich muss ja 2 Datenbankabfragen machen.
          Die erste mit der ich aus Tabelle A meine variable Anzahl an Datensätzen mit immer 3 zusammengehörigen Artikelnummern auslese.
          Die zweite Datenbankabfrage aus Tabelle B verwendet nun genau diese abgefragten Artikelnummern aus der ersten Abfrage und ermittelt die Artikelbestände. Sowas kann doch logischerweise gar nicht in eine Abfrage zusammengefasst werden oder irre ich mich da jetzt?!

          Zitat von h3ll Beitrag anzeigen
          Verwende nicht LIKE für Vergleiche. Dafür gibt es den = Operator.
          Erledigt, siehe Code unterhalb.

          Zitat von h3ll Beitrag anzeigen
          Durchnummerierte Spalten deuten auf ein fehlerhaftes Datenbankdesign hin. Beschäftige dich mit dem Thema Normalisierung.
          Hab natürlich alles umbenannt fürs Forum. Normalisierung kann ich später auch noch betreiben. Erst einmal bin ich hier um Hilfe zu meiner Abfrage und der Ausgabe zu bekommen. Erst mal das Wichtige.

          Zitat von h3ll Beitrag anzeigen
          Außerdem solltest du den Kontextwechsel beachten und Werte, die du in SQL-Abfragen einfügst, immer mit mysqli_real_escape_string() maskieren. Und Werte, die du in HTML-Code einfügst, müssen mit htmlspecialchars() maskiert werden. Wenn du das nicht machst, ist der Code im besten Fall einfach nur fehlerhaft und im schlimmsten Fall eine große Sicherheitslücke.
          Erledigt, hoffentlich richtig ?!

          Zitat von h3ll Beitrag anzeigen
          &nbsp; sollte nicht als Abstandhalter missbraucht werden. Für Abstände gibt es CSS.
          Ich weiss, aber auf die Schnelle leg ich nich extra eine .css an. Brauche erst einmal einen funktionierenden php Code. Stilistische Fragen kommen danach ^^

          Zitat von h3ll Beitrag anzeigen
          Eine Code-Zeile sollte nicht mehr als 80 Zeichen haben, wenn du sie in einem Forum postest, sonst artest das in mühsamer Scrollerei aus.
          Auch geändert ^^


          PHP-Code:
           <?php
          $mysqli 
          = new mysqli("localhost""Nutzer""Passwort""Datenbank");

          /* check connection */
          if ($mysqli->connect_errno) {
              
          printf("Connect failed: %s\n"$mysqli->connect_error);
              exit();
          }

          $query "SELECT artikelnummer1, artikelnummer2, artikelnummer3 
                      FROM meineonlinewawi 
                     WHERE duplikat = 'NEIN' 
                       AND duplikatanzahl = '2' 
                     ORDER by artikelnummer1 ASC"
          ;

          $query $mysqli->real_escape_string($query);

          if (
          $result $mysqli->query($query)) {

              
          /* fetch associative array */
              
          while ($row $result->fetch_assoc()) {
                   echo 
          'Hauptartikel: '.$row['artikelnummer1'].'<br>'."\n";
                     echo 
          'Duplikat 1: '.$row['artikelnummer2'].'<br>'."\n";
                     echo 
          'Duplikat 2: '.$row['artikelnummer3'].'<br>'."\n";

                  
          $bestandsabfrage "SELECT products_quantity 
                                        FROM products 
                                       WHERE products_model in 
                                      ('"
          $row['artikelnummer1'] ."', 
                                       '"
          $row['artikelnummer2'] ."', 
                                       '"
          $row['artikelnummer3'] ."')";

                  if (
          $result $mysqli->query($bestandsabfrage)) {
                  while (
          $row $result->fetch_row()) {
                  echo 
          ''.$row[0].' '.$row[1].' '.$row[2].'';
                  }
                  }
              }
              
              
          /* free result set */
              
          $result->free();
          }

          /* close connection */
          $mysqli->close();

          ?>
          WÄRE NETT WENN IHR MIT CODEBEISPIELEN HELFT BZW. ANHAND MEINES CODES.
          BRAUCHE EINE SCHNELLE LÖSUNG VOR DEM WEIHNACHTSGESCHÄFT.
          DANKE IM VORAUS
          Zuletzt geändert von kugelschubs; 23.09.2015, 09:18.

          Kommentar


          • #6
            hab mal eine "Zeichnung" erstellt
            Angehängte Dateien

            Kommentar


            • #7
              Zitat von kugelschubs Beitrag anzeigen
              Sowas kann doch logischerweise gar nicht in eine Abfrage zusammengefasst werden oder irre ich mich da jetzt?!
              Ja, du irrst dich.

              Genau dafür sind JOINs da, um Daten aus verschiedenen Tabellen unter Berücksichtigung ihrer logischen Verknüpfung mit einer Abfrage auszulesen.

              Wenn du JOINs bisher noch komplett nicht verstanden hast, dann fang mal hiermit an:
              Datenbank/Einführung in Joins – SELFHTML-Wiki

              Da hat’s ausführliche Erklärungen und Beispiele.
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #8
                Du überschreibst in innerhalb der Schleife erst $result und in der inneren Schleife dann auch noch $row - merkst du was?
                Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                Schön - etwas Geschichte kann ja nicht schaden.
                Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                Kommentar


                • #9
                  Zitat von wahsaga Beitrag anzeigen
                  Ja, du irrst dich.

                  Genau dafür sind JOINs da, um Daten aus verschiedenen Tabellen unter Berücksichtigung ihrer logischen Verknüpfung mit einer Abfrage auszulesen.

                  Wenn du JOINs bisher noch komplett nicht verstanden hast, dann fang mal hiermit an:
                  Datenbank/Einführung in Joins – SELFHTML-Wiki

                  Da hat’s ausführliche Erklärungen und Beispiele.
                  Ok, mach ich, danke

                  Kommentar


                  • #10
                    Zitat von Quetschi Beitrag anzeigen
                    Du überschreibst in innerhalb der Schleife erst $result und in der inneren Schleife dann auch noch $row - merkst du was?
                    nee ich merk nischt, bin Anfänger und brauche - wie erwähnt - Hilfe.

                    Kommentar


                    • #11
                      Zitat von kugelschubs
                      WÄRE NETT WENN IHR MIT CODEBEISPIELEN HELFT BZW. ANHAND MEINES CODES.
                      BRAUCHE EINE SCHNELLE LÖSUNG VOR DEM WEIHNACHTSGESCHÄFT.
                      DANKE IM VORAUS
                      Interessiert hier keinen ob es um das Weihnachtsgeschäft geht oder um deine Oma.

                      PHP-Code:
                       $result $result $mysqli->query($query1);
                      while (
                      $row $result->fetch_assoc()) {

                          if (
                      $result $mysqli->query($query2)) { //$result enhält jetzt nicht mehr das Resultset, dass du für die äußere Schleife brauchst.
                          
                      while ($row $result->fetch_row()) {
                          echo 
                      ''.$row[0].' '.$row[1].' '.$row[2].'';
                          }

                      Abgesehen davon solltest du aber das idealerweise wie bereits empfohlen mit einer entsprechend formulierten Abfrage lösen, statt mit Schleife in der Schleife in der Schleife in der...
                      Zuletzt geändert von Quetschi; 23.09.2015, 13:58.
                      Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                      Schön - etwas Geschichte kann ja nicht schaden.
                      Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                      Kommentar


                      • #12
                        Hallo,

                        @Quetschi: Der Spruch mit seiner Oma finde ich ein bisschen hart. Denkste nicht es tut auch ein normaler Umgangston? Oder verfallen wir jetzt alle in diesen Kiddy Slang? ...

                        @Topic

                        Ich habe vorkurzem mit Smarty geabreitet und habe dir da einfach mal ein Codeschnippsel rausgesucht.
                        Vielleicht verstehst du es so ein bisschen besser.

                        Code:
                        [COLOR=#000000][COLOR=#FF8000]//Menukategorien zuordnen 
                            [/COLOR][COLOR=#0000BB]$sql_cat [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#DD0000]"SELECT * FROM [B]navigationskategorie[/B] ORDER by sort"[/COLOR][COLOR=#007700]; 
                            [/COLOR][COLOR=#0000BB]$result_cat [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]mysql_query[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]$sql_cat[/COLOR][COLOR=#007700]) or die([/COLOR][COLOR=#DD0000]"Query failed : " [/COLOR][COLOR=#007700]. [/COLOR][COLOR=#0000BB]mysql_error[/COLOR][COLOR=#007700]()); 
                            [/COLOR][COLOR=#0000BB]$i[/COLOR][COLOR=#007700]=[/COLOR][COLOR=#0000BB]0[/COLOR][COLOR=#007700]; 
                            while ([/COLOR][COLOR=#0000BB]$row_cat [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]mysql_fetch_assoc[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]$result_cat[/COLOR][COLOR=#007700])) 
                            { 
                            [/COLOR][COLOR=#0000BB]$navigation[/COLOR][COLOR=#007700][[/COLOR][COLOR=#0000BB]$i[/COLOR][COLOR=#007700]] = [/COLOR][COLOR=#0000BB]$row_cat[/COLOR][COLOR=#007700]; 
                            [/COLOR][COLOR=#0000BB]$navigation[/COLOR][COLOR=#007700][[/COLOR][COLOR=#0000BB]$i[/COLOR][COLOR=#007700]][[/COLOR][COLOR=#DD0000]'entrys'[/COLOR][COLOR=#007700]] = array(); 
                        
                            [/COLOR][COLOR=#FF8000]//Menupunkte zuordnen 
                            [/COLOR][COLOR=#0000BB]$sql_entry [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#DD0000]"SELECT * FROM navigation WHERE `kategorie`='"[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]$row_cat[/COLOR][COLOR=#007700][[/COLOR][COLOR=#DD0000]'kategorieID'[/COLOR][COLOR=#007700]].[/COLOR][COLOR=#DD0000]"' ORDER by sort"[/COLOR][COLOR=#007700]; 
                            [/COLOR][COLOR=#0000BB]$result_entry [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]mysql_query[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]$sql_entry[/COLOR][COLOR=#007700]) or die([/COLOR][COLOR=#DD0000]"Query failed : " [/COLOR][COLOR=#007700]. [/COLOR][COLOR=#0000BB]mysql_error[/COLOR][COLOR=#007700]()); 
                        
                            [/COLOR][COLOR=#FF8000]//Datenbank abfragen und verarbeiten 
                            [/COLOR][COLOR=#007700]while ([/COLOR][COLOR=#0000BB]$row_entry [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]mysql_fetch_assoc[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]$result_entry[/COLOR][COLOR=#007700])) 
                            { 
                               [/COLOR][COLOR=#0000BB]$navigation[/COLOR][COLOR=#007700][[/COLOR][COLOR=#0000BB]$i[/COLOR][COLOR=#007700]][[/COLOR][COLOR=#DD0000]'entrys'[/COLOR][COLOR=#007700]][] = [/COLOR][COLOR=#0000BB]$row_entry[/COLOR][COLOR=#007700]; 
                            } 
                            [/COLOR][COLOR=#0000BB]$i[/COLOR][COLOR=#007700]++; 
                            } [/COLOR][/COLOR]
                        Solltest du noch Fragen haben schreib mir doch einfach eine kurze PN und ich helfe dir gerne weiter.

                        Liebe Grüsse
                        maralex.one Webentwicklung
                        ICQ:
                        661-692-761 | mail: info[aet]maralex.one

                        Kommentar


                        • #13
                          Zitat von Quetschi Beitrag anzeigen
                          Interessiert hier keinen ob es um das Weihnachtsgeschäft geht oder um deine Oma.
                          Vielen Dank für Deine Äusserung. Ich bedanke mich für Deine bisherigen Beiträge zu meinem Thema, möchte Dich aber höflich darum bitten von weiteren abzusehen. Egal ob Du Experte bist oder nicht (interessiert nämlich auch keinen) - wenn Du nicht gerne hilfst oder nur halbherzig - lass es bitte ganz. Und von oben herab - und gegen die Würde anderer - brauchste mit mir gar nicht erst anfangen. Daher - vielen Dank und schönes Leben noch.

                          Kommentar


                          • #14
                            Zitat von h4zebust3r90 Beitrag anzeigen
                            @Topic

                            Ich habe vorkurzem mit Smarty geabreitet und habe dir da einfach mal ein Codeschnippsel rausgesucht.
                            Vielleicht verstehst du es so ein bisschen besser.
                            Hi, danke schonmal.
                            Schreib Dir morgen eine PN.

                            Kommentar


                            • #15
                              Sorry, aber mit irgendwelchen FORDERUNGEN IN GROSSBUCHSTABEN machst du dich in Foren, wo Leute freiwillig anderen helfen, auch nicht gerade beliebt. Und erst recht nicht, wenn du die dann auch noch wiederholt postest, weil es dir nicht schnell genug geht, oder du keinen fertigen Code geliefert bekommst.

                              Wenn es für dich dringend ist, dir aber die nötigen Grundkenntnisse fehlen – dann beauftrage halt jemanden damit.
                              Zu erwarten, dass andere dir kostenlos helfen, damit du mit du Geld verdienen kannst – das ist auch etwas unverschämt.

                              *closed*
                              I don't believe in rebirth. Actually, I never did in my whole lives.

                              Kommentar

                              Lädt...
                              X