Terminabfrage über MySQL

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

  • Terminabfrage über MySQL

    Hallo,

    ich stelle gerade meine Homepage http://www.tmb-clan.net auf Smarty um.
    Soweit klappt das auch schon ganz gut...
    Ich bin momentan bei dem Terminsystem, wobei wir auch schon beim Problem sind .
    per funktion soll automatisch in das templatesystem die richtigen werte integriert werden.
    Also es soll der nächste Termin ab dem heutigen Datum gewählt und dargestellt werden.
    Das heisst es muss das am nächsten liegende Datum sowie die dazugehörigen Daten gewählt werden.

    Mein Problem ist jetzt die richtige auswahl des nächsten Datums.

    MySQL Tabelle heisst "tmb_termine", und enthalten sind unter anderem "id", "datum", "object" usw.
    Bei "datum" steht drin "YYYY-MM-DD" z.B. "2003-09-30".
    $datum_now = date("Y-m-d"); //also aktuelles datum

    Am besten wäre wohl ein kleiner Codeschnipsel als Denkanstoss.

    Desweiteren wäre es wohl sinnvoll das sich ein Termin der Kategorie REST, GAME und MOVIE (0 = REST, 1=LANPARTY, 2=GAME, 3=MOVIE), nach X-Tagen (nach ablauf des Datums) selber löscht.

    Thanks Doomer
    [color=blue]THE MAD BOYS[/color]

    Wer anderen eine Bratwurst brät hat ein Bratwurstbratgerät.

  • #2
    Mein Problem ist jetzt die richtige auswahl des nächsten Datums.

    MySQL Tabelle heisst "tmb_termine", und enthalten sind unter anderem "id", "datum", "object" usw.
    Bei "datum" steht drin "YYYY-MM-DD" z.B. "2003-09-30".
    $datum_now = date("Y-m-d"); //also aktuelles datum
    was genau willst du jetzt?

    nach X-Tagen (nach ablauf des Datums) selber löscht.
    selber löschen lassen brauchst du nciht. du brauchst es nur in deiner abfrage in der WHERE bedingung bei der ausgabe unterbinden.



    BTW:
    *VERSCHIEB* nach sql
    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


    • #3
      Re: Terminabfrage über MySQL

      Original geschrieben von Doomer

      Bei "datum" steht drin "YYYY-MM-DD" z.B. "2003-09-30".
      $datum_now = date("Y-m-d"); //also aktuelles datum
      es gibt ein "date" bzw. "datetime" feld in der DB, das sollte man auch tunlichst nutzen. dann brauchst du auch keine date-funktion von php, sondern kannst die der DB nutzen.
      Desweiteren wäre es wohl sinnvoll das sich ein Termin der Kategorie REST, GAME und MOVIE (0 = REST, 1=LANPARTY, 2=GAME, 3=MOVIE), nach X-Tagen (nach ablauf des Datums) selber löscht.
      "selbst löschen" kann es sich nicht da musst du schon ab und an mal ein Statement rüberlaufen lassen.

      Kommentar


      • #4
        Also die Datenbank sieht so aus:


        CREATE TABLE `tmb_termine` (
        `id` tinyint(4) NOT NULL auto_increment,
        `datum` date NOT NULL default '0000-00-00',
        `art` tinyint(4) NOT NULL default '0',
        `object` varchar(30) NOT NULL default '',
        `link` varchar(60) NOT NULL default '',
        `ort` varchar(30) NOT NULL default '',
        `ortlink` varchar(60) NOT NULL default '',
        `flagge` varchar(10) NOT NULL default 'de',
        `logo` varchar(60) NOT NULL default '',
        PRIMARY KEY (`id`)
        ) TYPE=MyISAM AUTO_INCREMENT=6 ;

        #
        # Daten für Tabelle `tmb_termine`
        #

        INSERT INTO `tmb_termine` (`id`, `datum`, `art`, `object`, `link`, `ort`, `ortlink`, `flagge`, `logo`) VALUES
        (1, '2003-09-30', 2, 'Half-Life 2', 'http://www.hl2.de', 'Handel', 'http://www.mediamarkt.de', 'eu', 'http://www.tmb-clan.de/grafik/links/cs.gif'),
        (2, '2004-00-01', 0, 'Silvester', '', '', '', 'de', 'http://www.tmb-clan.de/grafik/design/silvester.gif'),
        (3, '2003-08-22', 2, 'Counter-Strike - Condition Zer', '', 'Handel', 'http://www.mediamarkt.de', 'eu', ''),
        (4, '2003-08-26', 2, 'Tron 2', '', 'Handel', 'http://www.mediamarkt.de', 'eu', ''),
        (5, '2003-11-05', 3, 'Matrix - Revolution', 'http://whatisthematrix.warnerbros.de', 'Kino', 'http://www.kino.de', 'de', '');
        Da ja jetzt an verschiedenen Stellen unterschieliche Datumsangaben stehen muss ich natürlich sortieren, und das Datum auswählen was am nächsten am heutigen Datum dran ist. Dieses Datum übergebe ich dann an mein Countdown JavaScript welches den Countdown initalisiert und die Uhr startet. Das ganze soll dann wie hier (rechts oben) ausehen.

        1. Wie komme ich an dieses Datum
        2. Wie setzt sich die Funktion zusammen ein abgelaufenes datum aus der Datenbank zu entfernen.

        Thanks
        Zuletzt geändert von Doomer; 05.07.2003, 21:30.
        [color=blue]THE MAD BOYS[/color]

        Wer anderen eine Bratwurst brät hat ein Bratwurstbratgerät.

        Kommentar


        • #5
          1.
          SELECT .... WHERE datum > NOW() ORDER BY datum DESC

          2.
          DELETE ..... WHERE datum < DATE_SUB(NOW(), INTERVAL x DAYS)
          wobei für x eine anzahl tage eingesetzt werden muss, die der eintrag älter sein darf, als das aktuelle datum

          Kommentar


          • #6
            Ok, das hat geholfen, auch wenn´s nicht 100% richtig war aber der Denkanstoss hat´s gebracht.

            $query = @mysql_query("SELECT * FROM tmb_termine WHERE datum > NOW() ORDER BY datum ASC");
            $result = @mysql_fetch_array($query);
            DANKE !!!
            [color=blue]THE MAD BOYS[/color]

            Wer anderen eine Bratwurst brät hat ein Bratwurstbratgerät.

            Kommentar


            • #7
              Servus mal wieder...
              also an dem löschen müssen wir noch arbeiten...


              $delete = "DELETE FROM tmb_termine WHERE art= '2' AND art= '3' AND datum < DATE_SUB(NOW(), INTERVAL 10 DAYS)";
              $delold = mysql_query($delete) OR DIE (mysql_error());

              da kommt dann ne fehlermeldung:

              Fehler in der Syntax bei 'DAYS)' in Zeile 1.
              [color=blue]THE MAD BOYS[/color]

              Wer anderen eine Bratwurst brät hat ein Bratwurstbratgerät.

              Kommentar


              • #8
                guckst du hier: http://www.mysql.com/doc/de/Date_and...functions.html

                is einfach ein S zuviel
                Ich denke, also bin ich. - Einige sind trotzdem...

                Kommentar


                • #9
                  Hmmm das hab ich vorhin gesucht... klappt aber trotzdem nich so wie es soll !


                  ich nehme an das es an dem now() liegt.

                  mysql> select NOW();
                  -> '1997-12-15 23:50:26'
                  mysql> select NOW() + 0;
                  -> 19971215235026
                  also wenn ich das ( datum < DATE_SUB(NOW(), INTERVAL 10 DAY) ) auflöse steht ja sowas drin wie


                  wennDATUMausZEILE < DATE_SUB(2003-07-27 20:45:26, INTERVAL 10 DAY)

                  weiter kann er es wahrscheinlich nich auflösen wegen der Zeit

                  mysql> SELECT DATE_SUB("1998-01-02", INTERVAL 31 DAY);
                  -> 1997-12-02

                  kann ich sowas mit php ausgeben ? wenn ja wie ? dann kann ich es selber testen....
                  Zuletzt geändert von Doomer; 28.07.2003, 09:30.
                  [color=blue]THE MAD BOYS[/color]

                  Wer anderen eine Bratwurst brät hat ein Bratwurstbratgerät.

                  Kommentar


                  • #10
                    reg ich mich jetzt auf oder nicht?

                    [ ] du hast den text in dem von mir geposteten link gelesen

                    [ ] du hast den kleinen satz unter dem link gelesen

                    [ ] du hast die deine! funktionierende ausgabe in der konsole mit deinem nicht funktionierenden statement abgeglichen

                    [ ] du hast nachgedacht
                    Ich denke, also bin ich. - Einige sind trotzdem...

                    Kommentar


                    • #11
                      Das "s" hab ich schon rausgenommen is nur so in den tread geraten weil ichs aus dem tread kopiert hab, sorry !


                      [X] du hast den text in dem von mir geposteten link gelesen

                      [X] du hast den kleinen satz unter dem link gelesen

                      [?] du hast die deine! funktionierende ausgabe in der konsole mit deinem nicht funktionierenden statement abgeglichen

                      [X] du hast nachgedacht
                      sonst hätt ich die idee mit der falschen zeit nich !

                      geht trotzdem nich !!!

                      also fehlermeldung kommt keine mehr, aber er nimmt halt auch nicht die alten termine raus.
                      Zuletzt geändert von Doomer; 28.07.2003, 09:30.
                      [color=blue]THE MAD BOYS[/color]

                      Wer anderen eine Bratwurst brät hat ein Bratwurstbratgerät.

                      Kommentar


                      • #12
                        wenn du keine fehlermeldung bekommst, stimmt dein statement,

                        mach aus dem delete mal ein select, damit du siehst ob es überhaupt datensätze gibt, auf die die bedingungen zutreffen
                        Ich denke, also bin ich. - Einige sind trotzdem...

                        Kommentar


                        • #13
                          Also mal angenommen ich hab das so richtig gemacht dann findet er keine Datensätze.

                          PHP-Code:
                          hier stand mal massig phpcode... 

                          Kann ich das now() irgendwie ausgeben lassen ?
                          Zuletzt geändert von Doomer; 29.07.2003, 08:25.
                          [color=blue]THE MAD BOYS[/color]

                          Wer anderen eine Bratwurst brät hat ein Bratwurstbratgerät.

                          Kommentar


                          • #14
                            Original geschrieben von Doomer
                            Kann ich das now() irgendwie ausgeben lassen ?
                            klar.

                            Code:
                            SELECT NOW()
                            oder du kannst es auch in deine query einbinden.
                            Code:
                            SELECT *,NOW() DeinNowFeld FROM tmb_termine WHERE art= '2' AND art= '3' AND datum < DATE_SUB(NOW(), INTERVAL 10 DAY)
                            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


                            • #15
                              Also das war jetzt für nen leicht besseren Anfänger etwas zu wenig...

                              SELECT NOW()

                              Hab mal probiert:

                              $query = mysql_query("SELECT NOW()");

                              $row = mysql_fetch_row ($query);
                              echo $row[0];

                              aber da kommt nix raus bei
                              [color=blue]THE MAD BOYS[/color]

                              Wer anderen eine Bratwurst brät hat ein Bratwurstbratgerät.

                              Kommentar

                              Lädt...
                              X