Kontostand abfragen

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Kontostand abfragen

    Hallo,

    ich lasse mir mit folgendem Code, den Kontostand eines Mitgliedes ausgeben:

    PHP Code:
    $abfrage "SELECT nickname, date_format(datum, '%d.%m.%Y') AS datum, verwendung, grund, betrag
                     FROM konto where nickname='" 
    $_POST['auswahl'] . "'";
    $ergebnis mysql_query($abfrage);
    $result mysql_query("SELECT SUM(betrag) as plus FROM konto
                           where nickname='" 
    $_POST['auswahl'] . "' AND typ='Einnahme'");
    $row=mysql_fetch_object($result);
    $summe1 $row->plus;
    $result mysql_query("SELECT SUM(betrag) as minus FROM konto
                           where nickname='" 
    $_POST['auswahl'] . "' AND typ='Ausgabe'");
    $row=mysql_fetch_object($result);
    $summe2 $row->minus;
    $diff$summe1-$summe2;
    echo 
    "<tr><td class='links'><strong>Einnahmen</strong></td>";
    echo 
    "<td class='mitte3'><strong>";
    echo 
    $summe1;
    echo 
    "</strong></td><td class='rechts'><strong>Euro</strong></td></tr>";
    echo 
    "<tr><td class='links'><strong>Ausgaben</strong></td>";
    echo 
    "<td class='mitte3'><strong>";
    echo 
    $summe2;
    echo 
    "</strong></td><td class='rechts'><strong>Euro</strong></td></tr>";
    echo 
    "<tr><td class='links'><strong>Kontostand</strong></td>";
    echo 
    "<td class='mitte3'><strong>";
    echo 
    $diff;
    echo 
    "</strong></td><td class='rechts'><strong>Euro</strong></td></tr>"
    Nun möchte ich mir eine Liste ausgeben lassen, wo die Kontostände aller Mitglieder aufgelistet werden.
    Versucht habe ich bis jetzt:

    PHP Code:
    $abfrage "SELECT nickname, date_format(datum, '%d.%m.%Y') AS datum, verwendung, grund, betrag
                  FROM konto GROUP BY nickname"
    ;
    $ergebnis mysql_query($abfrage);
    $result mysql_query("SELECT SUM(betrag) as plus FROM konto
                           WHERE typ='Einnahme' GROUP BY nickname"
    );
    $row=mysql_fetch_object($result);
    $summe1 $row->plus;
    $result mysql_query("SELECT SUM(betrag) as minus FROM konto
                           WHERE typ='Ausgabe' GROUP BY nickname"
    );
    $row=mysql_fetch_object($result);
    $summe2 $row->minus;
    $diff$summe1-$summe2;
    while (
    $row mysql_fetch_object($ergebnis))
    {      
    echo 
    "<tr><td class='links'>";
    echo 
    $row -> nickname;
    echo 
    "</td><td class='mitte3'>";
    echo 
    $summe1;
    echo 
    "</td><td class='rechts'>Euro</td></tr>";
    }
    ?> 
    Nun wird aber bei jedem Mitglied der gleiche Kontostand angezeigt.

    Was muss geändert werden, damit bei jedem Mitglied der richtige Kontostand angezeigt wird?


    LG Sven

  • #2
    Code:
    $summe2 = $row->minus; 
    $diff= $summe1-$summe2;
    Muss innerhalb der while-schleife gesetzt werden da sonst nur einmal der Betrag errechnet wird und dann nicht wieder verändert wird.

    Somit hast du den ersten Kontostand aus der DB bei jedem Mitglied

    Gruß
    Thora

    Comment


    • #3
      Hallo,

      wenn ich das in die While-Schleife mit einbaue, dauert die Ausführung des Scriptes länger,
      und es wird bei jedem Mitglied, immer noch der gleiche Kontostand angezeigt.


      LG Sven

      Comment


      • #4
        Code herzeigen - wir können nicht immer raten, was die Leute verbocken, wenn sie versuchen Ratschläge zu befolgen ...
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Comment


        • #5
          Hallo,

          ich habe es so versucht:

          PHP Code:
                $abfrage "SELECT nickname, date_format(datum, '%d.%m.%Y') AS datum, verwendung, grund, betrag
                            FROM konto GROUP BY nickname"
          ;
                
          $ergebnis mysql_query($abfrage);
                
          $result mysql_query("SELECT nickname, SUM(betrag) as plus FROM konto
                                       WHERE typ='Einnahme' GROUP BY nickname"
          );
                
          $row=mysql_fetch_object($result);

                
          $result mysql_query("SELECT nickname, SUM(betrag) as minus FROM konto
                                       WHERE typ='Ausgabe' GROUP BY nickname"
          );
                
          $row=mysql_fetch_object($result);
                
                
          $platz 0;
                while (
          $row mysql_fetch_object($ergebnis))
                {
                
          $summe1 $row->plus;          
                
          $summe2 $row->minus;
                
          $diff$summe1-$summe2;
                echo 
          "<tr><td class='links'>";
                echo 
          $platz $platz 1;  
                echo 
          "</td><td class='mitte1'>";
                echo 
          $row -> nickname;
                echo 
          "</td><td class='mitte2'>";
                echo 
          $diff;
                echo 
          "</td><td class='rechts'>Euro</td></tr>";          } 
          Und auch so:

          PHP Code:
                $abfrage "SELECT nickname, date_format(datum, '%d.%m.%Y') AS datum, verwendung, grund, betrag
                            FROM konto GROUP BY nickname"
          ;
                
          $ergebnis mysql_query($abfrage);
                
          $platz 0;
                while (
          $row mysql_fetch_object($ergebnis))
                {
                
          $result mysql_query("SELECT nickname, SUM(betrag) as plus FROM konto
                                       WHERE typ='Einnahme' GROUP BY nickname"
          );
                
          $row=mysql_fetch_object($result);
                
          $summe1 $row->plus;
                
          $result mysql_query("SELECT nickname, SUM(betrag) as minus FROM konto
                                       WHERE typ='Ausgabe' GROUP BY nickname"
          );
                
          $row=mysql_fetch_object($result);          
                
          $summe2 $row->minus;
                
          $diff$summe1-$summe2;
                echo 
          "<tr><td class='links'>";
                echo 
          $platz $platz 1;  
                echo 
          "</td><td class='mitte1'>";
                echo 
          $row -> nickname;
                echo 
          "</td><td class='mitte2'>";
                echo 
          $diff;
                echo 
          "</td><td class='rechts'>Euro</td></tr>";          } 

          LG Sven

          Comment


          • #6
            SQL-Abfragen in Schleifen sind ganz böse - da ist klar, dass dabei die Performance in den Keller geht.

            Die Ermittlung von plus und minus kannst du auf jeden Fall in einer Abfrage vereinen, in dem du auch noch nach typ gruppierst.

            Und bist du an den einzelnen Daten, die die erste Abfrage liefert, überhaupt interessiert in diesem Fall?
            Wenn ja - beschäftige dich mit JOINs, http://aktuell.de.selfhtml.org/artikel/datenbanken/
            Wenn nein - dann weg damit.
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Comment

            Working...
            X