Malcolm Beck´s: OOP-Tutorial: Einfaches Formular erstellen

Beitrag lesen

hi,

Möglicherweise ist es sinnvoller, kein vorhandenes Beispiel umschreiben zu wollen, sondern sich anhand der Grundlagen mit der OOP im Allgemeinen vertraut zu machen.

Das stimmt, OOP ist doch komplexer als ich anfangs noch angenommen hatte.

Beispielsweise hat man sein Datenbankhandling in einer Klasse gekapselt und den Rest des Abfragescripts prozedural.

Das ist mit mysqli ja schon grösstenteils gegeben, wenn ich das richtig verstehe.

function h($val) {
    $val = isset($val) ? htmlspecialchars($val) : '' ;
   return $val;
  }

Wenn du eine nicht vorhandene Variable zu übergeben versuchst, gibt es eine E_NOTICE. Wenn das bei dir nicht auftritt, dann ist das gut, denn dann hast du vermutlich alle verwendeten Variablen ordentlich initialisiert.

Liegt das nicht am „isset“? Mein Komplettes Script sieht wie folgt aus:

<?php  
  error_reporting(E_ALL);  
  
  // htmlspecialchars abkuerzen  
  function h($val) {  
   return isset($val) ? htmlspecialchars($val) : '' ;  
  }  
  // Affenformalität  
  function aForm($PostVal) {  
   return isset($_POST[$PostVal]) ? $_POST[$PostVal] : '' ;  
  }  
  // Usereingaben ; Zeichen begrenzen auf vorgegebene min- maximale länge  
  function validminmax($name,$min,$max)  
  {  
    return (isset($_POST[$name]) AND !preg_match('/^.{'.$min.','.$max.'}$/', $_POST[$name]))  
           ? "<p>Eingabe zwischen $min und $max Zeichen</p>"  
           : '' ;  
  }  
  
  // Input type Text zusammenbauen  
  function InputTextForm($name,$min,$max,$errormsg)  
  {  
    $minMaxError = validminmax($name,$min,$max);  
    // Ausgabe  
    return "$minMaxError<label for='$name'>$name\n"  
           . '<input type="text" name="'.$name.'" id="'.$name.'" value="'.h(aForm($name)).'" />'  
           . "\n</label>\n";  
  }  
  
     // Input type text ; Name, mindest-länge, maximale-länge  
     echo InputTextForm ('test', 3, 20, 'zu Kurz');  

Ich habe jedenfalls festgestellt, dass ich so einen einfachen Formmailer doch sehr Kompakt schreiben kann ; mein letzter versuch schoss mit über 600 Zeilen Code ziemlich übers Ziel hinaus.

mfg