Unbekannter Fehler im Code. Bildschirm weiß

  • Themenstarter Themenstarter moritz115
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
Achso.

Naja, ich denke, hier müssen dann andere mal ihren Blick auf den Code werfen und ihren Ratschlag abgeben ;)

Vielen Dank und mfg
moritz115
 
Dein else-Abzweig greift nicht in dem Fall, dass keine Spalte gefunden wurde:

Code:
$name_holen = "SELECT `name` FROM `wwp_page` WHERE `ID` = $id";
$name_hab = mysql_query($name_holen) or die (mysql_error());
$name_ausg = mysql_fetch_row($name_hab) or die(mysql_error());
....dann ist spätestens beim Fett markierten Schluss.
Zum else wird es nur in dem einen Fall kommen, wo das Feld name des gefundenen Datensatzes einem booleschen false entspricht(ohne Typenprüfung)
 
Achso.

Naja, ich denke, hier müssen dann andere mal ihren Blick auf den Code werfen und ihren Ratschlag abgeben ;)

Vor allem solltest du mal in ein Handbuch schauen und dich über Kontrollstrukturen und Debugging schlau machen, anstatt hier abwechselnd Code hinzuklatschen oder zu vermelden, dass es nicht geht.

Dein Skript hapert schon ab dieser fett markierten Zeile:
Code:
$id = "'".$_GET['id']."'";
$name_holen = "SELECT `name` FROM `wwp_page` WHERE `ID` = $id";
$name_hab = mysql_query($name_holen) or die (mysql_error());
$name_ausg = mysql_fetch_row($name_hab) or die(mysql_error());
$name_ausgeben = $name_ausg[0];

Du prüfst überhaupt nicht, ob $_GET['id'] existiert, füllst daraus aber eine Variable, der du sogleich vetraust, als wäre sie wirklich gesetzt und lässt diese Variable auf deine DB los.
 
Vor allem solltest du mal in ein Handbuch schauen und dich über Kontrollstrukturen und Debugging schlau machen, anstatt hier abwechselnd Code hinzuklatschen oder zu vermelden, dass es nicht geht.

Dein Skript hapert schon ab dieser fett markierten Zeile:
Code:
$id = "'".$_GET['id']."'";
$name_holen = "SELECT `name` FROM `wwp_page` WHERE `ID` = $id";
$name_hab = mysql_query($name_holen) or die (mysql_error());
$name_ausg = mysql_fetch_row($name_hab) or die(mysql_error());
$name_ausgeben = $name_ausg[0];

Du prüfst überhaupt nicht, ob $_GET['id'] existiert, füllst daraus aber eine Variable, der du sogleich vetraust, als wäre sie wirklich gesetzt und lässt diese Variable auf deine DB los.
Da hast du allerdings recht...
Wenn $_GET["id"] nicht existiert kommt ein großer böser fehler ;)
aber die mysql_error()´s müssten doch was ausgeben, oder?
Klär mich da bitte einmal auf ;)
lg
Daniel
 
Da hast du allerdings recht...
Wenn $_GET["id"] nicht existiert kommt ein großer böser fehler ;)
aber die mysql_error()´s müssten doch was ausgeben, oder?
Klär mich da bitte einmal auf ;)
  • Da kommt kein großer böser Fehler, sondern höchstens eine Notice wegen der undefinierten Variable $_GET['id']
  • da dieser Fall nicht abgefangen/geprüft wird, wird die Variable $id mit einem leeren String gefüllt
  • Das QUERY wird ganz normal ausgeführt.....
Code:
SELECT `name` FROM `wwp_page` WHERE `ID` = ''
  • Das QUERY liefert keine Ergebnisse...auch das wird nicht geprüft(mysql_num_rows())
  • mysql_fetch_row() wird auf den aktuellen Datensatz der Ergebnisliste angewandt:
    Es gibt da aber keinen Datensatz :eek:
    Und in diesem Fall wird nicht etwa ein mysql-Fehler produziert, sondern lediglich ein false zurückgegeben.
  • durch dieses false kommt es zu die(mysql_error()) , da es aber keinen MYSQL-Fehler gab, erfolgt dort keine Ausgabe.
  • das, was er dort als Quelltext aus dem Browser gepostet hat, ist ein Standardtemplate des Browsers für einHTML-Dokument, wenn er ein Solches ohne irgendwelche Daten geliefert bekommt

Summa Summarum:
man könnte diese Zeile
Code:
$name_ausg = mysql_fetch_row($name_hab) or die(mysql_error());
sinngemäss übersetzen in:
Code:
erstelle eine Variable wenn Datensatz vorhanden oder beende die ganze Sache und gebe einen leeren String aus mangels Mysql-Fehler
 
Hallo,

Danke, aber was meinst du genau was ich machen soll?

Danke und mfg
 
Hallo!

Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content="text/html; charset=windows-1252" http-equiv=Content-Type></HEAD>
<BODY></BODY></HTML>
Falls es noch niemanden aufgefallen sein sollte --> dieser Quelltext kommt definitiv NICHT vom Script.

Spätestens bei
Code:
</BODY></HTML>
sollte es jedem auffallen.
Denn im Script steht
Code:
</body>
</html>
und ist vollkommen unabhängig davon ob die Datenbankverbindung/-abfrage klappt und/oder ob und wie die if/else Kontrollen greifen.

Daraus ziehe ich den einzig sinnvollen Schluss dass nicht das Script aufgerufen wird, sondern irgend etwas anderes.
Beispielsweise könnte es eine "blanko"-Error 404 Seite (Datei nicht gefunden) sein (und ja, es gibt Hoster die solche nichts aussagenden Fehlerseiten ausgeben --> alles nur eine Frage der Serverkonfiguration).

Gruss Dr Dau
 
Hallo,

das Script wird aufgerufen. Und ich habe Strato. Da kann man sich eine eigene Fehlerseite erstellen.
Es wird KEINE Fehlerseite aufgerufen! Denn wenn ein Dokument nicht vorhanden ist, sieht die Fehlermeldung anders aus als Weiß. Das habe ich ausprobiert!


Vielen Dank für eure Hilfe!
 
Zuletzt bearbeitet von einem Moderator:
mit if überprüfen, ob Datensatz mit ID xyz vorhanden

Hallo,

ich habe schon gestern und heute Stundenlang google durchforstet und alle möglichen Codes zur Lösung meines Problems ausprobiert. Jedoch leider nichts geholfen :(
Mein Problem:
Ich möchte mit einer if anweisung überprüfen, ob ein Datensatz mit der ID $id vohanden ist. Also so:

if (Datensatz mit der ID $id vorhanden) {
Datensatz mit ID $id vorhanden
}
else
{
Datensatz nicht vorhanden
}


Ich finde zwar vieles, funktioniert aber nur halb. Wenn Eintrag vorhanden, gibt der etwas aus. Wenn Eintrag nicht vorhanden, gibt der nichts aus, obwohl der dies soll... -.-
Hoffentlich kann mir jemand helfen :)
 
Zuletzt bearbeitet von einem Moderator:
Status
Nicht offen für weitere Antworten.
Zurück