Modulus und mysql

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

  • Modulus und mysql

    Hi,

    ich habe ein kleines Problem mit einer abfrage. Ich möchte eine abfrage starten die zum ziel hat, mir alle datensätze zu zeigen bei denen der km stand / 15000 ohne rest ist.

    Dies hab ich nun mittels mod() versucht.

    Das Ziel soll sein, das Fahrzeuge in einer Fahrzeugverwaltung als "Wartung" gekennzeichnet werden bei denen der Aktuelle km Stand ohne Rest durch 15000 teilbar ist. Was logischerweise bedeuten würde, dass die letzte wartung schon 15000 km her ist. Leider werden alle Datensätze angezeigt.
    PHP-Code:

    do { # EDIT


    if(($row_frzg['km_stand'] % 15000) == 0){


    # Sobald bei der Division von Dividend und Divisior der Modulus = 0 ist,
    # wir eine Update Abfrage ausgeführt welche das feld wartung = 1 setzt.
    # 1 = erforderlich
    # 0 = nicht erforderlich

    $row_frzg['fahrgestnr'] = $fgst;

    mysql_select_db($database_fzg_db$fzg_db);
    $upd_wartung "UPDATE fahrzeuge SET wartung = 1 WHERE fahrgestnr = '$fgst' AND (mod(km_stand, 15000) = 0)";
    mysql_query($upd_wartung$fzg_db) or die(mysql_error());

    }

    # Anzeigen des Status

    if($row_frzg['wartung'] = 1){
        echo 
    "Wartung!";
        }

    } while (
    $row_frzg mysql_fetch_assoc($frzg)); # EDIT 
    Soweit verstanden? Wenn nicht nachfragen, oder gehts mal wieder einfacher??

    Hab vergessen die while schleife dazuzuschreiben Code somit editiert.
    Zuletzt geändert von yakuzza; 27.10.2005, 14:36.

  • #2
    Re: Modulus und mysql

    Original geschrieben von yakuzza
    Das Ziel soll sein, das Fahrzeuge in einer Fahrzeugverwaltung als "Wartung" gekennzeichnet werden bei denen der Aktuelle km Stand ohne Rest durch 15000 teilbar ist. Was logischerweise bedeuten würde, dass die letzte wartung schon 15000 km her ist.
    Daraus folgernd würde ein km-Stand von 30.001 bedeuten, dass absolut sichergestellt ist, dass bei 2*15.000 = 30.000 km eine Wartung stattgefunden hat?
    Kann dein System dies garantieren?
    Anderfalls wäre die Modulo-Abfrage an der Stelle m.E. Unsinn.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      ja, kann sie da sobald der km stand durch 15000 ohne rest teilbar ist, wird der wert für wartung auf 1 gesetzt wird. Dieser Wert bleibt so, bis jmd. mit einem anderen Formular die Daten der Wartung eingibt und durch absenden der form den wert wieder zurück auf 0 (keine wartung) setzt.

      Kommentar


      • #4
        Es hat geklappt hab mich irgendwo vertippt

        hier mein fertiger code

        PHP-Code:
        <?php

        if(($row_frzg['km_stand'] % 15000) == 0){


        # Sobald bei der Division von Dividend und Divisior der Modulus = 0 ist,
        # wir eine Update Abfrage ausgeführt welche das feld wartung = 1 setzt.
        # 1 = erforderlich
        # 0 = nicht erforderlich

        mysql_select_db($database_fzg_db$fzg_db);
        $upd_wartung "UPDATE fahrzeuge SET wartung = 1 WHERE (km_stand % 15000) = 0";
        mysql_query($upd_wartung$fzg_db) or die(mysql_error());

        }

        ?>
        Danke trotzdem!

        Kommentar


        • #5
          Original geschrieben von yakuzza
          ja, kann sie da sobald der km stand durch 15000 ohne rest teilbar ist, wird der wert für wartung auf 1 gesetzt wird. Dieser Wert bleibt so, bis jmd. mit einem anderen Formular die Daten der Wartung eingibt und durch absenden der form den wert wieder zurück auf 0 (keine wartung) setzt.
          Und wenn sich der Kilometerstand in einem Update von 29.750 auf 30.015 erhöht?
          Der Schritt, an dem der km-Stand durch 15.000 teilen lässt, wird dabei übersprungen ...
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            genau vor dem problem steh ich jetzt *lol*

            Eine Warnung sollte erscheinen sobald eben die zeit gekommen ist Hab mir jetzt schon einiges überlegt...

            Der Wartungsintervall muss als gesondertes Feld existieren, da verschiedene Fahrzeuge auch verschiedene Wartungsintervalle haben können.. z.b. 15000, 30000 oder sogar 50000 . Diese Intervalle gebe ich nun beim erfassen des KFZ in das Feld wart_int ein.

            nun finde ich aber keine logische möglichkeit um die aktuellen km sinnvoll mit dem intervall zu vergleichen.

            mod() ist zwar ein ansatz, aber sinnlos..

            irgendwo gab es doch mal einen BETWEEN befehl... damit könnte man prüfen ob ein ergebnis in einem bestimmten bereich ist.. aber hilft mir glaub auch nicht weiter.

            Hat jmd. ne idee?

            Kommentar

            Lädt...
            X