Willkommen im TP-Hilfe-Forum! Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst.
Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, Deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team.
die folgende Fehlermedlung öffnet sich im selben fenster indem das Eingabeformular bearbeitet zw. eingegeben wird.
Also wird die Eingabe geschlossen. Browser "Zurück" funktioniert dann auch nicht mehr und die Eingaben müssen neu gemacht werden.
Kann ich diese Meldung auch in einem neuen Fenster (_blank) öffnen lassen.
PHP-Code:
GetSQLValueString($_POST['hiddenField'], "int"),
GetSQLValueString($_POST['anzahl'], "int"),
GetSQLValueString($_POST['bezeichnung'], "text"),
GetSQLValueString($_POST['neupreis'], "double"),
GetSQLValueString($_POST['verkaufspreis'], "double"),
GetSQLValueString($_POST['sollverkauf'], "int"),
GetSQLValueString($_POST['datumneukauf'], "date"),
GetSQLValueString($_POST['datumverkauf'], "date"),
GetSQLValueString($_POST['pic'], "text"),
GetSQLValueString($_POST['sonstiges'], "text"));
mysql_select_db($database_gigs, $gigs)or die("<b>Es konnte keine Verbindung zur Datenbank aufgenommen werden.</b>");
$Result1 = mysql_query($insertSQL, $gigs) or die ("<b>Du hast vergessen Eingaben zu machen die unbedingt notwendig sind. (Anzahl und Bezeichnung)</b>");
__________________
Harleylujar, Michael!!
Man sieht nur mit dem Herzen gut - das Wesentliche ist für das Auge unsichtbar...
Fehlt da nicht was?
Also wenn das das ganze Script ist, dann wundert mich ein Fehler nicht.
Nutze halt nicht die(). Ggf. nicht schlecht, wenn Du Dir mal die Bedeutung durchliest.
Versuch es mal wie folgt
PHP-Code:
if(!$Result1 = @mysql_query($insertSQL, $gigs)){ echo "<b>Du hast vergessen Eingaben zu machen die unbedingt notwendig sind. (Anzahl und Bezeichnung)</b>"; //Hier kann dann das Formular mit den Daten erscheinen, oder Du setzt nen Link auf das Formular usw. }
Sicherlich ist das nicht das ganze Script.
Ich bekomme ja auch keine Fehlermeldung, sondern will nur verhindern, dass eine Mysql Fehlerangabe im laufenden Scriptfenster geöffnet wird und damit schließt. Bevor ich hier Fragen stelle, (das habe ich mir gemerkt,) lese ich.
Mir ist auch bewußt, dass man diese Fehlermeldungen mit einem
$ergebnis=@mysql_query($anfrage); unterdrücken kann. Ist aber bei einem
Dantenbankserver down wohl nicht so empfehlenswert.
Danke für Deine Hilfe..!
__________________
Harleylujar, Michael!!
Man sieht nur mit dem Herzen gut - das Wesentliche ist für das Auge unsichtbar...
Wenn Du PHP5 im Einsatz hast kannst Du mit Exceptions (try/throw/catch) arbeiten um Fehler(meldungen) abzufangen und durch eigene Meldungen (bzw. Alternativ-Prozeduren) zu ersetzen. Der Umgang mit Exceptions setzt allerdings OOP-Kenntnisse voraus. Der einfachere Weg ist der von webcreate beschrieben und eigentlich auch Standard um auf Fehler zu reagieren.
[edit]
MySQL meldet auch einen Error-Code den man mit IF-Abfragen auswerten kann. So lässt sich sehr einfach feststellen was das Problem ist und eine entsprechende Nachricht ausgeben. Die ganzen Fehlerbehandlungen finden aber mit IF-Abfragen statt bei denen ein Status (z.B. einer DB Verbindung) ermittelt wird und nicht mit Abbrüchen des Scripts wie es bei die() oder exit() der Fall ist.
__________________
#.Viele Grüße, Andreas
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Also, wir sind uns darüber einig, dass php schon alles interpretiert hat, bevor du es im Broswer ausgeliefert bekommst, oder ??
Wie soll PHP auf dann automatisch einen "_blank"-Link quasi "klicken" ??
ergo -> Unmöglich, neues Fenster per php zu öffnen.
Das führt zu folgenden Möglichkeiten:
1. Ein Link: "Sehen sie Hier die Fehlermeldung"
Sinnvoll ? Gutaussehend ? oder mir sonst irgendwie schmackhaft zu machen ?
Nein !!
2. Javascript-Popup: Möglich...
Ratsam ?? Nein....Stichwort Popupblocker...
Und selbst wenn du an dem vorbeikommst, mache ich deine Seite schon aus Reflex zu, weil ich es nicht mag, wenn jemand klüger ist als ich (respektive mein Ad-Blocker)
Da beide Möglichkeiten imho in 90% der Fälle nicht ratsam sind - Kommen wir wieder zu deiner ursprünglichen Lösung...Genau wie schon von webcreate vorgeschlagen - Standardseite, Fehlermeldung an gewünschter Stelle, feddich:
Habe wie folgt versucht zu lösen.
Das Script wird zwar nicht mehr abgebrochen, jedoch wird die von
mir geschriebene Fehlerbehandlung nicht angezeigt.
Woran könnte das noch liegen?
Hier mal der Code:
PHP-Code:
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
Davon ausgehend, dass du mit der DB verbunden bist....
Sehe ich auf die schnelle keinen (PhP-)Fehler -
Offensichtlich ist:
PHP-Code:
$fehler != 1048
Wo er aussteigt, was der Fehler (sowohl ohne als auch mit $ ) ist,. tralala....
Musst du selber rausfinden - wir haben deine SQL-Tabellen nicht, von daher ist das, bei richtiger PHP-Syntax, ein reines Rätselraten
lass dir vor dem
PHP-Code:
if($fehler == 1048) { ...}
mal per echo $fehler ausgeben und verfolge dann rückwärts nach, wo er aussteigt...
er steigt genau da aus wo ich auch die if-Anweiszung habe.
PHP-Code:
$Result1 = mysql_query($insertSQL, $gigs)
or die(mysql_errno().": ".mysql_error());
Wenn ich den Code so durchlaufen lasse und für das int(6)-Feld Anzahl
und Text-Feld Bezeichnung keine Eingabe gemacht wurde:
wird der Fehler 1048 und "anzahl bzw bezeichnung" cannot NULL
ausgeworfen.
Wenn ich jetzt die Fehlermeldung mit der IF-Anweisung und Fehlercode abfrage, wird auch bei echo $fehler nichts angezeigt.
Sagt mir nur, er findet den Fehler nicht mit meiner Fehlerabfrage.
PHP-Code:
$fehler = mysql_errno($insertSQL, $gigs);
//1048= Fehlernummer NO-NULL-Felder//
if($fehler == 1048) {
echo "Du hast vergessen die Anzahl und Bezeichnung einzugeben";}
else {
echo "Nicht behebbarer Fehler";}
__________________
Harleylujar, Michael!!
Man sieht nur mit dem Herzen gut - das Wesentliche ist für das Auge unsichtbar...
Du steckst das Ergebnis der mysql_query in $result1
ergo muss sich mysql_errno() auch auf $result1 beziehen.
sprich:
PHP-Code:
$fehler = mysql_errno($Result1);
Jetz passts, wa ??
Wie gesagt, ich habe vorher gelesen.
Und dort wird klipp und klar auch auf mysql_query hingewiesen bzw. als
Beispiel zu Fehlerbehandlung hingewiesen.
Außerdem habe ich die Fehlersuche in eine Extra Variable gepackt.
PHP-Code:
$fehler = mysql_errno($insertSQL, $gigs);
__________________
Harleylujar, Michael!!
Man sieht nur mit dem Herzen gut - das Wesentliche ist für das Auge unsichtbar...
sorry meine "blöde" Frage, aber warum wird die Validierung nicht direkt auf ein Formularfeld gesetzt, ich meine in üblicher Affenformularart? Naja, es geht doch um die fehlenden Eingaben über ein Formular.
Da hat doch mysql noch gar nix mit zu schaffen, die Validierung schafft php ganz allein