Summieren in while schleiefe

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

  • Summieren in while schleiefe

    Hallo Gemeinschaft.
    Irgendwie bin ich zu blöd um auf die Lösung zu kommen.
    Wie kann ich die ausgelesenen Daten zusammenrechnen lassen?
    Ich erhalte nur eine Zahlenreihe.
    PHP-Code:
      <?php 
            $geraet
    =mysql_query("SELECT * FROM transported WHERE transport_id = ".$_GET['id']."");
            while (
    $graet_id=mysql_fetch_array($geraet)) {
            
            
    $gesamt=mysql_query("SELECT  SUM(weight) AS alles FROM items WHERE id="$graet_id['tool_id']. " GROUP BY weight");
            
            while (
    $gewicht mysql_fetch_array($gesamt)) {
            
            echo 
    $gewicht['alles'];
         }}    
    ?>
    Vielleicht könnte mir wer bei dem Problem helfen.
    Die wenigsten Fehltritte begeht man mit den Füssen.

  • #2
    Warum lässt du nicht die Datenbank zusammenrechnen?

    Kommentar


    • #3
      Die Datenbank?

      Hab das noch nie gemacht.
      Wie funktioniert das?
      Die wenigsten Fehltritte begeht man mit den Füssen.

      Kommentar


      • #4
        Zitat von illusion Beitrag anzeigen
        Hab das noch nie gemacht.
        Offenbar nicht, sonst müsstest du es nicht in PHP machen

        Zitat von illusion Beitrag anzeigen
        Wie funktioniert das?
        Dir fehlt ein Join. Datenbankabfragen in Schleifen sollten man sowieso meiden.

        Übrigens hast du dir eine schöne, große Sicherheitslücke gebaut. Stichwort: SQL-Injection

        Kommentar


        • #5
          Das Ding soll ja auch nur lokal laufen. Da mach ich mir über Sicherheit nicht sooo viel Gedanken.

          Aber zurück zu meinem Problem.
          Kannst du mir da helfen?
          Die wenigsten Fehltritte begeht man mit den Füssen.

          Kommentar


          • #6
            Zitat von illusion Beitrag anzeigen
            Das Ding soll ja auch nur lokal laufen. Da mach ich mir über Sicherheit nicht sooo viel Gedanken.
            Trotzdem ist es so falsch.

            Zitat von illusion Beitrag anzeigen
            Aber zurück zu meinem Problem.
            Kannst du mir da helfen?
            PHP-Code:
            $sql '
                SELECT SUM(i.weight) AS alles
                FROM items i
                INNER JOIN transported t ON ( t.tool_id = i.id )
                WHERE t.id = ' 
            . (int) $_GET['id'] . '
            '

            Zuletzt geändert von h3ll; 14.06.2012, 23:21.

            Kommentar


            • #7
              Naja, dann muss ich halt noch ein paar stündlein probieren.
              Trotzdem danke.
              Die wenigsten Fehltritte begeht man mit den Füssen.

              Kommentar


              • #8
                Also, SQL-Abfragen in Schleifen sind in der Tat nicht sonderlich zu bevorzugen. Wie viele Ergebnisse soll dir die erste Query liefern?

                Grundlagen zum Thema Joins kannst du dir hier aneignen: http://www.php-resource.de/forum/sql...-abfragen.html
                Die Grundlagen setzten wir hier voraus.

                Einen Grund dafür, dass du nur eine "Zahlenreihe" (Definiere mal, was du damit genau meinst) erhältst, sehe ich auf anhieb nicht. Aber ein schrittweises Debugging sollte das Problem wohl schnell erledigen. Was hast du bisher unternommen?

                Mal die 2. Query (und While-Schleife) rausgelassen? Was passiert dann? (Die Antwort nichts, zeigt dass du keine Testausgaben machst)

                EDIT:
                Hast du ein Glück, dass hell seine meinung noch geändert hat.

                Kommentar


                • #9
                  Also, SQL-Abfragen in Schleifen sind in der Tat nicht sonderlich zu bevorzugen.
                  Ich bin schon seit jahren weg von der Materie. So wie es scheint hat sich da sehr viel getan. Werde mir aber sicher die Grundlagen ansehen. Kann ja nicht schaden.
                  Wie viele Ergebnisse soll dir die erste Query liefern?
                  Maximal 20
                  Einen Grund dafür, dass du nur eine "Zahlenreihe" (Definiere mal, was du damit genau meinst) erhältst, sehe ich auf anhieb nicht. Aber ein schrittweises Debugging sollte das Problem wohl schnell erledigen. Was hast du bisher unternommen?
                  Bei der Abfrage soll mir das Gewicht zusammen gezählt werden. Ich bekam aber nur die einzelnen Werte des ARRAYS in einer wurst.


                  DANKE HELL!
                  ich werde das gleich testen.
                  Die wenigsten Fehltritte begeht man mit den Füssen.

                  Kommentar


                  • #10
                    Ich bin schon seit jahren weg von der Materie. So wie es scheint hat sich da sehr viel getan.
                    In anbetracht der Tatsache, dass die Performance der Webserver vor Jahren noch deutlich schlechter waren als heute, war es seinerzeit eine Todsünde Abfragen so zu konstruieren... Generell ist das aber auch heute noch der Fall, weil es unnötoge Performance verschwendet und der Programmierer unter Umständen gar nicht weiß, wie viele Abfragen er da Produziert.

                    Maximal 20
                    Macht 21 abfragen, die sich auch in eine packen lassen (s. hell).

                    Bei der Abfrage soll mir das Gewicht zusammen gezählt werden. Ich bekam aber nur die einzelnen Werte des ARRAYS in einer wurst.
                    Dann hast du ein übelstes Grundlagenproblem. Dass du die Ausgabe als "Wurst" erhältst, liegt ganz offensichtlich daran, dass du deine Ausgabe nicht formatierst. Da helfen auch die optimierungen an der Query nicht.

                    Deswegen habe ich auf die Testausgaben hingewiesen. Dein Problem liegt nämlich ganz woanders als du annimmst.

                    Kommentar

                    Lädt...
                    X