Hallo
Datensätze:
id reason datum
1 19 9 2007-05-20
2 19 11 2008-05-02
Beide Datensätze werden von Deiner Abfrage zurückgeliefert.
die select abfrage nimmt den ersten datensatz und nicht den treffenden.
Bei Deinem Code treffen beide zu.
codeabschnitt:
$grund = mysql_result($result, 0, "grund");
Nimm den ersten zurückgelieferten Datensatz. Da Du keine Sortierung angegeben hast, kann das Ergebnis in zufälliger Reihenfolge zurückgegeben werden.
// hier liegt das Problem, wieso der 1. Datensatz genommen wird, aber ich weiß nicht wie ich es lösen soll, damit der treffender Datensatz genommen wird
Code:
$von= date("Y-m-d", $date);//aktueller datum
$bis= '2008-05-28';$reason = "SELECT * FROM stunden WHERE id = 19 and '$von' >= datum and '$dat' <= '$bis'";
Bist Du Dir bei
'$dat' <= '$bis'
ganz sicher, dass Du das so haben willst?
$result= mysql_query($reason) or die(mysql_error());
$row= mysql_num_rows($result);if($row != 0){
Ah ja. Und was machst Du bei mehr als einem Datensatz, so wie hier.
$grund = mysql_result($result, 0, "grund");
Du nimmst den ersten.
print "|\n\n". $grund;
}
Du solltest Deine Logik überprüfen. Ich verstehe zum Beispiel Deine zusammengebaute SQL-Anweisung nicht.
Freundliche Grüße
Vinzenz