Tom: Merken von Formularfeldern (Ergänzung)

Beitrag lesen

Hello,

Also, ich habe mir Da auch schon was selber geschrieben,, bei mir ist das Problem gewesen, dass ich immer unterschiedlich viele Felder habe, aber trotzdem nicht jedes mal den ganzen Quatsch Auswertung, u.s.w. neu schreiben wollte.

Datensatzdefinition

$_rec = array();

$_rec["cat"]["col"] = 20;
$_rec["cat"]["row"] = 4;
$_rec["cat"]["type"] = "alt";

/*
$_rec["cat"]["opt"][1] = "Freund";
$_rec["cat"]["opt"][2] = "Kunde";
$_rec["cat"]["opt"][3] = "Mitarbeiter";
$_rec["cat"]["opt"][4] = "Lieferant";
$_rec["cat"]["opt"][5] = "Behörde";
*/

$_rec["cat"]["opt"] = "Freund,Kunde,Mitarbeiter,Lieferant,Behörde,Bank";

$_rec["name"]["col"] = 40;
$_rec["name"]["max"] = 60;
$_rec["name"]["type"] = "char";
$_rec["name"]["text"] = "Name";
$_rec["name"]["duty"] = "1";

$_rec["email"]["col"] = 40;
$_rec["email"]["max"] = 76;
$_rec["email"]["type"] = "char";
$_rec["email"]["text"] = "eMailadresse";
$_rec["email"]["duty"] = "1";

$_rec["text"]["col"] = 40;
$_rec["text"]["row"] = 8;
$_rec["text"]["max"] = 600;
$_rec["text"]["type"] = "text";
$_rec["text"]["text"] = "Beitrag";
$_rec["text"]["duty"] = "1";

Ich muss nur eine solche Datzensatzdefinition generieren.
Außerdem gibt es bisher die Formulartypen "Liste" und "Detail"
Die verfügen je nach User-Rechten über unterschiedliche Button-Funktionen

Die Datensatzdefinition ist ständig um Werte, Eigenschaften und Methoden erweiterbar. PHP-Arrays machen es möglich.

Und ausgegeben wird das ganze dann von einer Masterfunktion

function makeform($desc, $data, $ctrl, $form_id="0")
{
   $ret = "\n<form action="".$_SERVER["PHP_SELF"].""\n".
            "      method="POST" enctype="nultipart/form-data"\n".
            "      name="F$form_id">\n".
            "  <input type="hidden" name="formid" value="$form_id">\n";

$ret .= "  <table>\n";

foreach ($desc as $key => $val)
   {
     $func = "make_type_".$val["type"];
     if (!function_exists($func))
     {
       die("Die Funktion <b>$func</b> fehlt");
     }
     else
     {
       $input = call_user_func($func,$key,$val,$data[$key]);

$ret .= "    <tr>\n".
               "       <td>".htmlentities($val["text"])."</td>".
               "       <td>$input</td>\n".
               "    </tr>\n";
     }
   }

$ret .= "  </table>\n";

$ret .= "  <input type="submit" name="ctrl[save]" value="speichern">\n";

$ret .= "</form>\n";

return $ret;
}

Hier ein Codeausschnitt aus einer älteren Version für den Typ DETAIL.

Beim zrückliefern der Post-Daten wird das Subarray $_POST["data"] einfach mit der Satzdefinition abgeglichen. Da kann keiner mehr Fakes produzieren. Und das Subarray $_POST["ctrl"] mit der Funktionsliste des Formulartyps...

Passiert ja immer das gleiche (_nicht_ dasselbe!)

Das ist dann eine OOP durch die Hintertür.

Dank der Funktionen serialize(), clean(), restore(), unserialize() kann man auch gut mit Flatfiles arbeiten. clean entfernt die Zeilenende-Zeichen aus dem Datensatz und restore stellt sie wieder her.

Die Datensatzdefinition kann man mittels eines Click-Tools erzeugen. Dafür benötige ich unter anderem auch die dynamische Verwaltung von <input...> Elementen. Krieg ich aber einfach nicht hin. Sch.... DHTML.

Das ganze wird dann so eine Art dBase für HTML/CSS/PHP/MySQL bzw. Flatfiles

Liebe Grüße aus http://www.braunschweig.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen