MSQL/php Validator meldet Fehler

rosang

Grünschnabel
Hallo Fachleute,

heute habe ich meine Seiten mit dem Validator geprüft, aber er meldet mir immer den Fehler. dass ich angeblich Div-Tags nicht geschlossen habe, weil er den Code nicht bis zum Ende prüft, sondern sich bei einer SQL-Anfrage mir Fehlermeldung beendet: You have error in your SQL Syntax near ' ' in line 1.

Nun starre ich schon ein paar Stunden auf den SQL Befehl und kann nichts finden, der Befehl wir ja bei Aufruf der Seite auch korrekt ausgeführt.
Wahrscheinlich sehe ich den Wald vo lauter Bäumen nicht und es ist ein ganz blöder Fehler.
Code:
$aufruf = $_GET['aufruf'];
.....
und jetzt der entscheidende SQL-Befehl:
Code:
$sql="SELECT ID, mtext, muvorh FROM menue WHERE ID=$aufruf";

In $aufruf können die Zahlen von 1 - 6 vorkommen

Danke für Eure Hilfe
Angelika
 
In diesem Fall ist vermutlich kein Parameter übergeben worden.
Mein Vorschlag:
PHP:
$aufruf = isset($_GET['aufruf'])?$_GET['aufruf']:1;
Wobei 1 in diesem Fall einen Standard-Wert darstellt, also die ID, die im Fall, dass keine übergeben wurde, ausgelesen werden soll. Eine andere Alternative wäre, mit Hilfe einer Abfrage die Where-Bedingung ganz weg zu lassen und alle Datensätze auszugeben:
PHP:
if (empty($_GET['aufruf'])) {
    $sql="SELECT ID, mtext, muvorh FROM menue";
} else {
    $sql="SELECT ID, mtext, muvorh FROM menue WHERE ID=".intval($_GET['aufruf']);
}
Außerdem sollte man keine übergebenen Werte ungeprüft in die Datenbankabfrage übernehmen (Stichwort SQL-Injektion).

Gruß hpvw
 
Leider hat es nichts gebracht, der validator meldet immer noch:
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

Aber mit den nicht geprüften Daten hast Du vollkommen Recht, hab's auch gleich übernommen.
 
Rätselhaft!
Was steht denn in der Variable drin bzw. wie sieht die fertige Abfrage aus (echo $sql;)?

Gruß hpvw

PS: Kann es sein, dass da jemand ein intval in meinem Beitrag ergänzt hat oder leide ich unter Verwirrung und Vergesslichkeit?
 
Das ist ja das Verwirrende, die SQL-Abfrae war schon immer schön und auch richtig ausgeführt, auf der Webseite funktioniert ja auch alles, aber ich habe eben gern, wenn bei meinen Seiten der Validator alles gut findet.
Tja das meldet das echo (oder der echo?)
SELECT ID, mtext, muvorh FROM menue WHERE ID=1
Vielleicht ist es ja tatsächlich ein Fehler im validator, kann ja auch mal vorkommen, ist ja auch nur von Menschen gemacht.
Gruß
Angelika
 
Kannst Du vielleicht einen Link zu der Seite posten und auch etwas mehr von dem PHP-Code? Wichtig wäre, mindestens von $aufruf= bis zum Ende der While-Schleife der mysql_fetch..-Anweisung.
Wenn bei Ausgabe der Fehlermeldung das PHP-Skript abrupt abbricht wird danach nichts mehr ausgegeben und wenn bis dahin noch nicht alle Tags geschlossen sind, wird der HTML-Validator natürlich Fehler melden.

Gruß hpvw
 
Nun ja die Seite ist noch nicht freigegeben, deshalb jetzt etwas länger: http://www.genossenschaften-in-berlin.de/indexneu.php
Die entscheidende Seite ist titelm1.php (das ist die die bei "Aktuelles" aufgerufen wird), der ganze Quatsch ist sowieso nur die Menüsteuerung, und mit der Abfrage will ich nur "Aktuelles" ausgeben, was ja auch funktioniert.

Nach dem SQL findet eigentlich fast nichts mehr statt, ich nehme nur noch das Ergebnis und gebe es aus, nämlich die Überschrift "Aktuelles".

Übrigens ich habe gerade mal was versucht. Statt des $GETusw habe ich explizit die 1 in den SQL-Aufruf gesetzt und siehe da, das Dokument ist valides html.
Ich glaube es ist wirklich ein Fehler im Validator.
Gruß A.
 
Könnte es sein, dass sich da noch irgendein Zeichen in den Link eingeschmuggelt hat?
Versuche doch den Parameter vor der Übergabe mal mit [phpf]trim[/phpf] zu bearbeiten.
Der Code, wo Du den Link erzeugst und der Code, wo Du die Datenbank ausliest könnte hilfreich sein.

Gruß hpvw
 
hallo hpvw,

vielen Dank für Deine Mühe, ich gebe jetzt auf. Ich habe jetzt "getrimt" was das Zeug hält, es ändert sich nichts.
Das Problem ist nämlich, ich will morgen für 4 Wochen in Urlaub fahren (Thailand Kambodscha Laos) und möchte mich jetzt noch ein wenig mit Urlaub beschäftigen.
es ist zwar unbefriedigend, aber ich verschiebe das ganze jetzt auf Mitte Februar, vielleicht bin ich dann auch ausgeruhter und das Problem löst sich dann von selbst.
Die Seite funktioniert ja und den Anwendern ist es wurscht, ob es valide ist, wird ja sowieso erst alles nach meinem Urlaub freigeben, die sollen jetzt in den 4 Wochen einfach mal testen.
Also nochmals vielen Dank und wenn ich dann was rausgekriegt habe, schreibe ich nochmal 'ne Antwort.
Viele Grüße
Angelika
 
Hallo hpvw,

was länge währt wird endlich gut:

Code:
$sql="SELECT ID, mtext, muvorh FROM menue WHERE ID='$aufruf'";


Also ich habe noch einen Versuch gewagt: den $aufruf in einfache Hochkomma gesetzt und der Validator hatte nichts mehr zu bemängeln.

Nochmals vielen Dank für Deine Mühe (war irgendwann Anfang Januar.

Viele Grüße
rosang
 
Zurück