Nur aktuelle Daten ausgeben und alte löschen

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

  • Nur aktuelle Daten ausgeben und alte löschen

    Hallo,

    also mit diesem Code frage ich meinen gesamten Veranstaltungskalender ab (klappt auch):
    PHP-Code:
    <?php

        
    function getAllEventObjects(){
          
    $result=mysql_query("SELECT * FROM eventkalender ORDER BY eventDate ASC, village ASC") or die("Query failed: " mysql_error());
          while (
    $item=mysql_fetch_object($result)) {
              
    $event = new Event($item->id,$item->club,$item->description,$item->village,$item->eventDate);
              
    $items[] = $event;
          }
          if (
    sizeof($items)==0) return array();
          else return 
    $items;
        }

    ?>
    Die Abfrage dauert aufgrund dere Größe des Kalenders aber ewig und ich muss alles manuell löschen.

    Ich möchte also dass nur Daten angezeigt werden von Tagesdatum ab und 2 Monate im Voraus.

    Alles was aäter ist als das Tagesdatum soll gelöscht werden.

    Kann mir da jemand helfen?!Hab schon alles ausprobiert, aber ich komm net weiter!

    DANKE!

  • #2
    wo hackt es denn? Beim selektieren oder beim löschen? Es werden aufjedenfall zwei queries benötigt, beidemal mit einem ähnlichen Where, mit dem Unterschied beim < / >

    Kommentar


    • #3
      Re: Nur aktuelle Daten ausgeben und alte löschen

      Original geschrieben von Flash-Gordon

      Ich möchte also dass nur Daten angezeigt werden von Tagesdatum ab und 2 Monate im Voraus.

      Alles was aäter ist als das Tagesdatum soll gelöscht werden.

      [/B]
      Wo ist dein ansatz?
      Beantworte nie Threads mit mehr als 15 followups...
      Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

      Kommentar


      • #4
        Also das ausgeben von einem festgelegten Zeitraum hab ich jetzt doch lösen können. Und zwar so:
        PHP-Code:
        <?php

            
        function getAllEventObjects(){
              
        $result=mysql_query ("SELECT eventDate, village, club, description FROM eventkalender WHERE eventDate BETWEEN NOW() AND DATE_ADD(NOW(),INTERVAL 30 DAY)ORDER BY eventDate ASC, village ASC");
                 
              while (
        $item=mysql_fetch_object($result)) {
                  
        $event = new Event($item->id,$item->club,$item->description,$item->village,$item->eventDate);
                  
        $items[] = $event;
              }
              if (
        sizeof($items)==0) return array();
              else return 
        $items;
            }

        ?>
        Aber wie lösche ich die Datensätze die älter als das aktuelle Tagesdatum sind automatisch?!

        Kommentar


        • #5
          eventDate > CURRENT_DATE()
          Beantworte nie Threads mit mehr als 15 followups...
          Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

          Kommentar


          • #6
            Ok ich habs.....danke

            PHP-Code:
            <?php

                
            function getAllEventObjects(){
                  
            $result=mysql_query ("SELECT eventDate, village, club, description FROM eventkalender WHERE eventDate BETWEEN NOW() AND DATE_ADD(NOW(),INTERVAL 30 DAY)ORDER BY eventDate ASC, village ASC");
                      
            $sql=mysql_query ("DELETE FROM eventkalender WHERE eventDate < NOW()");

                  while (
            $item=mysql_fetch_object($result)) {
                      
            $event = new Event($item->id,$item->club,$item->description,$item->village,$item->eventDate);
                      
            $items[] = $event;
                  }
                  if (
            sizeof($items)==0) return array();
                  else return 
            $items;
                }

            ?>

            Kommentar


            • #7
              [OT]Bitte in Zukuft deinen Code entsprechend umbrechen, damit wir nicht ellenlang scrollen müssen. Siehe auch die Forenregeln.

              Kommentar


              • #8
                Vorsicht!

                Alles löschen was älter als das aktuelle Datum ist, geht doch mit
                DELETE ... WHERE eventdate < CURRENT_DATE()

                '1998-11-11 11:11:11' < '2005-06-12 18:45:23' ist true und deswegen wird das Tupel gelöscht.

                Typsicherer gehts wohl mit
                DELETE ... WHERE DATEDIFF(eventdate,CURRENT_DATE()) < 0

                Sollte ich mich irren, sagt's bitte schnell, bevor so oder so Daten verlorengehen.

                Kommentar


                • #9
                  Aber wie lösche ich die Datensätze die älter als das aktuelle Tagesdatum sind automatisch?!
                  Das ist gewollt.

                  Kommentar


                  • #10
                    Also wie ich sagte mit < und nicht nach MelloPie mit >, nicht wahr?

                    Kommentar


                    • #11
                      joa
                      Beantworte nie Threads mit mehr als 15 followups...
                      Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                      Kommentar


                      • #12
                        Ja, hatte ich oben nicht gesehen, das das < vertauscht wurde, und war verwirrt, weil du danach noch eine anderen Lösungsvorschlag gemacht hast.

                        Kommentar

                        Lädt...
                        X