zu bestimmten Datum springen

markberg

Erfahrenes Mitglied
Hallo,
ich habe einen Kalender mit Einträge nach mehreren Datumse. Wie kann man es realisieren, dass jemand über zwei Felder, also z.B. feld1 "01" feld2 "10" zu diesem gewünschten Datum kommt. Die Abfrage bereitet mir gerade etwas Kopfzerbrechen... Zumal das Datum ja bei der Eingabe bis zum Ergebnis noch umformatiert werden muss!? Sehe ich das richtig!? Vielen Dank vorab für etwas Hilfe :)
 
Ich verstehe dein Anliegen nicht ganz. Was genau versuchst du zu realisieren?

PS: Die Pluralform von Datum ist übrigens Daten.
 
Datumse sollte ein kleiner Scherz sein, Sorry...

Ich habe ein Kalender, da sind Daten sagen wir bis Ende des Jahres drin. Über zwei Felder Tag & Monat, in die der User Tag und Monat eingeben kann, soll dann die Abfrage ab diesem Datum sein.
Also gibt er 01 für Tag und 10 für Monat an, dann Abfrage = alle Daten vom 01.10. bis Ende Inhalt DB.
 
Ohne es jetzt getestet zu haben müsste ein Query nach folgendem Schema funktionieren:

PHP:
$daten = "SELECT 'Eintrag' FROM 'Tabelle' WHERE UNIX_TIMESTAMP('Datum') > ".strtotime("2005-09-30");

oder demenstsprechend:

PHP:
$daten_query = "SELECT 'Eintrag' FROM 'Tabelle' WHERE UNIX_TIMESTAMP('Datum') > ".strtotime("2005-".$_POST['Feld_Monat']."-".$_POST['Feld_Tag']);
mysql_query($daten_query) or die(mysql_error());
 
Zuletzt bearbeitet:
Das du einen MySQL-Datentyp ist schon mal gut. Probier mal eine Abfrage folgenden Musters:
Code:
SELECT
        …
  FROM
        …
  WHERE
        `<Spaltenbezeichnung>` >= '2005-10-01'
Der Vergleichswert sollte natürlich aus den Benutzerangaben zusammengesetzt werden.
 
Also ich bin auf die Variante gekommen, ist aber als Ergebnis nur eine Fehlermeldung.

PHP:
$datumtag = $_POST["datumtag"];
$datummonat = $_POST["datummonat"];

$where = " `datum`=> `datumtag` LIKE '%".$datumtag."%' AND `datummonat` LIKE 'datummonat'  ";
$datum = sprintf("%d-%02d-%02d", $datummonat, $datumtag);


$SQLString = "SELECT id, kategorie, wochentag, headline, musik, location, link, DATE_FORMAT(datum, '%d.%m.') AS datumFormatiert FROM DBxxx.tabelle WHERE ".$where." ORDER BY datum LIMIT 50";
 
Probier mal Folgendes:
PHP:
<?php

	…
	$query = "
		SELECT
		        `id`,
		        `kategorie`,
		        `wochentag`,
		        `headline`,
		        `musik`,
		        `location`,
		        `link`,
		        DATE_FORMAT(`datum`, '%d.%m.') AS `datumFormatiert`
		  FROM
		        `DBxxx`.`tabelle`
		";
	if( checkdate($_POST['datummonat'], $_POST['datumtag'], date('Y')) ) {
		$query .= "
		  WHERE
		        `datum` >= '".sprintf('%d-%02d-%02d', date('Y'), $_POST['datummonat'], $_POST['datumtag'])."'
			";
	} else {
		$query .= "
		  WHERE
		        `datum` >= NOW()
			";
	}
	$query .= "
		  ORDER BY
		        `datum`
		  LIMIT
		        50
		";
	…


?>
 
Naja, nicht ganz... Jetzt zeigt er auch alte Termine an... Also auch vor dem jeweils heutigen Datum. Das habe ich durch

PHP:
datum >= NOW() ORDER BY `datum` LIMIT 50 ";

versucht zu ändern. Funkt. nicht. Ausserdem sortiert er trotzdem nicht nach Datum, sondern nach den 'Location'!?
 
Zurück