|
I did a quick and dirty of just one of those functions. This function takes a table and creates a form _base_d on the table. It needs quite a bit of refining, but I am willing to share and let you guys and gals throw suggestions; function formCreate($data_base_, $table, $action, $excludeCols, $recordID){ /* * This function is used to create forms on the fly _base_d on tables within * the data_base_. The minimal arguments are data_base_ name and table name. * Additional arguements may be supplied to indicate columns to be excluded * from form and an action (CRUD) to be performed once the form * is filled out. If wanting to do an update, read or delete you can specify * a record to retrieve to populate the form. Default values will be provided * for arguements not included. */ /* data_base_ connection in global variable */ global $dc; /* number of arguements sent to function */ $numArgs = func_num_args(); /* test to make sure that you have the minial two arguements */ if(2 $numArgs){ /* not enough arguments */ $errMsg = not enough arguements supplied, please supply data_base_ and table name ; return($errMsg); } else { /* * Supply default values for optional arguements if they are not set. * An interesting note here: the action can be anything that the user * specifies, it is not strictly limited to CRUD and it will be output * in a hidden form field; * <input type= hidden name= action value= whatever action is called * That way when the user clicks 'Submit' the programmer can have a * switch action in his or her processing _script_ to handle this form. */ if(!isset($action)) { $action = 'read'; } if(!isset($recordID)) { $recordID = ''; } if(!isset($excludeCols)){ $excludeCols = ''; } else { /* create an array of excluded columns */ $arrExcludeCols = explode( , , $excludeCols); } /* describe the table */ $sqlDesc = DESCRIBE ` .$data_base_. `.` .$table. ` ; if(!($dbInfo = mysql_query($sqlDesc, $dc))){ return mysql_error(); } else { while($tableInfo = mysql_fetch_array($dbInfo)){ /* * regular _expression_ - we need the data that exists between the * parentheses in the Type column of the data_base_ being described * so that we can use for length values of form fields */ if(!(in_array($tableInfo['Field'], $arrExcludeCols))){ if(preg_match ( /((d{1,}.*?))/ , $tableInfo[1], $regs )){ /* handle numerical values in parentheses to create form element lengths */ echo <label .$tableInfo['Field']. </label ; echo <input type= text name= .$tableInfo['Field']. size= .$regs[1]. maxlength= .$regs[1]. <br /n ; } elseif( text == $tableInfo[1]) { /* handle text columns */ echo <label .$tableInfo['Field']. </label ; echo <textarea name= .$tableInfo['Field']. cols= 80 rows= 10 </textarea<br /n ; } elseif( enum == substr($tableInfo[1], 0, 4)){ /* handle enumerated columns and creat drop downs */ echo <label .$tableInfo['Field']. </label ; /* * regular _expression_ - we need the data that * exists between the single quotes in the Type column of the * data_base_ being described so that we can use for option * values in a drop-down on the form */ preg_match_all( /'(.*)'/U , $tableInfo[1], $matches); echo <select name= .$tableInfo['Field']. n ; echo <option</optionn ; for($i = 0; $i < count($matches[1]); $i++){ echo <option .$matches[1][$i]. </optionn ; } echo </select<br /n ; }//end if preg }//end if in_array }//end while tableInfo /* set up the hidden action field */ echo <input type= hidden name= action value= .$action. n ; /* provide a submit and reset button */ echo <input type= submit name= submit value= Submit ; echo <input type= reset name= reset value= Clear <br /n ; return; }// end if dbInfo }// end if numArgs }//end function formCreate With this I need one function call to create the form on the page. I can exclude columns and set an action to be taken once the form is filled out. There are several other functions and what I end up with is a set of functions that do make up a form handling _frame_work. This can also be done in the context of OOP, I just want to show some procedural code. This assumes MySQL as the data_base_. Let the laughter begin.....
|