Ankündigung

Einklappen
Keine Ankündigung bisher.

Fehlerbehandlung mit DIE() oder IF?!

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Fehlerbehandlung mit DIE() oder IF?!

    Hallo,

    was ist von der programmiertechnischen Seite die bessere Lösung: Eine Fehlerbehandlung mit die() oder doch lieber mit IF Anweisung?

    Danke für den Tipp.

  • #2
    na ja kommt halt drauf an

    wenn du wilst das das Script weiter läuft (in manchen Fällen macht das Sinn) dann IF anweisung.

    wenn es aber nicht mehr weiter laufen soll dann die() (in manchen Fällen mach das Sinn)
    :arrow: [URL="http://tiny.cc/0xlvv"]Wie man Fragen richtig stellt[/URL]

    Kommentar


    • #3
      Das hängt doch ganz von dem jeweiligen Fall ab. Wenn es ein schwerwiegender Fehler ist und das Script nicht mehr richtig laufen kann, sollte man es besser abbrechen, also die(). Bei kleineren Fehlern kann man auch einfach eine Ausgabe per echo machen.

      Ich frage mich allerdings, was diese Frage mit PHP zu tun hat. Ein wenig Nachdenken hätte wohl gereicht, um diesen Thread zu vermeiden, oder?

      Gruß
      phpfan

      Kommentar


      • #4
        In welcher Hinsicht?

        Wenn du die Programmsteuerung nach einem Fehler noch selbst in der Hand haben willst, solltest du natürlich nicht das Skript mit die(), exit, etc. abbrechen.

        die() ist IMO nur eine Debug-Methode für faule Programmierer.

        Kommentar


        • #5
          Gut, danke für die Tipps.

          @PHPFan: Entschudlige bitte. Aber ich dachte, das sei ein Forum, wo man fragen kann. Wenn dir meine Frage zu blöd ist, dann antworte doch bitte das nächste Mal einfach nicht. Wie gesagt, ich bin Anfänger und wollte nur nen Rat haben.

          Kommentar


          • #6
            Zitat von Gertrud
            @PHPFan: Entschudlige bitte. Aber ich dachte, das sei ein Forum, wo man fragen kann. Wenn dir meine Frage zu blöd ist, dann antworte doch bitte das nächste Mal einfach nicht. We gesagt, ich bin Anfänger und wollte nur denn Rat haben.
            Entschudlige bitte, aber mal ehrlich, da hätte man nicht von alleine drauf kommen können? Ich bin der Meinung, ja, auch als Anfänger. Wenn man immer nur andere denken lässt, lernt man keine Programmiersprache.

            Gruß
            phpfan

            Kommentar


            • #7
              Zitat von Saraneus
              In welcher Hinsicht?
              In Bezug auf mysql_connect und mysql_select_db.

              Kommentar


              • #8
                Zitat von Gertrud
                Zitat von Saraneus
                In welcher Hinsicht?
                In Bezug auf mysql_connect und mysql_select_db.
                Ich meinte "besser wofür"? Zum Testen/für die Produktivumgebung/für einen speziellen Fall?

                Kommentar


                • #9
                  Also ich muss eine Datenbankanbindung programmieren. Und um generell mit der DB zu kommunizieren.
                  ... ich wollte das nur mal so wissen.

                  Aber hier einfach mal mein Code. Wie gesagt, habe das zur Zeit einfach mit die() gelöst.

                  PHP-Code:
                  <?php
                  if(!isset($resetpw))
                          {    
                  mysql_connect("localhost""root""")    // Verbindugn zur My SQL aufstellen -> Zeiger darauf wird übergeben
                                  
                  OR die ("Keine Verbindung zum Datenbankserver!");
                              
                  mysql_select_db("museum")                        // die bestimmte DB wir ausgesucht
                                         
                  OR die ("Die Datenbank kann nicht angesprochen werden!");
                              
                  $frage="SELECT `Name`, `Vorname` FROM `benutzer` ORDER BY `Name`"
                              
                  $antwort=mysql_query($frage);
                              echo
                  " [b]Suchen Sie den Benutzer, um sein Passwort zurückzusetzen:[/b]
                                    <form action='resetpw.php' onSubmit='return confirm(\"Wollen Sie das Passwort wirklich zurücksetzen?\")' method='post'>
                                    <table style=' border:0; cellpadding:10px; margin: 40px 0 30px 70px;'>
                                      <tr><td class='spalte_eins'>Name, Vorname:</td>
                                          <td class='spalte_zwei'>
                                              <select name='nn' width='35'>
                                              <option value='0'>--- keine Auswahl ---</option>"
                  ;
                              while (
                  $daten mysql_fetch_array($antwortMYSQL_NUM)) 
                                  {    if (!isset(
                  $daten[1])) {echo"<option>$daten[0] </option>";}
                                      else{ echo
                  "<option>$daten[0]$daten[1] </option>"; }
                                     }                
                              echo
                  "                </select></td>
                                      </tr>
                                      <tr><td class='spalte_pw'></td></tr>
                                          <input type='hidden' name='resetpw' value='true'>
                                      <tr><td colspan='2' ><input type='submit' value=' Passwort auf Benutzernamen zurücksetzen '></td>
                                      </tr>
                                  </form>    
                                  </table>"
                  ;
                          }
                          
                          elseif(isset(
                  $resetpw))
                              {    unset(
                  $resetpw);
                                  
                  $name=$_POST['nn'];
                                  if (
                  $name=='0')
                                      { echo
                  "[b]Sie müssen schon ein Feld auswählen![/b]"; }
                                  else
                                  {    
                  $teil=explode(", "$name);
                                      if (isset (
                  $teil[1])){    
                                              
                  $frage"SELECT `Login` FROM `benutzer` WHERE `Name` = '$teil[0]' AND `Vorname` = '$teil[1]'" ;
                                              
                  $bed="WHERE `Name` = '$teil[0]' AND `Vorname` = '$teil[1]'";
                                            }
                                          else {    
                                              
                  $frage"SELECT `Login` FROM `benutzer` WHERE `Name` = '$teil[0]'" ;
                                              
                  $bed="WHERE `Name` = '$teil[0]'" ;
                                            }
                                      
                  mysql_connect("localhost""root""")      // Verbindugn zur My SQL aufstellen -> Zeiger darauf wird übergeben
                                              
                  OR die ("Keine Verbindung zum Datenbankserver!");
                                         
                  mysql_select_db("museum")                        // die bestimmte DB wir ausgesucht
                                                 
                  OR die ("Die Datenbank kann nicht angesprochen werden!");                            
                                         
                  $antwort=mysql_query($frage)
                                                 OR die (
                  "Fehler bei der Datenbakabfrage!");
                                         
                  $anz=mysql_num_rows($antwort);
                                        if (
                  $anz==1){    
                                                
                  $daten mysql_fetch_array($antwortMYSQL_NUM);
                                                
                  $frage"UPDATE `benutzer` SET `PW` = '$daten[0]'" ;
                                                    
                  $frage.=$bed;
                                                    
                  $ergebnis=mysql_query($frage)
                                                         OR die (
                  "Fehler bei der Datenbakabfrage!");
                                                  echo
                  "[b]Das Passwort wurde erfolgreich zurückgesetzt!


                                                    Bitte wählen Sie im linken Menü den nächsten Schritt![/b]"
                  ;
                                            }
                                         else
                                             {    
                                                 echo
                  "[b]Das Zurücksetzten ist nicht möglich, da die Auswahl nicht eindeutig ist![/b]


                                                      [url='resetpw.php']Zurück zum Löschen[/url]"
                  ;
                                             }
                                         
                  mysql_close();                       
                                     }
                                      
                                     }
                                         
                             else{ echo
                  "[b]Sie sollten sich vielleicht anmelden![/b]";}
                  ?>

                  Kommentar


                  • #10
                    grauenhafte einrückung... hoffe es ist nur durch das copy&paste entstanden
                    :arrow: [URL="http://tiny.cc/0xlvv"]Wie man Fragen richtig stellt[/URL]

                    Kommentar


                    • #11
                      Ich halte absolut garnichts von die(), denn wie es Saraneus schon gesagt hat, es ist ne Methode für die faulen Programmierer, keine Alternative anzubieten. Zumindest eine Weiterleitung auf eine allgemeine Fehlerseite sollte drinne sein. Wenn die Verbindung zur DB nicht aufgebaut werden kann, kann man keine inhaltliche Alternative anbieten, aber eine im vorhandenen Layout gehaltene höfliche Entschuldigung und der Zusage, das Problem schnellstmöglich zu beheben ist allemal besser als die("Konnte Verbindung zur DB nicht aufbauen");

                      Schließlich verkaufen wir ein Produkt an den Kunden und das sollte auch bei Störungen den User nicht mit für ihn sowieso bedeutungslosen Fehlermeldungen belästigen. Denn warum es nicht geht ist dem User herzlich egal.

                      Kommentar


                      • #12
                        Ja danke. Das Komentar (mit dem Einrücken) habe ich gestern schon gehört. Ich habe mir auch schon informiert, wie man es richtig macht.
                        Aber irgendwie scheint mir es wichtiger, dass meine Seite funktioniert, als das alles ordentlich eingerückt ist.

                        Kommentar


                        • #13
                          Danke Zergling. Das is doch mal nen Spruch ..

                          Ich werde das also ändern und auch meinen Code ordentlich einrücken. :wink:

                          Kommentar


                          • #14
                            Zitat von Gertrud
                            Ja danke. Das Komentar (mit dem Einrücken) habe ich gestern schon gehört. Ich habe mir auch schon informiert, wie man es richtig macht.
                            Aber irgendwie scheint mir es wichtiger, dass meine Seite funktioniert, als das alles ordentlich eingerückt ist.
                            ja dann viel spass, wenn du die Seite erweitern must..
                            :arrow: [URL="http://tiny.cc/0xlvv"]Wie man Fragen richtig stellt[/URL]

                            Kommentar


                            • #15
                              Ordentlich Einrücken ist aber die Grundlage zur Fehlersuche oderkannstd udaSHIErgutl Esen?

                              Ne? Dann rück ordentlich ein und du findest Fehler viel schneller: versprochen

                              Aber was hat das mit dem Topic zu tun? Falscher Thread..?

                              Kommentar

                              Lädt...
                              X