Dieter Raber: while Schleife in if Abfrage

Beitrag lesen

Hallo Sabine,

ich habe das Programm jetzt folgendermaßen geändert

Sehr huebsch!

Was das SQL anbetrifft, will ich mal etwas weiter ausholen. Im PHP-Manual ist unter http://de3.php.net/manual/de/function.mysql-error.php erklaert, wie man sich Fehler ausgeben laesst, ich hab mir einem Buch mal eine nette Weiterentwicklung abgeschaut.

Du hast ja deine Datenbankverbindung wahrscheinlich in einer eigenen Datei, dort fuegst du ein:

function sql_error($show_error)
{
    if(error_reporting())
    {
      print '<p style="font-weight:bold">MySQL Error '
            . mysql_errno() . ': ' . mysql_error() . '</p>';
  }
}

Damit werden, solange du Fehlermeldungen eingeschaltet hast, immer auch komplette Meldungen vom MySQL-Server ausgegeben, Beispiel sie weiter unten.

$satz = mysql_query("SELECT * FROM $dbtabelle WHERE tag=$day AND monat=$hmonht AND jahr=$njahr ORDER BY stunde,minute");

Das ist ein haeufig gemachter 'Fehler', der eine wichtige Debugmoeglichkeit vorenthaelt. Es ist besser zu schreiben:
$sql = "SELECT * FROM $dbtabelle WHERE tag=$day AND monat=$hmonht AND jahr=$njahr ORDER BY stunde,minute";
Du kannst jetzt naemlich mit echo $sql die Query ausgeben lassen und direkt an der der Kommandozeile oder phpMyAdmin ausfuehren. In der naechsten Zeile kommt die Fehlerfunktion.
$satz = mysql_query($sql) or sql_error();

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in

Bedeutet ungueltige Abfrage, sollte mit der Fehlerfunktion ans Tageslicht kommen.

Wieder die Frage: Wo liegt der Fehler?

Ich weiss nicht, wo der Fehler liegt, wuerde aber erstmal Anfuehrungszeichen verdaechtigen. Mysql wird dir wesentlich mehr darueber erzaehlen als bisher.

Gruß,

Dieter