Werte mit Mysql vergleichen

Also wenn ich es mit dieser Anweisung probiere und die Variablem $mydatevon und $mydatebis entsprechende Werte haben, erhalte ich auch eine entsprechende Meldung!

Nimm mal die WHILE-Anweisung raus und dafür das hier:

PHP:
if (mysql_num_rows($a) == 0){
	echo "geht";
} else{
	echo "geht nicht";
}
 
Zuletzt bearbeitet:
Frage: Du schreibst dass die Daten im Date-Format vorliegen.
Ist das Feld ein DATE-Feld oder ein VARCHAR-Feld in dem du die Daten im Date-Format speicherst?
 
wenn ich das ganze nun mal ändere und die mysql-abfrage ohne Schnickschnack starte:
PHP:
$sql = "SELECT * FROM belegung";
$a = mysql_query($sql);

und anschließend prüfe:
PHP:
while ($b=mysql_fetch_array($a)) {
	$test=$b['von'];
	if ($test == "") {
		echo ("geht");
	} else {
		echo ("geht nicht");
	}
}

dann gibt er etwas aus:
Code:
geht nichtgeht nicht

logisch, da $test nicht leer ist und 2 Einträge in der DB exisitieren (deshalb 2x geht nicht). Nur mit der Where-Klausel im mysql-String geht leider gar nicht.
 
Ist es möglich uns mal das CREATE-TABLE Script sowie ein Data-Dump (Alos die Daten als INSERT-Statement) zu geben? Oder min. einige Testdaten zur Tabelle?
 
Also wenn ich es mit dieser Anweisung probiere und die Variablem $mydatevon und $mydatebis entsprechende Werte haben, erhalte ich auch eine entsprechende Meldung!

Nimm mal die WHILE-Anweisung raus und dafür das hier:

PHP:
if (mysql_num_rows($a) == 0){
	echo "geht";
} else{
	echo "geht nicht";
}

MOMENT MAL MOMENT MAL! Ich kann mir das Problem denken. Jetzt gibt er mir auch "geht" zurück.
Wenn ich ein Datum übergebe, welches sich direkt in einem Zeitraum der mysql-daten befindet, dann gibt er korrekt "geht nicht" zurück. ABER wenn ich jetzt per Formular ein Start und Enddatum wähle, welches sich außerhalb des bereits gebuchten Zeitraumes befinden, diesen aber beinhalten, so wird fälschlicher Weise auch "geht" zurück gegeben.

z.B.
Eintrag in DB:
von: 2012-11-10 bis 2012-11-15

übergebe ich jetzt per Formular :
von: 2012-11-08 bis 2012-11-12
erhalte ich korrekt "geht nicht", da die Formularvariable "bis"(2012-11-12) sich innerhalb des Zeitraumes ibefindet.

übergebe ich aber im Formular:
von: 2012-11-08 bis 2012-11-16
so erhalte ich fälschlicherweise "geht", da "von" und "bis" jeweils vor bzw. nach dem Zeitraum in der DB liegen. Dieser Zeitraum muß ja aber auch als "geht nicht" angezeigt werden.
 
Zuletzt bearbeitet:
SQL:
SELECT * FROM belegung WHERE 
    '$mydatevon' BETWEEN von AND bis
OR
    '$mydatebis' BETWEEN von AND bis
OR
    ('$mydatevon' <= von AND '$mydatebis' >= bis)

Was kommt mit dieser Abfrage raus?
 

Neue Beiträge

Zurück