Ergebnis 1 bis 4 von 4

Thema: php: fehlerbehandlung...

  1. #1
    Großmeister(in)
    Registriert seit
    03.12.2004
    Ort
    Schweiz
    Beiträge
    514
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard php: fehlerbehandlung...

    hallo zusammen!
    also.. hat jemand eine ahnung, wie ich eine "sichere" fehlerbehandlung machen kann? also, ich möchte 4 werte in eine datenbank schreiben. aber das problem ist, dass ich alle werte will - oder gar keine.

    also etwa so..:

    Code:
    $fehler = 0;
    [schreibe wert 1 provisorisch... falls fehler: $fehler = 1]
    [schreibe wert 2 provisorisch... falls fehler: $fehler = 1]
    [schreibe wert 3 provisorisch... falls fehler: $fehler = 1]
    [schreibe wert 4 provisorisch... falls fehler: $fehler = 1]
    wenn es jetzt irgendwo einen fehler gab, ist $fehler = 1, wenn alles geschrieben werden konnte, ist $fehler = 0.

    Code:
    if ($fehler == 1)
    {
      echo "Fehler - keine Werte geschrieben!";
    }
    else
    {
      [schreibe alle vier werte definitiv in die datenbank];
      echo "alles ok";
    }
    hab schon von ob_start oder ob_end_flush gehört, aber irgendwie ist das doch etwas anderes....

    vielen dank!
    grüsse
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!

  2. #2
    Forum Guru
    Registriert seit
    28.12.2004
    Ort
    Ringgenberg(bei Interlaken) / Schweiz
    Beiträge
    4.787
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Hmm in welcher Sprache denn ??

    in PHP würde ich es so lösen ( flas ich die frage richtig verstadne habe )


    Beispiel-Code für Datenbank Texte!!!
    Code:
    $nachricht[1]="E-Mail Add angegeben";
    $bedingun[1]="strstr($email, '@')";
    $nachricht[2]="Name angegeben";
    $bedingun[2]="ereg('[^A-Za-z]', $name)";
    $nachricht[3]="ICQ angegeben"; 
    $bedingun[3]="ereg('[^0-9]', $icq)";


    Fehlerausgabe!!
    Code:
    $fehler=0;
    for &#40;$i=0;$i<=count&#40;$nachricht&#41;;$i++&#41; &#123;
    if &#40;!bedingun&#91;$i&#93;&#41; &#123; $fehler++; $nachricht&#91;$i&#93; = "keine ".$nachricht&#91;$i&#93;; &#125;
    &#125;
    
    if &#40;$fehler!=0&#41; &#123; 
    foreach &#40;nachricht as $nachricht_ausgabe&#41;
      &#123;
       echo $nachricht_ausgabe."
    \n";
      &#125;
    &#125;

  3. #3
    Youngster
    Registriert seit
    11.01.2005
    Beiträge
    14
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Hi,

    in PHP kannst du das vergessen. Denn wenn sich das schreiben der Daten aus irgend einem Grund verzögert, wird dein Skript vielleicht vorher abgebrochen. Auf diese Weise schützen sich Server vor deadlocks durch fehlerhafte Skripte. Und wenn dein Skript abgebrochen wurde, kannst du auch keine Fehlerbehandlung mehr durchführen.

    Was du meinst ist sind Transaktionen, bzw. Transaktionssicherheit. Die meisten Datenbanken gestatten mittels Transaktionen, eine ganze Reihe von SQL-Statements auszuführen. Wenn eines dieser Statements scheitert, wird ein "Rollback" zum Anfang der Transaktion vollzogen.

    Es hängt also sehr von der verwendeten Datenbank ab. In deren Doku wirst du mehr dazu finden.

    Gruß, SloMo

  4. #4
    Großmeister(in)
    Themenstarter

    Registriert seit
    03.12.2004
    Ort
    Schweiz
    Beiträge
    514
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    vielen dank euch beiden!
    transaktionen mit diesem ACID zeuch hatten wir auch in der schule, bin allerdings nicht auf diese idee gekommen. ist allerdings genau das, was ich suchte.
    jetzt weiss ich immerhin das ich es über die datenbank und nicht über php machen muss =)
    grüsse

    [edit]
    für alle interessierten:

    Code:
    function teste_alles&#40;&#41;
    &#123;
    mysql_query&#40;"Begin"&#41;;
    if&#40;!mysql_query&#40;"insert into testofix &#40;Name,Vorname,Konto&#41; values &#40;'Ehmann','Andres',710235434&#41;"&#41;&#41;
    &#123;$flag="nein";
    return $flag; &#125;
    if&#40;!mysql_query&#40;"insert into testofix &#40;Name,Vorname,Konto&#41; values &#40;'Maier','Peter',45333544&#41;"&#41;&#41;
    &#123;$flag="nein";
    return $flag;&#125;
    
    &#125;
    
    
    if &#40;teste_alles&#40;&#41;=="nein"&#41;
    &#123;
    print "Fehler - kein query wurde ausgeführt";
    mysql_query&#40;"rollback"&#41;;
    &#125;
    else
    &#123;
    print "hurra - alle queries ausgeführt";
    mysql_query&#40;"commit"&#41;;
    &#125;
    (http://www.infos24.de/mysqle/handbuc...ransaction.htm)

    genau was ich suchte. danke SloMo

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •