Here is a fun example on how to use functions to squeeze the most out of one page. This page lists users, adds users and edits users.
/*
CREATE TABLE `kids` (
`id` int(10) NOT NULL auto_increment,
`first_name` varchar(30) NOT NULL default '',
`last_name` varchar(50) NOT NULL default '',
`email` varchar(75) default NULL,
`contact_status` tinyint(1) NOT NULL default '0',
PRIMARY KEY (`id`)
) TYPE=MyISAM ;
*/
?>
Manage contact's data
/* control code for application */
//submit button was pressed so call the process form function
if (isset($_POST['submit']))
{
process_form();
die();
}//end if
//call the get_data function
if (isset($_GET['id']))
{
get_data();
}//endif
//nothing chosen so list the kids
if ((empty($_POST))&&(empty($_GET)))
{
list_users();
die();
}//end if
//request to add a new contact so call the show_form function
if ((isset($_GET['action']))&&($_GET['action']=='add'))
{
show_form();
}//endif
/* get the data for an individual contact */
function get_data()
{
//validate the id has been passed at that it is a number
if ((empty($_GET['id']))||(is_nan($_GET['id'])))
{
//there was a problem so list the users again
list_users();
//kill the script
die();
}else{
//all is ok and assign the data to a local variable
$id = $_GET['id'];
}//end if
$sql = "select * from contacts where id = $id";
$result = conn($sql);
if (mysql_num_rows($result)==1){
//call the form and pass it the handle to the resultset
show_form($result);
}else{
$msg = "No data found for selected contact";
confirm($msg);
//call the list users function
list_users();
}//end if
}//end function
/* show the input / edit form*/
function show_form($handle='',$data='')
{
//$handle is the link to the resultset, the ='' means that the handle can be empty / null so if nothing is picked it won't blow up
//set default values
$first_name = '';
$last_name = '';
$email = '';
$status = '';
$id = '';
$value = 'Add'; //submit button value
$action = 'add'; //default form action is to add a new kid to db
//set the action based on what the user wants to do
if ($handle)
{
//set form values for button and action
$action = "edit";
$value = "Update";
//get the values from the db resultset
$row = mysql_fetch_array($handle);
$first_name = $row['first_name'];
$last_name = $row['last_name'];
$email = $row['email'];
$status = $row['contact_status'];
$id = $row['id'];
}//end if
//error handling from the processing form function
if($data != '')
{
$elements = explode("|",$data);
$first_name = $elements[0];
$last_name = $elements[1];
$email = $elements[2];
$id = $elements[3];
}
?>
}//end function
/* list all the contacts in the db */
function list_users()
{
$y = 0; //counter
$sql = "select * from contacts "; //may want to add the option where clause to only take kids with an active status
$result = conn($sql);
echo "
Manage Contacts Data Form
Add a new contact
";
if (mysql_num_rows($result)){
//show a list of kids with name as a link to the prepopulated form with their data in it
while($rows = mysql_fetch_array($result)){
//change row background color
(($y % 2) == 0) ? $bgcolor = "#8FBC8F" : $bgcolor=" #9ACD32";
//build strings to make life easier
$name = $rows['first_name'].' '.$rows['last_name'];
$status = $rows['contact_status'];
$id = $rows['id'];
//convert status to readable string from 1 or 0
($status == 0) ? $status = "Available to contact" : $status = "Do not contact at present.";
//echo out the row
echo "$name $status ";
$y++; //increment the counter
}//end while
echo "
";
}else{
//handle no results
echo "No data found. ";
}//endif
}
/* add / update the contact's data*/
function process_form()
{
$fname = '';
$lname = '';
$email = '';
$id = '';
$action = '';
$status = 0; //default value
$fname = @$_POST['first_name'];
$lname = @$_POST['last_name'];
$email = @$_POST['email'];
$id = @$_POST['id'];
$action = @$_GET['action'];
$status = @$_POST['status'];
//if no status is set, defaults to 0 (allow contact)
if ($status == ''){$status = 0; }
if (($fname=='')||($lname=='')||($email==''))
{
$msg = "Some data from the form was forgotten. Please fill in the entire form.";
confirm($msg);
$data = "$fname|$lname|$email|$id";
show_form('',$data);
die();
}//end if
//You could add some validation of the data ( I recommend it and its a great way to get your feet wet with php )
if ($action == "add")
{
$sql = "insert into contacts (first_name, last_name, email, contact_status) values('$fname','$lname','$email',$status)";
$msg = "Record successfully added";
}elseif($action=="edit"){
$sql = "update contacts set first_name = '$fname', last_name = '$lname', email = '$fname', contact_status = '$status' where id = $id";
$msg = "Record successfully updated";
}
$result = conn($sql);
if (mysql_errno()==0)
{
confirm($msg);
list_users();
}else{
$msg = "There was a problem adding the user to the database. Error is:".mysql_error();
confirm($mag);
}//end if
}
/* db connection function */
function conn($sql)
{
$host = "localhost";
$user = "user";
$pass = "pass";
$db = "my_db";
//echo "commnecing connection to local db
";
if (!($conn=mysql_connect($host, $user, $pass))) {
printf("error connecting to DB by user = $user and pwd=$pass");
exit;
}
$db3=mysql_select_db($db,$conn) or die("Unable to connect to local database");
$result = mysql_query($sql) or die ("Can't run query because ". mysql_error());
return $result;
}//end function
/* alert box popup confimation message function */
function confirm($msg)
{
echo "";
}//end function
?>