OK, das ist die komplette Formulardatei, aber der Witz an der Sache ist ja das das Formular auch dynamisch je nach tabelle generiert wird. Das soll folgendermaßen funktionieren:
Ich lese alle Spaltenüberschriften mit Datentyp aus. Anhand der Spaltenüberschriften habe ich dann die Anzahl der Felder und ihre jeweiligen Bezeichnungen. Durch den Datentyp weiß ich ob ich eine textarea oder ein normales textfeld brauche(weitere typen sollen, sobald es grundsätzlich funktioniert, noch folgen). Dann gibt er User was ein in die Felder und das ganze sollte dann mit den gesammelten Daten wieder rückwärts laufen was ja auch funktioniert...bis auf das INSERT INTO Statement.
Also die Funktion dataset($itraxx_data_obj, $itraxx_user_obj, $itraxx_forum_obj, $itraxx_messages_obj) wird über einen selbstgeschriebenen parser aufgerufen. Sie entscheidet ob das Formular verarbeitet werden soll oder ob es ausgegeben werden soll(dataset($itraxx_data_obj, $itraxx_user_obj, $itraxx_forum_obj, $itraxx_messages_obj)). Die Datenbankaktionen werden über ein Objekt geregelt($itraxx_data_obj).
Ich lese alle Spaltenüberschriften mit Datentyp aus. Anhand der Spaltenüberschriften habe ich dann die Anzahl der Felder und ihre jeweiligen Bezeichnungen. Durch den Datentyp weiß ich ob ich eine textarea oder ein normales textfeld brauche(weitere typen sollen, sobald es grundsätzlich funktioniert, noch folgen). Dann gibt er User was ein in die Felder und das ganze sollte dann mit den gesammelten Daten wieder rückwärts laufen was ja auch funktioniert...bis auf das INSERT INTO Statement.
Also die Funktion dataset($itraxx_data_obj, $itraxx_user_obj, $itraxx_forum_obj, $itraxx_messages_obj) wird über einen selbstgeschriebenen parser aufgerufen. Sie entscheidet ob das Formular verarbeitet werden soll oder ob es ausgegeben werden soll(dataset($itraxx_data_obj, $itraxx_user_obj, $itraxx_forum_obj, $itraxx_messages_obj)). Die Datenbankaktionen werden über ein Objekt geregelt($itraxx_data_obj).
PHP:
function dataset($itraxx_data_obj, $itraxx_user_obj, $itraxx_forum_obj, $itraxx_messages_obj)
{
if($_POST['sent']==1)
{
$keys=array_keys($_POST);
$values=array_values($_POST);
for($i=0;$i<=count($keys);$i++)
{
//trim($values[$i]);
if($insert_values!="")
{
$insert_values.=", ";
$insert_fields.=", ";
}
if(eregi("int_",$keys[$i]))
{
//$insert_values.=prepare_4db ($values[$i], strlen($values[$i]), $lf = false);
$insert_values.="'".$values[$i]."'";
$insert_fields.="'".$keys[$i]."'";
}
else if(eregi("text_",$keys[$i]))
{
//$insert_values.=prepare_4db ($values[$i], strlen($values[$i]), $lf = true);
$insert_values.="'".$values[$i]."'";
$insert_fields.="'".$keys[$i]."'";
}
else
{
$insert_fields=substr($insert_fields,0,strlen($insert_fields)-2);
$insert_values=substr($insert_values,0,strlen($insert_values)-2);
break;
}
}
$insert_fields=eregi_replace("int_","",$insert_fields);
$insert_fields=eregi_replace("text_","",$insert_fields);
//$insert_fields="`mainentry`, `subentry`, `footentry`, `index`, `html_content`, `php_content`, `explain`, `html_timestamp`, `php_timestamp`, `linkname`, `html_author`, `php_author`, `rights`, `showmenu`";
//$insert_values="'123', '23', '20', 'home.php', '', '', '', '0', '0', 'endlich', '1', '1' , '0', '0'";
$sql="INSERT INTO $_POST[tablename] ($insert_fields) VALUES ($insert_values)";
echo $sql;
$itraxx_data_obj->database_query($sql) //or die(mysql_error());
}
else
{
return dataset_form($itraxx_data_obj, $itraxx_user_obj, $itraxx_forum_obj, $itraxx_messages_obj);
}
}
function dataset_form($itraxx_data_obj, $itraxx_user_obj, $itraxx_forum_obj,$itraxx_messages_obj)
{
$table="contentdata";
$form_field=get_form_fields($itraxx_data_obj,$table);
$outstring="
<div class=\"inline-box-head\">datenbank-manager v.2.1</div>
<div class=\"inline-box-content\">
<form method=\"POST\" action=\"home.php?mn=2&sn=7&genc=left\">
<table width=\"100%\">
";
$i=0;
while($i<count($form_field))
{
print($i);
$outstring.="<tr>";
if( test_fielddatatype($form_field[$i]['type'])=="int")
{
$outstring.="<td>".$form_field[$i]['field']."</td><td><input type=\"text\" name=\"int_".$form_field[$i]['field']."\" class=\"form-input\" size=\"40\" maxlenght=\"70\" value=\"".$form_field[$i]['default']."\"></td>";
}
else if( test_fielddatatype($form_field[$i]['type'])=="text")
{
$outstring.="<td>".$form_field[$i]['field']."</td><td><textarea name=\"text_".$form_field[$i]['field']."\" rows=\"5\" cols=\"53\" value=\"".$form_field[$i]['default']."\" >";
$outstring.="</textarea>";
}
else if( test_fielddatatype($form_field[$i]['type'])=="varchar")
{
$outstring.="<td>".$form_field[$i]['field']."</td><td><input type=\"text\" name=\"text_".$form_field[$i]['field']."\" class=\"form-input\" size=\"40\" maxlenght=\"70\" value=\"".$form_field[$i]['default']."\"></td>";
}
$outstring.="</tr>";
$i++;
}
$outstring.="<tr><td colspan=\"2\">
<input type=\"submit\" name=\"button\" value=\"save\" class=\"button\">
<input type=\"reset\" name=\"button\" value=\"reset\" class=\"button\">
</td></tr></table>
<input type=\"hidden\" name=\"sent\" value=\"1\">
<input type=\"hidden\" name=\"tablename\" value=\"".$table."\">
</form>
</div>";
return $outstring;
}
function get_form_fields($itraxx_data_obj,$table)
{
$result=$itraxx_data_obj->database_query("SHOW COLUMNS FROM ".$table);
$form_field_tmp=$itraxx_data_obj->database_fetch_array($result);
$i=0;
while($form_field_tmp)
{
$form_field[$i]=array(
"field"=>$form_field_tmp[0],
"type"=>$form_field_tmp[1],
"attributes"=>$form_field_tmp[2],
"zero"=>$form_field_tmp[3],
"default"=>$form_field_tmp[4],
"extra"=>$form_field_tmp[5]
);
$form_field_tmp=$itraxx_data_obj->database_fetch_array($result);
$i++;
}
return $form_field;
}
function test_fielddatatype($string)
{
if(eregi("int",$string))
{
return "int";
}
else if(eregi("varchar",$string))
{
return "varchar";
}
else
{
return "text";
}
}
Zuletzt bearbeitet: