Simple Event calendar (Part Two)
Edit calendar entries
The reason for this follow up, is because I was asked how would you go about editing the entries for this calendar.
Well first here is the example:
Going off the original code; we just add a little bit of functionality by doing a few edits, first of is how do we get the record to pull up, with the saved info:
if(!isset($_GET['id']) && !isset($_GET['f'])){
echo '<h3>Events Listed</h3>';
In bold we added some conditions that will decide where we do this, the above will run a loop to bring out all the records from the db concerning that date, same as before but with a small addition, we are telling the server give me all the records, only if the id and the form is not shown.
The second part goes the exact opposite:
}elseif(isset($_GET['id']) && isset($_GET['f'])){
This last part will trigger this piece of code:
$sql="select calID,calName,calDesc, calDate from calTbl";
$sql.=" where calID = '" . $_GET['id'] . "'";
$result = mysql_query($sql);
$row = mysql_fetch_assoc($result);
//other message
$errMess = 'Edit Entry of: ' . $row['calName'];
//show form and edit ability
include 'calForm.php';
See in bold, we are calling one record instead of an array of info that we would loop through and display, this one will give us one record.
We are still calling the calForm.php, we need this to edit the record, there is no need to create a whole new form for this, we just make calForm.php SMARTER.
All we need now to do is edit calForm,php and make it create records and edit them, so in reality it is two forms in one, but we are only concerned with one half at a time.
You accomplish that like so:
<?php if(!isset($_GET['id'])){?>
All that reads is that if we don't show the id of the record, show me the form that we can create a record.
And you can guess what the other half of the statement reads:
<?php }else{?>
Give me the half that will allow me to edit the record.
Now this half is different in respects to the HTML , we have to add a hidden field to hold the id of the record we want to edit:
<input type="hidden" name="id" value="<?=$_GET['id'];?>" />
We are calling it in the URL so we can easily grab it and use it.
Also in the text fields we need to get the values and put them in so we can view what the record is holding:
<input type="text" name="calName" id="calName" value="<?php echo $row['calName'];?>" onKeyup="checkFilled();">
See in bold.
Now we have to post these and make the page smart enough to decide in which direction you want to go INSERT or UPDATE, no sweat.
Back on the main page cal-2.php, we created this snippet to handle that thinking for us:
if(isset($_GET['v'])){
if(isset($_POST['Submit'])){
switch($_GET['e']){
case 1:
$sql="insert into calTbl(calName,calDesc,calDate,calStamp) values('" . $_POST['calName'] ."','";
$sql.= $_POST['calDesc'] . "','" . $_POST['calDate'] . "',now())";
break;
case 2:
$sql="update calTbl set calName='" . $_POST['calName'] . "', calDesc='" . $_POST['calDesc'] . "'";
$sql.=" where calID = '" . $_POST['id'] . "'";
break;
}//end switch
mysql_query($sql);
//echo $sql;
//return;
}
The only difference between the earlier version of the cal and this one is this statement, the switch handles the request which is given to it, from the action on the calForm.php.
If you look at calForm.php at the action for the form, the end will contain either e=1 or e=2.
This will give the switch something to make a choice, 1 will INSERT, 2 will UPDATE.
Of course there are always more elegant ways to accomplish these things, but nothing beats practice on some things, in this writing you got the following.
- Extending condtional statements with the double ampersand operator
- switch
- UPDATE (MySQL)
- And how to reuse portions of forms etc, without creating additional files.
I hope that everyone can get something from this and make it better.
Alpho011