Ankündigung

Einklappen
Keine Ankündigung bisher.

Probleme mit mysql-query

Einklappen

Neue Werbung 2019

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

  • Gast-Avatar
    Ein Gast erstellte das Thema Probleme mit mysql-query.

    Probleme mit mysql-query

    Hallo zusammen!

    Ich m�chte einen Geburtstagskalender machen.

    Man soll (unter anderem) auch einstellen k�nnen, welche Geburtsatage man sehen will, zb alle zwischen 31.08 und 31.12.

    Ich hab schon viel rumgesucht, und auch hier bin ich auf Ans�tze gesto�en, aber ich hab's noch nicht ganz geschafft.

    Hab bisher zwar eine Abfrage geschafft, aber die ist noch nicht ganz korrekt...
    PHP-Code:
    <?
    $mysql = "SELECT IDENT, FAMNAME, VORNAME, TITEL2, NAME2A, GEB_DATUM, EMAIL FROM vkstamm
    WHERE GEB_DATUM BETWEEN ADDDATE('$datum_anfang', INTERVAL 1 DAY) AND 
    ADDDATE('$datum_ende', INTERVAL 1 DAY) ORDER BY GEB_DATUM";
    ?>
    --> $datum_anfang und $datum_ende sind w�hlbar
    Man muss aber bei dieser Methode immer auch ein Jahr angeben, ich hab also einfach bei anfang das Jahr 1000 und bei ende das aktuelle Jahr angegeben, aber das macht die Abfrage irgendwie sinnlos, da ja alle Geburtstage zwischen diesen Jahrenliegen, und somit auch alle angezeigt werden...

    Wie muss ich den query ab�ndern, damit das Jahr egal ist, nach den Monaten und Tagen gesucht wird und somit die Abfrage einen Sinn ergibt ?
    (GEB_DATUM ist date YYYY.MM.DD)

    Vielen dank im Vorraus f�r jede Antwort!

  • Chr!s
    antwortet
    Arbeite doch lieber mit Timestamps...
    http://de.php.net/date
    http://de.php.net/time
    http://de.php.net/mktime

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    vielleicht so:
    PHP-Code:
    <?php
    $date_from 
    date('n.d'strtotime("2005-$_GET[monat1]-$_GET[tag1]"));
    $date_to =  date('n.d'strtotime("2005-$_GET[monat2]-$_GET[tag2]"));

    if((
    $date_from $date_to 12 0) + date('n.d'strtotime($birthday)) >= $date_from AND
       
    date('n.d'strtotime($birthday)) <= $date_to)
      echo 
    "jupp";
    ?>
    habs sogar ausprobiert!

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Also der User gibt in zwei Textfelder je ein Datum IM Format tt.mm ein. Dann wird das ganze per get übergeben und wie folgt ausgwertet

    PHP-Code:
    <?php
    while($row mysql_fetch_object()$result)
    {
    if((
    date("n"strtotime($row->Geburtstag)) <= $_GET[monat1] AND date("n"strtotime($row->Geburtstag)) >= $_GET['monat2']) AND (date("j"strtotime($row->Geburtstag)) <= $_GET[tag1] AND date("j"strtotime($row->Geburtstag)) >= $_GET['tag2'])
    {
    echo 
    $row->name;
    }
    }
    ?>
    Habe ich jetzt nicht geteste!!!

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Hm, das klingt auch gut (zwar nicht so optmtimal, da ja alle Datensätze dann gesucht werden, aber für den Anfang mal nicht schlecht).

    Und wie mach ich das dann?

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Du könntest auch alle Datensätze raussuchen lassen, und dann mittels PHP die raussortieren die zwischen x. und y. liegen.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Das geht leider nicht, die Tabelle existiert schon lange, und wird auch von anderen Programmen verwendet, da darf ich nichts dran ändern...

    Es muss doch auch eine Möglichkeit geben, nur nach MM.DD zu suchen...

    Leider finde ich die nirgends...

    Weiß jemand wie man den query umschreiben kann, (eventuell ohne BETWEEN) und trotzdem das gewünschte Ergebnis (ein Zeitraum) dabei herauskommt?

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Du solltest vielleicht übetr den Aufbau der Tabelle nochmal nachdenken.
    Wär doch einfacher, wenn du eine Spalte für Tag, eine für Monat und eine für Jahr hast.

    @mods: Bitte nach MySQL verschieben.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Hab noch weiter rumgesucht und hab meinen Code jetzt etwas geändert:
    PHP-Code:
    <?
    $mysql = "SELECT IDENT, FAMNAME, VORNAME, TITEL2, NAME2A, GEB_DATUM, EMAIL FROM vkstamm 
    WHERE GEB_DATUM BETWEEN date('$datum_anfang') 
    AND date('$datum_ende') ORDER BY GEB_DATUM";
    ?>
    --> ist jetzt besser (übersichtlicher) aber immer noch nicht das was ich suche...

    Ich müsste irgendwie sowas wie BETWEEN LIKE einbauen, also sowohl zwischen den Zeiträumen, als auch egal welches Jahr...
    (BEETWEEN LIKE geht nicht)

    Weiß keiner wie sowas geht?

    Einen Kommentar schreiben:

Lädt...
X