the purpose of this is to generate a create or update form based on the table from the db, on pages that require such action.
<?php
// create, update generator
function form_gen($act,$id=''){
global $db; global $view; global $cats;
$result = $db->query("SELECT * FROM {$view}");
$fields = $db->num_fields($result);
$rows = $db->num_rows($result);
$table = $db->field_table($result, 0);
$o = '<h3>'.$act.' '.$table.' page</h3>
<form method="post" action="'. link_to($table,$id) .'">
<table id="blog_post">';
for ($i=0; $i < $fields; $i++) {
$type = $db->field_type($result, $i);
$name = $db->field_name($result, $i);
$len = $db->field_len($result, $i);
$flags = $db->field_flags($result, $i);
// get rid of id and table name
if ($name == 'id' || $name == 'table') null;
else { // see if it edit
if ($act == 'edit') {
$r = $db->query("SELECT * FROM {$table} WHERE id= {$id} LIMIT 1");
$row = $db->fetch_assoc($r);
extract($row);
} else $$name = '';
// start page html
$o .= "<tr>";
$o .= ($act == 'new' && $name == 'updated_at') ? '' : "<th><div id='data'>".ucfirst(preg_replace('/_/',' ',$name))."</div></th>";
if ($type == 'blob') {
$o .= "<td><div id='data'><textarea cols='50' rows='10' name='{$name}'>".$$name."</textarea></div></td>";
}
elseif ($type == 'timestamp') { // means this is created_at
if ($act == 'edit') {
$o .= "<td><div id='data'><input type='text' name='{$name}' maxlength='{$len}' value='".$$name."' /></div></td>";
}
else {
$o .= "<td><div id='data'><input type='text' name='{$name}' maxlength='{$len}' value='".date('Y-m-d h:i:s')."' /></div></td>";
}
}
elseif ($type == 'datetime') {
if ($act == 'edit') {
if ($$name == '0000-00-00 00:00:00') $$name = date('Y-m-d h:i:s');
$o .= "<td><div id='data'><input type='text' name='{$name}' maxlength='{$len}' value='".$$name."' /></div></td>";
} else { null; }
}
elseif ($name == 'cat') {
$o .= "<td><div id='data'><select name='{$name}'>";
$selected = ''; $output = '';
while($item = each($cats)):
if ($item['key'] == $$name) {
$selected = "<option value='".$item['key']."'>".$item['value']."</option>";
unset($item); }
else {$output .= "<option value='".$item['key']."'>".$item['value']."</option>";}
endwhile;
$selected .= $output;
$o .= $selected;
$o .= "</select></div></td>";
}
else {
$o .= "<td><div id='data'><input type='text' name='{$name}' maxlength='{$len}' value='".$$name."' /></div></td>";
}
$o .= "</tr>";
}
}
$o .= '<tr>
<th><div id="data">Username: <input type="text" name="username" /></div></th>
<th><div id="data">Password: <input type="password" name="password" /></div></th>
</tr>';
$o .= '<tr>
<td>
<div id="data">
<input type="button" value="Cancel" class="button"
onClick="window.location.href=\''.link_to($table,$id).'\';" /> ';
if ($act == 'edit') {
$o .= '
<input type="button" class="button" value="Destroy"
onClick="f=prompt(\'Enter Password\')
if (isset(f)) { window.location.href=\''.link_to($table,$id).'&act=destroy&p=\'+f; }" />';
}
$o .= '</div></td>';
if ($act == 'edit') {
$o .= '<td>
<div id="data">
<input type="hidden" name="submit" value="Update" />
<input type="submit" name="submit" value="Update" class="button" />
</div>
</td>';
} else {
$o .= '<td>
<div id="data">
<input type="hidden" name="submit" value="Post" />
<input type="submit" name="submit" value="Post" class="button" />
</div>
</td>';
}
$o .= '</tr> ';
$o .= '</table></form>';
return $o;
}
?>