Datumsfelder -> select Befehl ??

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

  • Datumsfelder -> select Befehl ??

    Ich trage über ein Formular Datensätze mit einem Feld im Format "01.01.2002" --- $datum = date('d.m.Y');--- in eine mySQL DB ein.

    Jetzt möchte ich über eine Vorauswahl "Datum vom" und "Datum bis" Datensätze selektieren.

    SELECT * FROM projekte where datum => '$datum_vom' and datum =< $datum_bis

    Leider funktioniert das nicht. Ich denke PHP kann mit meinem Format nicht viel anfangen. Wie kann ich es schaffen, die Abfrage korrekt auszuführen? Muss ich das anfängliche Format für das Datum umstellen? Kann dann der User noch ein korrektes deutsches Datumsformat eingeben?

    Vielen Dank im voraus
    Gruss Sven
    Gruss Sven

  • #2
    Das Statement sollte:

    SELECT * FROM projekte where datum => '$datum_vom' and datum <= $datum_bis

    heißen ... also <= und nicht => ...

    Ich würde das Datum vor dem Speichern ... bzw vor der Abfrage zumindest in's Format YYYY-MM-DD bringen ...

    $datum=preg_replace("/^(\d{1,2})\.(\d{1,2})\.(\d{4})$/", "\\3-\\2-\\1", $datum);
    carpe noctem

    [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
    [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

    Kommentar


    • #3
      Du musst das Datum auf jeden Fall umformen. Woher soll die Datenbank denn wissen, dass du TT.MM.JJJJ benutzt. Schließlich ist ein date-Field ja auf JJJJ-MM-TT eingestellt. Wenn du dann mit <>= arbeitest, bekommt der logischer Weise ein Problem.

      Anstonsten empfiehlt sich statt <= => oder wie auch immer den Befehl IN zu benutzen. Der wird ähnlich wie LIKE eingesetzt.

      Kommentar


      • #4
        Nachdem du das Datum umgeformt hast, kannst Du auch so die DB anfragen:

        SELECT * FROM projekte WHERE datum BETWEEN '$datum_vom' AND '$datum_bis'

        Voraussetzung ist aber, dass das Datumsformat der DB verwendet wird. Dann kannst Du auch noch nach Datum sortieren, und zwar richtig

        z.B. ... ORDER BY datum DESC
        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


        • #5
          Stimmt. Ich meinte gar nicht IN, sondern BETWEEN. Hab da was vertauscht. IN würde nicht die Daten zwichen Anfangs- und End-Datum nehmern, sondern nur die zwei.

          Wie der Name halt sagt.

          Kommentar


          • #6
            jepp ....
            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

            Lädt...
            X