peer review (was php framework vs just php?)

[email protected] ("Jay Blanchard")
Newsgroups php.general
Message-ID <[email protected]>
I did a quick and dirty of just one of those functions. This function
takes a table and creates a form based 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($database, $table, $action, $excludeCols,
$recordID){
	/* 
	 * This function is used to create forms on the fly based on
tables within 
	 * the database. The minimal arguments are database 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.
	 */
	 /* database 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
database 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 `".$database."`.`".$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
database 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>&nbsp;";
						/*
						 * regular expression -
we need the data that
						 * exists between the
single quotes in the Type column of the
						 * database 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></option>\n";
						for($i = 0; $i <
count($matches[1]); $i++){
							echo
"<option>".$matches[1][$i]."</option>\n";
						}
						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\">&nbsp;&nbsp;";
	 		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 framework. This can also be
done in the context of OOP, I just want to show some procedural code.
This assumes MySQL as the database.

Let the laughter begin.....
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.