Database Code

  Home arrow Database Code arrow PHP form-class generator
DATABASE CODE

PHP form-class generator
By: Codewalkers
  • Search For More Articles!
  • Disclaimer
  • Author Terms
  • Rating: 4 stars4 stars4 stars4 stars4 stars / 3
    2003-06-26

    Table of Contents:

     
     

    SEARCH CODEWALKERS

    TOOLS YOU CAN USE

    advertisement
    Save yourself some time. Input the DB and table, select the columns you want displayed in the form and go!

    Example usage (generated code was modified a bit):

    mysql_connect(); //INCLUDE your information.. username, password, etc.
    mysql_select_db('testDB'); //CHANGE this line

    session_start();

    $ADMIN_USERNAME='admin';
    $ADMIN_PASSWORD='password';
    $PHP_SELF=$_SERVER['PHP_SELF'];

    class Form_testDB_computers {
    var $TEXTAREA_ROWS=6;
    var $TEXTAREA_COLS=40;
    var $renderStyle=array(
    'computerID'=>'input','make'=>'input','model'=>'input','c_usage'=>'textarea','price'=>'input',
    'short_description'=>'input','long_description'=>'textarea','image'=>'input');
    var $labels=array(
    'computerID'=>'computerID','make'=>'make','model'=>'model',
    'c_usage'=>'usage','price'=>'price','short_description'=>'short_description',
    'long_description'=>'long_description','image'=>'image');

    function generateForm ( $source="",$var2Keep='' )
    {
    $fields = array_keys($this->renderStyle);
    if ( $source == 'request' || $source == 'input' || $source =='form' )
    {
    foreach ( $fields as $n=>$f)
    $$f=$_REQUEST[$f];
    }
    else if ( !empty($source) )
    {
    //$source should be a mySQL string
    $query = mysql_query($source);
    $data = mysql_fetch_array($query);

    //Begin conversion from DB row to our form variables
    foreach ( $fields as $n=>$f)
    $$f=$data[$f];
    }

    echo "";
    echo "";
    echo "";
    //Time to render the form itself, now that we have the variables;
    foreach ( $fields as $n=>$f )
    {
    echo "";
    }
    echo "
    ".$this->labels[$f]."";
    switch($this->renderStyle[$f])
    {
    case 'textarea':
    echo "";
    break;

    case 'input':
    default:
    echo "";
    }
    echo "
    ";
    }

    function verifyForm ()
    {
    foreach ( $this->renderStyle as $f=>$r)
    if ( empty($_REQUEST[$f]) )
    return false; //At least one empty element

    return true;
    }

    function getSQL_setClause ()
    {
    $c=0;
    $ret="";
    foreach ($this->renderStyle as $f=>$r)
    {
    if ( $c++ > 0 )
    $ret .= ",";
    $ret .= "$f='$_REQUEST[$f]'";
    }
    return $ret;
    }

    function getSQL_updateRow ( $whereClause)
    {
    $sql = "update computers set " .$this->getSQL_setClause() . " where $whereClause";
    return $sql;
    }

    function getSQL_insertRow ()
    {
    $sql = "insert into computers set " . $this->getSQL_setClause();
    return $sql;
    }

    } //End Class

    function showMainMenu ()
    {
    global $form;

    if ( isset($_REQUEST['compID']) )
    {
    ob_start();
    $compID = $_REQUEST['compID'];
    if ( $_SESSION['loggedIn'] )
    {
    if ( isset($_REQUEST['submitted']) )
    {
    if ( $form->verifyForm() )
    {
    $sql = $form->getSQL_updateRow('computerId='.$compID);
    if ( mysql_query($sql) )
    echo "Computer info updated

    ";
    }
    else
    $form->generateForm('form','compID');
    }
    else
    $form->generateForm("select * from computers where computerId=$compID",'compID');
    }
    else
    {
    echo "Please log-in first to edit data

    ";
    }
    $printLater = ob_get_contents();
    ob_end_clean();

    $info = mysql_fetch_array(mysql_query("select * from computers where computerId=$_REQUEST[compID]"));
    echo "

    $info[short_description]

    ".nl2br($info[long_description])."

    Usage: $info[c_usage]
    Price: $info[price]
    Make: $info[make]
    Model: $info[model]

    ";
    echo $printLater;
    }
    else
    {
    //Show all available computers
    $sql = mysql_query("select * from computers order by computerID desc");
    while ( $row = mysql_fetch_array($sql) )
    {
    echo "$row[short_description]
    ";
    }
    echo "
    Insert new computer";

    if ( !$_SESSION['loggedIn'] )
    {
    echo "

    Log-in";
    }
    else
    echo "

    Logged in as admin";
    }
    }

    $form = new Form_testDB_computers();

    //print_r($_REQUEST);

    if ($_REQUEST['process'] == 'insert' )
    {
    if ( isset($_REQUEST['submitted']) )
    {
    if ( $form->verifyForm() )
    {
    $sql = $form->getSQL_insertRow();
    if ( mysql_query($sql) )
    {
    echo "Computer info added

    ";
    showMainMenu();
    }
    else
    {
    echo "Can't do $sql" . ", " . mysql_error();
    $form->generateForm('form','process');
    }
    }
    else
    $form->generateForm('form','process');
    }
    else
    $form->generateForm('','process');
    }
    else if ( $_REQUEST['process'] == 'login' )
    {
    if ( isset($_REQUEST['username']) )
    {
    if ( $_REQUEST['username'] == $ADMIN_USERNAME && $_REQUEST['password'] == $ADMIN_PASSWORD )
    {
    $_SESSION['loggedIn']=true;
    showMainMenu();
    die();
    }
    else
    echo "Log-in failed";
    }

    echo "

    Username:


    Password:

    ";
    }
    else
    {
    showMainMenu();
    }

    ?>

    By : webhappy

    <?php
    /*
    CRITICAL NOTE!!!
    We MUST be guaranteed table structure does NOT change while we are using this script
    It can change after we have generated our PHP code, but not while we are between steps B and C, in particular
    */

    /*
    Generate form code
    A: DB name, table name
    B: List table columns -> checkbox, if to apply; possibly radio if different forms:
    if integer, only textbox; if varchar: textbox; blob/text: textbox or textarea
    C: Process choices->generate PHP:
    Produce function generateForm($source="","request","db")
    Produce function insertIntoDB; //grab data from _REQUEST
    */


    if ( !isset($db) || !isset($table) )
    {
    echo "<form action=$PHP_SELF>";
    echo "DB: <input name=db><br>
    Table: <input name=table><br>
    <input type=submit value=Go></form>";
    }
    else
    {
    if ( $ready )
    {
    // print_r($_POST);
    ob_start();
    echo '<?PHP
    class Form_'.$db.'_'.$table.' {
    var $TEXTAREA_ROWS=6;
    var $TEXTAREA_COLS=40;
    ';
    $fields = mysql_list_fields($db,$table);
    echo 'var $renderStyle=array(';
    $n=0;
    for ( $i=0; $i < mysql_num_fields($fields); $i++ )
    {
    if ( isset($_REQUEST["enable$i"]) )
    {
    echo ($n++==0?'':',').($n % 5 ==1?'
    ':'')."'".mysql_field_name($fields,$i).'\'=>'."'".$_POST["represent$i"]."'";
    }
    }
    echo ');
    ';//close the array()

    echo 'var $labels=array(';
    $n=0;
    for ( $i=0; $i < mysql_num_fields($fields); $i++ )
    {
    if ( isset($_REQUEST["enable$i"]) )
    {
    echo ($n++==0?'':',').($n % 3 ==1?'
    ':'')."'".mysql_field_name($fields,$i).'\'=>'."'".mysql_field_name($fields,$i)."'";
    }
    }
    echo ');
    ';
    /*
    END INITIALIZATION ARRAYS
    */

    echo '
    function generateForm ( $source="" )
    {
    $fields = array_keys($this->renderStyle);
    if ( $source == \'request\' || $source == \'input\' || $source ==\'form\' )
    {
    foreach ( $fields as $n=>$f)
    $$f=$_REQUEST[$f];
    }
    else if ( !empty($source) )
    {
    //$source should be a mySQL string
    $query = mysql_query($source);
    $data = mysql_fetch_array($query);

    //Begin conversion from DB row to our form variables
    foreach ( $fields as $n=>$f)
    $$f=$data[$f];
    }

    echo "<table><form action=$_SERVER[PHP_SELF] method=post>";
    echo "<input type=hidden name=submitted value=true>
    <input type=hidden name=process value=$_REQUEST[process]>";
    //Time to render the form itself, now that we have the variables;
    foreach ( $fields as $n=>$f )
    {
    echo "<tr><td>".$this->labels[$f]."</td><td>";
    switch($this->renderStyle[$f])
    {
    case \'textarea\':
    echo "<textarea name=$f rows=TEXTAREA_ROWS cols=TEXTAREA_COLS>".$$f."</textarea>";
    break;

    case \'input\':
    default:
    echo "<input type=text name=$f value=\"".$$f."\">";
    }
    echo "</td></tr>";
    }
    echo "<tr><td colspan=2><input type=submit value=\\"Submit\\"></td></tr></form></table>";
    }

    function verifyForm ()
    {
    foreach ( $this->renderStyle as $f=>$r)
    if ( empty($_REQUEST[$f]) )
    return false; //At least one empty element

    return true;
    }

    function getSQL_setClause ()
    {
    $c=0;
    $ret="";
    foreach ($this->renderStyle as $f=>$r)
    {
    if ( $c++ > 0 )
    $ret .= ",";
    $ret .= "$f=\'$_REQUEST[$f]\'";
    }
    return $ret;
    }

    function getSQL_updateRow ( $whereClause)
    {
    $sql = "update '.$table.' set " .$this->getSQL_setClause() . " where $whereClause";
    return $sql;
    }

    function getSQL_insertRow ()
    {
    $sql = "insert into '.$table.' set " . $this->getSQL_setClause();
    return $sql;
    }

    } //End Class
    ?>';
    $output=ob_get_contents();
    ob_end_clean();
    //echo "<hr>$output<hr>";
    highlight_string($output);

    }
    else
    {
    echo "<form action=$PHP_SELF method=post>";
    echo "<input type=hidden name=db value=$db><input type=hidden name=table value=$table>";
    echo "<input type=hidden name=ready value=true>";
    $fields = mysql_list_fields($db,$table);
    echo "<table>";
    for ( $i=0; $i < mysql_num_fields($fields); $i++ )
    {
    switch ( mysql_field_type($fields, $i) )
    {
    case 'int': case 'bigint': case 'mediumint':
    $choices = array("input"); break;
    case 'varchar':
    $choices = array("input"); break;
    case 'blob': case 'text':
    $choices = array("textarea", "input");break;
    default:
    $choices=array("input");
    }

    echo "<tr>";
    echo "<td><input type=checkbox name=enable$i value=true title=\"Enable this column\" checked></td>";
    echo "<td>".mysql_field_name($fields, $i) . "-<b>" . mysql_field_type($fields,$i) . "</b> " . mysql_field_len($fields,$i) ." (" . mysql_field_flags($fields,$i).")" . "</td>\n";

    foreach ( $choices as $n=>$k )
    {
    echo "<td><input type=radio name=represent$i value=$k " . ($n==0?'checked':'').">$k</td>";
    }
    echo "</tr>";
    }
    echo "</table>";
    echo "<input type=submit value=\"Generate PHP\"></form>";
    }
    }

    function ob_pre ( $buffer )
    {
    return "<pre>".$buffer."</pre>";
    }

    ?>
    DISCLAIMER: The content provided in this article is not warranted or guaranteed by Developer Shed, Inc. The content provided is intended for entertainment and/or educational purposes in order to introduce to the reader key ideas, concepts, and/or product reviews. As such it is incumbent upon the reader to employ real-world tactics for security and implementation of best practices. We are not liable for any negative consequences that may result from implementing any information covered in our articles or tutorials. If this is a hardware review, it is not recommended to open and/or modify your hardware.

    More Database Code Articles
    More By Codewalkers

    blog comments powered by Disqus

    DATABASE CODE ARTICLES

    - Converting CSV Files to MySQL Insert Queries...
    - Examples and Tools for Database Design
    - Relationships, Entities and Database Design
    - Modeling and Designing Databases
    - Data extract to Excel
    - Oracle database class 0.76
    - The opposite of mysql_fetch_assoc
    - On line Thermal Transmitance Calculation
    - pjjTextBase
    - PHP Object Generator
    - FastMySQL
    - RC4PHP
    - SQL function with integrated sprintf()
    - DB Interaction Classes v1.1
    - deeMySQLParser


    © 2003-2012 by Developer Shed. All rights reserved. DS Cluster 2 - Follow our Sitemap