sakina: datumvergleich/datenbank

Hallo,

ich brauche eure Hilfe...
ich hab geschafft den aktuellen Datum mit der  Datum im Datenbank zu vergleichen.
das Problem ist nur, dass beim vergleich etwas schief läuft, das erkläre ich am besten mit einem beispiel:

Datensätze:
       id  reason       datum
1      19    9        2007-05-20
2      19    11       2008-05-02

Problem:
die select abfrage nimmt den ersten datensatz und nicht den treffenden.
codeabschnitt:
$grund = mysql_result($result, 0, "grund");
// 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'";

$result= mysql_query($reason) or die(mysql_error());
$row= mysql_num_rows($result);

if($row != 0){
  $grund = mysql_result($result, 0, "grund");
  print "|\n\n". $grund;
}
-------------------------------------------------------------------------

vielen dank für eure Hilfe,
lg,
sakina

  1. 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

    1. Du solltest Deine Logik überprüfen. Ich verstehe zum Beispiel Deine zusammengebaute SQL-Anweisung nicht.

      Das glaub ich dir :), dieser Code ist jetzt nur eine *rumspielerei*, nicht wirklich das, was es sein soll. Manche Sachen habe ich mit Absicht umgeändert, damit ich keinen langen Code da rein kopiere

      trotzdem vielen dank,
      lg,
      Sakina

  2. Hallo nochmals :)

    ich bin schon selber auf mein Fehler gekommen :), trotzdem vielen dank,
    lg,
    sakina