Example 4

Edit row, advance

This example shows how, by the use of callbacks, enable the edit function only on particular rows, how to check the values from the input form.

> <?php
/*
* test1.php
* Module yap testing program 4 (calback function)
* $Header: d:/cvs/classistd/yap/test4.php,v 1.1 2003/11/12 21:20:01 Administrator Exp $
*/


/*
* In this example I allow to modify only the row with id = 6.
* The field id is specified as row key into modify_info array
* The parameter is the value of key field
*/
function Allow($ItemKey)
{
return(
$ItemKey==6);
}
// allow to remove only the item with id=7
function RemoveId7($ItemKey)
{
return(
$ItemKey==7);
}
/*
* Check value callback function.
* The following function is an example how to check the fields
* during form processing
* before write them to the databse.
* If the function return false, the module show the form again
* $InputFields is an array containing all fields from the form
* $FieldName: name of the field to check
* You may set the function to check many fileds. The function is
* called many times as the numeber the fields to check.
* In this example I set to call the following function only to
* check the field 'errno', so when the function is called
* $FieldName is = 'errno'.
*/
function CheckField($InputFields,$FieldName)
{
$ret=($InputFields[$FieldName]==0)?true:false;
return(
$ret);
}

function
CheckText($InputFields,$FieldName)
{
return(
true);
}

/*
* Function called for each row while the module shows the table. It is usefull
* to add custom link to the table
* $RowData is an array containing all data about the current row
* To return to the current page call this script (test4.php) without any parameter
* The module saves its information into session.
*/
function CustomLink($RowData)
{
echo
"<TD><a href='dummypage1.php'>CustomLink1</a></TD>";
echo
"<TD><a href='dummypage2.php'>CustomLink2</a></TD>";
}

include_once(
'CYapBox.php');
include_once(
'CYap.php');
session_start('test');
echo
'<html><body>';
$SelectQuery='select id, DEvent, errno, text, filename, line from dlog where ';
$SelectCount='select count(*) from dlog where ';
//Parameters setup
//Db Connection
$db_info=array('servername'     => 'localhost',
               
'dbname'         => 'log',
               
'user'           => 'root',
               
'password'       => '',
               
'selectquery'    => $SelectQuery,
               
'selectcount'    => $SelectCount,
               
'orderfield'     => 'id',
               
'orderdirection' => 'A',
               
'NeedOpenDb'     => false
               
);
// Field to use to perform sesrchs
$Search_field=array(array('description' => 'Event Date',
                          
'fieldname'   => 'DEvent',
                          
'type'        => 'A',
                          
'size'        => 14,
                          
'useregex'   => 1 ),
                    array(
'description' => 'Error Code',
                          
'fieldname'   => 'errno',
                          
'type'        => 'N'),
                    );
// Fields to shows inside the table
$Show_field=array(array('fieldname' => 'id',
                        
'header'    => 'Id'),
                  array(
'fieldname' => 'DEvent',
                        
'header'    => 'Event Date'),
                  array(
'fieldname' => 'errno',
                        
'header'    => 'Error Code'),
                  array(
'fieldname' => 'text',
                        
'header'    => 'Description'),
                  );
// I don't setup the detail mode, the add/modify/delete row functions
$Show_info=array('prefix' => 'tst4',
                 
'showdethref' => true,
                 
'rowcallback' => 'CustomLink',
                 );
$Modify_info=array(
                 
'table' => 'dlog',
                 
'keyfield' => 'id',
                 
'showdelete' => true,
                 
'showmodify' => true,
                 
'showadd' => true,
                  
// callback function to allow the
                  // modify function
                 
'modifyallow' => 'Allow',    
                  
// callback function to allow the
                  // delete function
                 
'deleteallow' => 'RemoveId7',
                 
// set the callback function to check the contents
                 // of errno and text
                 
'fieldvalidator' => array(
                                          
'errno' => 'CheckField',
                                          
'text' =>  'CheckText'
                                          
),
                  );


$p=new CYap($Search_field, $Show_field, $db_info, $Show_info, $Modify_info);
$p->showpage();
echo
'</body></html>';
?>