Ankündigung

Einklappen
Keine Ankündigung bisher.

$vars nach Zeit aus DB ändern ?

Einklappen

Neue Werbung 2019

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

  • $vars nach Zeit aus DB ändern ?

    Hallo Leute =)

    ich bin dann der Neue xDD

    Ich habe mal eine Frage: Ich bin grad dabei eine kleine
    ToDo-Liste zu schreiben um damit ein wenig zu üben
    mit PHP klar zu kommen.
    Es geht daru, dass ich 3 Prioritätsstufen habe: Rot,Gelb und Grün.
    Diese Stufen habe ich in jeweils eine *.jpg file gespeichert welche
    jetzt auf der Seite angezeigt werden, je nach dem welche
    Wichtigkeitsstufe der Datenbank Eintrag in der SQL-DB hat.
    (wichtigkeit : 1=grün 2=gelb, 3=rot)
    Nun möchte ich gern, dass wenn ein neuer Eintrag in die DB
    gemacht wird, dass diesem eine Art Zeitstempel ausgedrückt wird,
    und mein php script bei jedem aktualisieren das Datum vergleicht.
    Damit soll bewirkt werden, dass wenn ein Eintrag länger als 2 Tage
    in der DB steht den Status "gelb" bekommt und nach 2 weiteren Tagen
    den Status "rot"

    Momentan verwende ich eine if schleife für die Zuordnung der
    *.jpf files:
    PHP-Code:
      echo "<table>"
      echo 
    "<tr>"
      echo 
    " <td width='100'>Auftragsnummer<hr/></td>"
      echo 
    " <td width='100'>Kundenname<hr/></td>";
      echo 
    " <td width='100'>Hersteller<hr/></td>";
      echo 
    " <td width='100'>Type<hr/></td>";
      echo 
    " <td width='100'>Bearbeiter<hr/></td>";
      echo 
    " <td width='100'>Erfassungsdatum<hr/></td>";
      echo 
    " <td width='100'>Dringlichkeitsstatus<hr/></td>";
      echo 
    " <td width='100'>Löschen<hr/></td>";
      echo 
    "</tr>";
                
    $sql "SELECT * FROM content ORDER BY dringlichkeit DESC";
                
    $abfrage mysqli_query($connection$sql);
                
      while (
    $row mysqli_fetch_assoc($abfrage)){ 
       echo 
    "<tr>"
       echo 
    "<td>"$row['auftragsnummer']. "</td>"
       echo 
    "<td>"$row['kundenname']."</td>";
       echo 
    "<td>"$row['hersteller']."</td>";
       echo 
    "<td>"$row['type']."</td>";
       echo 
    "<td>"$row['bearbeiter']."</td>";
       echo 
    "<td>"$row['datum']."</td>";
       
       echo 
    "<td>"; if ($row['dringlichkeit'] == 3){
           echo 
    "<img src='rot.jpg'>";
       }
                      if (
    $row['dringlichkeit'] == 2){
           echo 
    "<img src='gelb.jpg'>";
       }
                      if (
    $row['dringlichkeit'] == 1){
           echo 
    "<img src='gruen.jpg'>";
       }   
       echo 
    "</td>";
       echo 
    "<td>";
       echo 
    "<form action='overview.php' method='post'><input type='submit' name='{$row['id']}' value='Löschen'></form>";
          
    $delete "DELETE FROM content WHERE id = {$row['id']}";
       if (isset(
    $_REQUEST[$row['id']])){
            
    $query mysqli_query($connection$delete);
            echo 
    "<meta http-equiv='refresh' content='0'; URL=overview.php>";
       }
       
       echo 
    "</td>";
       echo 
    "</tr>";
      }

    echo 
    "</table>"
    Geht dieser Vergleich der Timestamps mit Unixzeit ? Oder
    wie könnte es sonst funktionieren ?

    (btw SuFu brachte nix ^^)


    Ich danke euch schon einmal für eine Hilfe

  • #2
    Ja am einfachsten geht das ganze mit Timestamps.

    Und es gibt keine IF-Schleifen, das sind Abfragen!

    Kommentar


    • #3
      Zitat von Overload Beitrag anzeigen
      Momentan verwende ich eine if schleife
      if-schleife.de

      Geht dieser Vergleich der Timestamps mit Unixzeit ?
      Theoretisch schon - aber in der DB solltest du keine UNIX-Timestamps speichern; sondern einen der Datumstypen nutzen, den MySQL anbietet.
      Und mit den Datumsfunktionen kannst du dann schon direkt datenbankseitig die entsprechende Auswertung vornehmen.

      Nachlesen kannst du dazu hier:
      MySQL :: MySQL 5.1 Reference Manual :: 10.3 Date and Time Types
      MySQL :: MySQL 5.1 Reference Manual :: 11.6 Date and Time Functions
      (btw SuFu brachte nix ^^)
      Wonach hast du denn gesucht?

      Wenn du annimmst, dass eine Suche immer die passende Lösung für dein konkretes Individualproblem liefern kann - dann liegt schon da dein Fehler.
      [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

      Kommentar


      • #4
        Zitat von Flor1an
        Und es gibt keine IF-Schleifen, das sind Abfragen!
        Entschuldige meine Unwissenheit. Ich beschäftige mich erst seit einer Woche mit php

        Zitat von ChrisB
        Wenn du annimmst, dass eine Suche immer die passende Lösung für dein konkretes Individualproblem liefern kann - dann liegt schon da dein Fehler.
        4 zerschossene *.php files und 9 stunden SuFu und google wälzen reicht denke ich um ein Thread auf zu machen

        Also den Timestamp bei erstellung des DB-Eintrags zu setzen ist das eine.
        Aber nun mit php das Datum zu vergleichen und bei jedem Aufruf das Datum
        vergleichen und ggf. einen neuen DB-Wert eintragen, da klemmts.
        Sollte ich evtl eine art $time++ oder sowas benutzen ?

        Kommentar


        • #5
          Zitat von Overload Beitrag anzeigen
          Aber nun mit php das Datum zu vergleichen und bei jedem Aufruf das Datum vergleichen und ggf. einen neuen DB-Wert eintragen, da klemmts.
          Lies bitte meine Antwort noch mal aufmerksam.
          Mit PHP solltest du bzgl. dieses Zeitvergleichs eigentlich gar nichts machen.
          Sollte ich evtl eine art $time++ oder sowas benutzen ?
          Nein.
          [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

          Kommentar


          • #6
            Du musst dir erstmal logisch klar machen was du machen möchest.

            Zeitpunkt wann der DB Eintrag gemacht wird mit abspeichern. In PHP prüfst du dann "jetzt - Zeitpunkt Eintrag". Wenn das Ergebnis daraus größer als 1 Tag ist -> gelb wenn es größer als 2 Tage ist -> rot.

            Les dir mal durch was ein Timestamp ist, dann siehste auch wie man damit rechnen oder sie vergleichen kann.

            Kommentar


            • #7
              Flor1an, warum drängst du denn so auf die Nutzung von Unix-Timestamps?

              In der DB gehören m.E. MySQL-Datumstypen genutzt.
              Und die Auswahl der „Farbe“ kann man damit dort auch gleich direkt in der Query realisieren.
              [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

              Kommentar


              • #8
                Also die Farbe wählen würde ich persönlich eher in PHP machen da das für mich mehr in die Anwendungslogik gehört.

                Und was heißt ich dränge so auf Unix Timestamps. Machen kann er das wie er möchte. Speichern in der DB kann er auch gerne im Dateformat. Aber in PHP wird er dann wahrscheinlich das Datum in einen Timestamp umwandeln um es zu vergleichen.

                Kommentar


                • #9
                  Danke erstmal für eure Antworten =)

                  ich habe jetzt folgenden Query:
                  PHP-Code:
                              $zeitvergleich_ok "UPDATE content
                                      SET dringlichkeit = 1
                                      WHERE DATEDIFF(datum, CURDATE()) >= 0"
                  ;
                              
                  mysqli_query($connection$zeitvergleich_ok);
                              
                              
                  $zeitvergleich_pluszwei "UPDATE content
                                      SET dringlichkeit = 2
                                      WHERE DATEDIFF(datum, CURDATE()) < 3"
                  ;
                              
                  mysqli_query($connection$zeitvergleich_pluszwei);
                              
                              
                  $zeitvergleich_vier "UPDATE content
                                      SET dringlichkeit = 3
                                      WHERE DATEDIFF(datum, CURDATE()) < 6"
                  ;
                              
                  mysqli_query($connection$zeitvergleich_vier); 
                  allerdings werden mir jetzt komischerweise alle einträge auf status 3
                  gesetzt. Was mache ich falsch ?

                  Kommentar


                  • #10
                    Hmm, na rate mal. Wenn Du die Datenbank wärst und diese drei Statements mal ausführen solltest...
                    [COLOR="#F5F5FF"]--[/COLOR]
                    [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                    [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                    [COLOR="#F5F5FF"]
                    --[/COLOR]

                    Kommentar


                    • #11
                      Zitat von Overload Beitrag anzeigen
                      ich habe jetzt folgenden Query:
                      Wozu denn bitte UPDATE-Statements ...?

                      Du willst das doch immer passend zur aktuellen Uhrzeit/Datum auslesen - also ist SELECT doch eher angebracht.
                      Und nicht drei Queries, sondern eine - wo der entsprechende Status meinetwegen in einem CASE/WHEN-Statement ermittelt wird, oder auch gleich die Anzahl vergangener Tage.
                      [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

                      Kommentar


                      • #12
                        also ich würde das so machen:
                        1. Beim Eintrag in die Db den TimeStamp (time()) mit speichern
                        2. Bei jeder Abfrage auslesen und überprüfen, ob (jetzt-timestamp)>3 Tage(60*60*24*3)
                        Dann elseif und das gleiche mit 2 Tagen. Also den größten Tag zuerst

                        Kommentar

                        Lädt...
                        X