Vergleich mit Zeile davor

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

  • eagle275
    replied
    das stand aber so quasi 1:1 in dem Pseudocode von Amica drin .. und in meinem Text 2 Beiträge zuvor, wenn auch im Pseudocode besser erkennbar .. obendrein hat wahsaga dir auch noch ne "Übersetzung" für den Pseudocode geliefert ....

    Leave a comment:


  • Nirus2000
    replied
    danke für die Antwort... ich möchte ja kein kompletten oder vollständigen Code haben, sondern anhand eines Beispieles...
    Ich wusste einfach nicht wo ich den Vergleichswert in stopfe... und wie der dann weiter rückt....
    Thx

    Leave a comment:


  • eagle275
    replied
    also langsam reicht es wirklich - ich wundere mich die ganze Zeit , warum wahsaga noch die Samthandschuhe anhat - mich hat er für weniger eine Woche kaltgestellt .. aber zurück zum Thema


    du hast in deinem Script mit an Sicherheit grenzender Wahrscheinlichkeit eine Zeile wie
    PHP Code:
    while ($row=mysql_fetch_object / array / assoc$resultset) ) { 
    was hindert dich denn jetzt bitte daran 1 mal VOR dem While das gleiche zu tun

    PHP Code:
    $oldrow=mysql_fetch_assoc($resultset);
    while (
    $newrow=mysql_fetch_assoc($resultset)) {
         
    // jetzt kannst du deine Differenz-Beträge ausrechnen
         
    $diff=$oldrow['feld1']-$newrow('feld1'];
         
    // und nun gibst du aus
         
    echo '<tr>';
         echo 
    '<td>'.$oldrow['feld1'].'</td>';
         echo 
    '<td>'.$oldrow['feld2'].'</td>';
         echo 
    '<td>'.$diff.'</td>';
         echo 
    '</tr>';
         
    // nun noch die neue Zeile kopieren
         
    $oldrow=$newrow;

    nach der While-Schleife musst du nun noch die letzte Zeile "manuell" ausgeben, weil deine While-Schleife ja immer die Alten Werte ausgegeben hat (also aktuelle Zeile -1) , aber das ist ja einfach (zur Not halt die Zeilen aus der While-Schleife nocheinmal , und anpassen bei der Differenz

    und dann sei ehrlich - war das soo schwer?

    Leave a comment:


  • Nirus2000
    replied
    Originally posted by Nirus2000 View Post
    Ich versuche es ja, aber genau das ist ja mein Problem.
    Durch die MySql-Sortierung DESC liefert er mir ja das Ergebnis von oben nach unten, also den letzten Wert der Abfrage als Erstes und bei ASC ja eben umgedreht.

    Mir fällt einfach nicht ein, wie ich den zu vergleichenden Wert vor der While-Schleife hole.
    *wer lesen kann ist klar im Vorteil... und wer es auch noch versteht, der sowieso*

    Leave a comment:


  • Nirus2000
    replied
    du brauchst mich hier nicht als doof hin zu stellen Mr. Superhirn und meine Sätze permanent zu zitieren..


    Was ist an dem SATZ
    "Mir fällt einfach nicht ein, wie ich den zu vergleichenden Wert vor der While-Schleife hole."

    nicht zu verstehen.... !!!!!!!!!!!!

    WENN ICH NICHT WEIß WIE DANN WEIß ICH ES AUCH NICHT! UND AN DEM PSEUDOCODE STEH ICH GENAU SO DAVOR WIE VORHER... DA ICH NICHTS DAMIT ANFANGEN KANN, WEIL ICH ES NICHT VERSTEH UND NICHT WEIß WIE. NOCH DEUTLICHER GEHT ES NICHT !!!!!

    Leave a comment:


  • wahsaga
    replied
    Originally posted by Nirus2000 View Post
    Durch die MySql-Sortierung DESC liefert er mir ja das Ergebnis von oben nach unten, also den letzten Wert der Abfrage als Erstes und bei ASC ja eben umgedreht.
    Es hilft nichts, wenn du das ständig wiederholst ... wir haben dich längst verstanden.

    Mir fällt einfach nicht ein, wie ich den zu vergleichenden Wert vor der While-Schleife hole.
    Es steht im Pseudocode schon drin, und wie der an dieser Stelle zu „übersetzen“ ist, hab ich dir auch schon gesagt ...

    Davon, dass du wirklich mitdenkst, merkt man hier bisher herzlich wenig

    Leave a comment:


  • Nirus2000
    replied
    Originally posted by wahsaga View Post
    Mit wert_abrufen() ist in diesem Pseudocode natürlich das Holen des nächsten Datensatzes aus dem Abfrageergebnis gemeint - also die Anwendung einer der mysql_fetch-Funktionen.

    Ein bisschen musst du schon logisch mitdenken (können), wenn du sowas mit Tipps von uns umsetzen willst.
    Ich versuche es ja, aber genau das ist ja mein Problem.
    Durch die MySql-Sortierung DESC liefert er mir ja das Ergebnis von oben nach unten, also den letzten Wert der Abfrage als Erstes und bei ASC ja eben umgedreht.

    Mir fällt einfach nicht ein, wie ich den zu vergleichenden Wert vor der While-Schleife hole.

    Leave a comment:


  • wahsaga
    replied
    Originally posted by Nirus2000 View Post
    wie soll ich den den Vergleichswert aufrufen
    Mit wert_abrufen() ist in diesem Pseudocode natürlich das Holen des nächsten Datensatzes aus dem Abfrageergebnis gemeint - also die Anwendung einer der mysql_fetch-Funktionen.

    Ein bisschen musst du schon logisch mitdenken (können), wenn du sowas mit Tipps von uns umsetzen willst.

    Leave a comment:


  • Nirus2000
    replied
    bei mir macht es einfach nicht klick.... wie soll ich den den Vergleichswert aufrufen und dann vergleichen?

    Leave a comment:


  • eagle275
    replied
    danke Amica , dein Pseudocode erläutert wunderbar , was mein etwas umständlicher Text aussagen sollte

    Leave a comment:


  • AmicaNoctis
    replied
    Du willst Werte vergleichen, die aber der Reihe nach ankommen. Vergleichen kannst du also erst, wenn der zweite Wert vorliegt und du den ersten gespeichert hast.

    Pseudocode:
    Code:
    vergleichswert = wert_abrufen();
    while (neuerwert = wert_abrufen()) {
        differenz = neuerwert - vergleichswert;
        vergleichswert = neuerwert;
    }
    Gruß,

    Amica

    Leave a comment:


  • Nirus2000
    replied
    hä? Versteh ich net...

    Leave a comment:


  • eagle275
    replied
    das ist ja nu noch einfacher ..

    hole dir mit einer der mysql_fetch-Funktionen die Erste Zeile aus der Ergebnis-Tabelle

    ID 8204 - den gibst du jetzt aber nicht sofort aus, sondern nun beginnt deine while-Schleife,

    die liest mit ihrem mysql_fetch nun ihrerseits die 2te Zeile ein - und ab hier gibst du aus

    Alte ID , Alte irgendwas , Differenz - Beträge (neue Werte hast du ja )
    danach Alte Werte mit den aktuellen Überschreiben und Schleife wieder von vorn

    Leave a comment:


  • Nirus2000
    replied
    hmm... logisch, aber die Ausgabe findet schon in der While-Schleife statt. Genau das ist mein Problem.

    Leave a comment:


  • wahsaga
    replied
    Originally posted by Nirus2000 View Post
    Da ich aber DESC sortiere, kann ich den Wert nicht in einen Dummy speichern, weil Wert davor noch nicht existiert.
    Ein „Wert davor“ existiert bei der Verarbeitung des ersten Datensatzes generell nicht, egal wie die Daten sortiert sind.

    Er existiert erst ab dem zweiten Datensatz, den dein Script verarbeitet.

    Desweiteren sind die ID's nicht fortlaufend sondern unsortiert.
    Doch, sie sind sortiert, weil du das in der Query explizit angegeben hast.

    richtig wäre aber

    WHILE-ID -> VEGLEICHS-ID
    8204 -> 5970
    5970 -> [...]
    Diesen ersten Vergleich kannst du durchführen, sobald du den zweiten Datensatz aus dem Abfrageergebnis geholt hast.

    Leave a comment:

Working...
X