+ Antworten
Seite 1 von 2 1 2 LetzteLetzte
Ergebnis 1 bis 15 von 17

Thema: MYSQL-Fehler abfangen (Neues Fenster)

  1. #1
    TP-Specialist MichaelM hilft, wo's geht MichaelM hilft, wo's geht MichaelM hilft, wo's geht Avatar von MichaelM
    Registriert seit
    Jan 2004
    Ort
    Münster-Hiltrup
    Beiträge
    2.323

    MYSQL-Fehler abfangen (Neues Fenster)

    Habe mal folgende Frage,

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

    www.mikel-mueller.de
    www.sanitaertechnik-mueller.de

  2. #2
    TP-Urgestein webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts Avatar von webcreate
    Registriert seit
    Nov 2003
    Ort
    NRW
    Beiträge
    11.660
    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.

    Gruß Mark

    webcreate IT SOLUTIONS
    www.webcreate-nrw.de

    Photoblog....|....flickr

  3. #3
    TP-Specialist MichaelM hilft, wo's geht MichaelM hilft, wo's geht MichaelM hilft, wo's geht Avatar von MichaelM
    Registriert seit
    Jan 2004
    Ort
    Münster-Hiltrup
    Beiträge
    2.323
    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..!
    Geändert von MichaelM (13.04.2007 um 11:16 Uhr)
    Harleylujar, Michael!!

    Man sieht nur mit dem Herzen gut - das Wesentliche ist für das Auge unsichtbar...

    www.mikel-mueller.de
    www.sanitaertechnik-mueller.de

  4. #4
    TP-Specialist phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts Avatar von phpBuddy
    Registriert seit
    Aug 2004
    Ort
    Kaiserslautern
    Beiträge
    4.678
    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.
    Geändert von phpBuddy (13.04.2007 um 12:09 Uhr)

  5. #5
    TP-Senior webdepp macht sich hier sehr viel Mühe
    Registriert seit
    Oct 2006
    Ort
    Augsburg
    Beiträge
    166

    Thumbs up

    ähm....Okay...

    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:

    PHP-Code:
    <? if(mysql_select_db($database_gigs$gigs))
    {
    $fehler '';
    }else{
    $fehler 'Nööö, keine Lust jetz...';

    ?>
    <html>.....
    <div id="fehler_Container"><? echo $fehler;?></div>

    ....

    quo errat demonstrator
    quo errat demonstrator

  6. #6
    TP-Specialist MichaelM hilft, wo's geht MichaelM hilft, wo's geht MichaelM hilft, wo's geht Avatar von MichaelM
    Registriert seit
    Jan 2004
    Ort
    Münster-Hiltrup
    Beiträge
    2.323
    OK, das hat mich schon mal weitergebracht.

    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 ""

    {
       
    $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;

      switch (
    $theType) {
        case 
    "text":
          
    $theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
          break;    
        case 
    "long":
        case 
    "int":
          
    $theValue = ($theValue != "") ? intval($theValue) : "NULL";
          break;
        case 
    "double":
          
    $theValue = ($theValue != "") ? "'" doubleval($theValue) . "'" "NULL";
          break;
        case 
    "date":
          
    $theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
          break;
        case 
    "defined":
          
    $theValue = ($theValue != "") ? $theDefinedValue $theNotDefinedValue;
          break;
      
      }
      return 
    $theValue;
    }

    $editFormAction $_SERVER['PHP_SELF'];
    if (isset(
    $_SERVER['QUERY_STRING'])) {
      
    $editFormAction .= "?" htmlentities($_SERVER['QUERY_STRING']);
    }
                
    if ((isset(
    $_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
      
    $insertSQL sprintf("INSERT INTO ausstattung (aID, anzahl, bezeichnung, neupreis, verkaufspreis, sollverkauf, datumneukauf, datumverkauf, pic, sonstiges) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",
                               
                                    
                                  
                           
    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>");
     
    //hier gehts los mit meiner Fehlerabfrage und Reaktion//
       
    $Result1 mysql_query($insertSQL$gigs);
      
    //die mysql Fehlerbehandlung habe ich auskommentiert.//
     //or die(mysql_errno().": ".mysql_error());//
      
    //hier ermittel ich die errornummer//
     
    $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";}
      
    $insertGoTo "neu.php";
      if (isset(
    $_SERVER['QUERY_STRING'])) {
        
    $insertGoTo .= (strpos($insertGoTo'?')) ? "&" "?";
        
    $insertGoTo .= $_SERVER['QUERY_STRING'];
       }
      
    header(sprintf("Location: %s"$insertGoTo));

    Harleylujar, Michael!!

    Man sieht nur mit dem Herzen gut - das Wesentliche ist für das Auge unsichtbar...

    www.mikel-mueller.de
    www.sanitaertechnik-mueller.de

  7. #7
    TP-Senior webdepp macht sich hier sehr viel Mühe
    Registriert seit
    Oct 2006
    Ort
    Augsburg
    Beiträge
    166
    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...
    quo errat demonstrator

  8. #8
    TP-Specialist MichaelM hilft, wo's geht MichaelM hilft, wo's geht MichaelM hilft, wo's geht Avatar von MichaelM
    Registriert seit
    Jan 2004
    Ort
    Münster-Hiltrup
    Beiträge
    2.323
    Hallo,

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

    www.mikel-mueller.de
    www.sanitaertechnik-mueller.de

  9. #9
    TP-Senior webdepp macht sich hier sehr viel Mühe
    Registriert seit
    Oct 2006
    Ort
    Augsburg
    Beiträge
    166
    Ujja, seh ich ja jetzt erst...

    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 ??
    quo errat demonstrator

  10. #10
    TP-Urgestein webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts Avatar von webcreate
    Registriert seit
    Nov 2003
    Ort
    NRW
    Beiträge
    11.660
    Mich wunder eher, dass Dein mysql_errno() kein Fehler verursacht.

    Schau Dir mal folgendes an
    PHP-Code:
    function sql_read($query){
        if(
    $sql mysql_query($query)) return $sql;
        else return 
    mysql_errno();
    }


    $sql_return sql_read("SELECT * FROM tp ORDER BY id");

    switch(
    gettype($sql_return)){
        case 
    "integer":
            switch(
    $sql_return){  
                case 
    1146: echo "Fehler: Unbekannte Tabelle"; break;
                case 
    1054: echo "Fehler: Feldangaben stimmen nicht"; break;
                case 
    1064: echo "Fehler: Fehler im SQL-Query"; break;
                default: echo 
    "Unbestimmter Fehler"; break;
            }
            break;
        case 
    "resource":
            while(
    $data mysql_fetch_array($sql_return)) echo "$data[id] | $data[artikel]<br />";
            break;


    Zitat Zitat von webdepp Beitrag anzeigen
    ergo muss sich mysql_errno() auch auf $result1 beziehen.
    Was? mysql_errno() bezieht sich auf die Verbindung, nicht auf einen Query oder sonst was!
    Gruß Mark

    webcreate IT SOLUTIONS
    www.webcreate-nrw.de

    Photoblog....|....flickr

  11. #11
    TP-Senior webdepp macht sich hier sehr viel Mühe
    Registriert seit
    Oct 2006
    Ort
    Augsburg
    Beiträge
    166
    letzter Fehler in dieser Verbindung ??

    Cool, wieder was gelernt
    quo errat demonstrator

  12. #12
    TP-Urgestein webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts Avatar von webcreate
    Registriert seit
    Nov 2003
    Ort
    NRW
    Beiträge
    11.660
    Zitat Zitat von webdepp Beitrag anzeigen
    letzter Fehler in dieser Verbindung ??
    Was willst Du damit nun fragen?
    Gruß Mark

    webcreate IT SOLUTIONS
    www.webcreate-nrw.de

    Photoblog....|....flickr

  13. #13
    TP-Specialist MichaelM hilft, wo's geht MichaelM hilft, wo's geht MichaelM hilft, wo's geht Avatar von MichaelM
    Registriert seit
    Jan 2004
    Ort
    Münster-Hiltrup
    Beiträge
    2.323
    Zitat Zitat von webdepp Beitrag anzeigen
    Ujja, seh ich ja jetzt erst...

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

    www.mikel-mueller.de
    www.sanitaertechnik-mueller.de

  14. #14
    TP-Urgestein webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts Avatar von webcreate
    Registriert seit
    Nov 2003
    Ort
    NRW
    Beiträge
    11.660
    Zitat Zitat von MichaelM Beitrag anzeigen
    Wie gesagt, ich habe vorher gelesen.
    Und dort wird klipp und klar auch auf mysql_query hingewiesen bzw. als
    Beispiel zu Fehlerbehandlung hingewiesen.
    Und wo steht das?
    Mal meinen letzten Code angeschaut? Da gebe ich gar nichts mit, da es eine optionale Angabe ist,
    Angehängte Grafiken  
    Gruß Mark

    webcreate IT SOLUTIONS
    www.webcreate-nrw.de

    Photoblog....|....flickr

  15. #15
    TP-Supporter Judi macht alles soweit korrekt
    Registriert seit
    Apr 2001
    Beiträge
    314
    Hi

    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

    Aber vielleicht denke ich auch zu einfach
    Liebe Grüße, die Judi!

+ Antworten
Seite 1 von 2 1 2 LetzteLetzte

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51