Tom: NULL-Byte vs. leeren String

Beitrag lesen

Hello,

da habe ich 'was besseres für Dich...

function get_info($con,$table)
{
  if (!$con) return false;
  if (strlen($table) == 0) return false;

$sql = "show columns from $table";
  $res = mysql_query($sql,$con);

if (!$res) return false;

$info = array();
  while ($rec = mysql_fetch_assoc($res))
  {
    $field=$rec["Field"];
    unset($rec["Field"]);
    $info["$field"]=$rec;
  }
  return $info;
}

returns:

info[fieldname1]["Type"]

#                 ["Null"]
#                 ["Key"]
#                 ["Default"]
#                 ["Extra"]

info[fieldname2][...]

...

Typen sind zur Zeit:

#   tinyint
#   smallint
#   mediumint
#   int
#   bigint
#   float
#   double
#   decimal
#   date
#   datetime
#   timestamp
#   time
#   year
#   char
#   varchar
#   tinyblob
#   tinytext
#   text
#   blob
#   mediumblob
#   mediumtext
#   longblob
#   longtext
#   enum
#   set

#-------------------------------------------------------------------------

Du erhältst ein Array und kannst nun direkt über den Feldnamen auf die Eigenschaften des Feldes zugreifen. Die Art der Darstellung im Browser erfolgt nach dem Datentyp. Ich habe meine Anzeigefunktionen hoffentlich bald fertig.

Es ist überhaupt keine Vergewaltigung, den NULL-Wert für die Anzeige zu nutzen. Dafür ist er im Prinzip auch da. Er steuert ja das Insert- und Updateverhalten der Tabelle.

Wenn ich ein Formular an den Browser schicke, trage ich dieses Array unter einer Formular-ID, ergänzt um die Angabe, ob das Feld für den User freigegeben ist, und die Daten in die Session ein. Wenn der POST nun eintrifft, wird unter der Formular-ID geschaut, ob überhaupt einer erwartet wird und ob er nur erlaubte Werte enthält. Wenn nein, gibts was auf die Finger...

Ich bin nun gerade dabei, an gestaffelten Formularen (Relationen) zu arbeiten. Da kneifen sich aber noch ein paar Ideen. Wäre schön, wenn wir und da mal austauschen könnten.

Grüße

Tom