Wert aus id x um Wert aus id x-1 subtrahieren

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

  • Wert aus id x um Wert aus id x-1 subtrahieren

    MalZeit !

    Habe da ein mehr oder weniger unlösbares Prob (für mich)

    Und zwar habe ich da eine Tabelle gebastelt und will aber nun den 'alten' KM-Stand vom 'neuen' KM abstand abziehen, um somit an die ferfahrenen Kilometer zu kommen. -klar

    Zu sehen unter www.umsonzt.de/smart.php

    Nur wie kann ich den Wert aus ID 1 um den Wert aus ID 0 erleichtern.
    Und natürlich sollte das ganze automatisch auch mit ID 2 und 1, und ID 3 und 2, usw. usw. usw. funktionieren.

    grübel grübel
    MySQL 5.0.45 mit PHP 5.2.4 auf Suse 10.0.
    GD 2.0.28

  • #2
    imho nur mit zwei queries...

    wann willst du die berechnung denn machen? bei der ausgabe? dann sollte das doch gar kein problem sein. di speicherst immer den aktuellen stand in einer variable $stand_alt. wenn du dann die nächste row bearbeitest machst du $stand - stand_alt und hast deinen wert. dann wieder stand in $stand_alt schreiben,

    Kommentar


    • #3
      wenn du mysql 4 hast, kannst du das mit einem subselect machen.

      hast du nur mysql 3, musst du alle daten in ein php-array einlesen, dort berechnen und anschliessend wieder in die db schreiben.
      INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


      Kommentar


      • #4
        Also mal vorweg... Ich habe MySql 4.0.17 mit PHP 4.3.6 auf Suse 8.1 !!

        Da ich mit PHP und SQL noch nicht ganz so klar komme halte ich mich lieber mal an den Tipp von TobiaZ

        Habe es auch nach ner Stunde basteln so hinbekommen wie es jetzt aussieht <<<Link>>>

        Bekomme aber noch einen kleinen fehler angezeigt
        (Zeile 59 iss bei [COLOR=orangered]{$auf100 = $liter / $kilometer * 100;}[/COLOR] )

        Zwar stimmen die Berechnungen nur wenn mal Volltankt aber so ungefähr fährt man mit einem Smart im 5 Liter bereich

        PHP-Code:
        $res mysql_db_query("$DBN","SELECT * FROM `smart` order by 'datum'");
           
        $num mysql_num_rows($res);
           
        // Tabellenbeginn

           
        ## Ab hier wird alles je nach anzahl Zeilen wiederholt
           
        for ($i=0$i<$num$i++)
           {
              
        $id mysql_result($res$i"id");
              
        $datum mysql_result($res$i"datum");
              
        $liter mysql_result($res$i"liter");
              
        $gpreis mysql_result($res$i"gpreis");
              
        $kmstand mysql_result($res$i"kmstand");
              
        $lpreis mysql_result($res$i"lpreis");
              
        $extpreis mysql_result($res$i"extpreis");




              
        // Tabellenzeile mit -zellen
        echo "<tr>";
        echo 
        "<td>$id</td>";
        echo 
        "<td>$datum</td>";
        echo 
        "<td>$liter</td>";
        echo 
        "<td>$gpreis</td>";
        echo 
        "<td>$kmstand</td>";
        echo 
        "<td>$lpreis</td>";
        echo 
        "<td>$extpreis</td>";
        $diff $extpreis $lpreis;
        echo 
        "<td>$diff</td>";
        if (isset(
        $kmstand1)){
        $kilometer=$kmstand $kmstand1;
        }
        $kmstand1=$kmstand;
        echo 
        "<td>$kilometer</td>";
        $auf100 $liter $kilometer 100;
        $auf100  number_format($auf100,2,",",".");
        echo 
        "<td>$auf100</td></tr>";

           }
        # Summe von Gesamtpreis ausrechnen
        $gespreis mysql_db_query("$DBN","select sum(gpreis) AS summe from smart");
        while (
        $gesamtpreis mysql_fetch_array($gespreis)) { 


        # Summe von LITER ausrechenen
        $gesliter mysql_db_query("$DBN","select sum(liter) AS summe from smart");
        while (
        $gesamtliter mysql_fetch_array($gesliter)) { 

        echo 
        "<tr><td>&nbsp;</td></tr>";
        echo 
        "<tr>
            <td>&nbsp;</td>
            <td>Summe:</td>
            <td>
        $gesamtliter[summe]</td>
            <td>
        $gesamtpreis[summe]</td>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
            <td>&nbsp;</td>"
        ;

        }}
        echo 
        "</tr></table>"
        Zuletzt geändert von SonicCGN; 16.04.2004, 14:49.
        MySQL 5.0.45 mit PHP 5.2.4 auf Suse 10.0.
        GD 2.0.28

        Kommentar


        • #5
          Warning: Division by zero in /home/www/web1/html/umsonzt/smart.php on line 59
          es ist in der mathematik nicht erlaubt durch null zu teilen. also macht php das auch nicht. du musst es also abfangen....

          aus ....
          PHP-Code:
          $auf100 $liter $kilometer 100
          .... wird also .....
          PHP-Code:
          $auf100 $kilometer>$liter/$kilometer*100 $liter/100
          .... wobei du $liter/100 auch austauschen kannst, z.b. nur durch $liter ... ;-)
          INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


          Kommentar


          • #6
            Thänxx....

            Wobei mir diese Art etwas fremd vorkommt..... liegt wohl daran das mein LehrBuch für PHP 4.0.x geschrieben wurde.

            Nun gut.... dann kann es ja nun weiter gehen...
            ..und ich bin sicher ich werde wieder irgendwo hängen bleiben...
            MySQL 5.0.45 mit PHP 5.2.4 auf Suse 10.0.
            GD 2.0.28

            Kommentar


            • #7
              Original geschrieben von SonicCGN
              Wobei mir diese Art etwas fremd vorkommt.....
              ... welche art? das mal nicht durch null teilen darf?
              INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


              Kommentar


              • #8
                Original geschrieben von TobiaZ
                imho nur mit zwei queries...
                Also ... im Allgemeinen sollte da eine Query mit 'nem Left-Join vollkommen ausreichen ... sowas in der Art schwebt mir vor:
                Code:
                SELECT t1.kilometer - IFNULL(t2.kilometer, 0)
                  FROM tabelle t1
                  LEFT JOIN tabelle t2
                    ON t2.id = t1.id - 1
                 ORDER BY kilometer
                carpe noctem

                [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                Kommentar


                • #9
                  Nein das nicht.... Ich hätte daraus jetzt eine if abfrage gemacht und NICHT alles in eine Zeile bekommen

                  @Goth

                  Könntest Du für mich (und evtl. die Nachwelt) eine kleine Erklärung dafür abgeben. Denn allzuviel kann ich aus dieser Abfrage nicht erkennen

                  Zuletzt geändert von SonicCGN; 16.04.2004, 15:17.
                  MySQL 5.0.45 mit PHP 5.2.4 auf Suse 10.0.
                  GD 2.0.28

                  Kommentar


                  • #10
                    @goth: korrekt. war mir damals nicht ganz sicher, worauf es hinausläft. auf ausgabe oder update (die ausgabemöglichkeit wurde per EDIT hinzugefügt).

                    Kommentar


                    • #11
                      Axo ... das macht Sinn ...
                      carpe noctem

                      [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                      [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                      Kommentar

                      Lädt...
                      X