Some of you might be interested in this. I modified the Guestbook v2 script so that you can use an administration tool to edit or delete the entries. Here's the code for the Guestbook.php file:
<?
/*
-----
Application: Flash-dB GuestBook Version 2.0
Details: mySQL and PHP powered GuestBook
Author: Mohsin Sumar
Website:
http://www.flash-db.comSupport:
http://www.flash-db.com/BoardNotes: Coments are marked by using comment entries symbols. Eg: // Comment
-----
*/
// Part One - Initiate a mySQL Database Connection
// Database Connectivity Variables and other Variables
$DBhost = "localhost"; // Database Server
$DBuser = "yourDBuser"; // Database User
$DBpass = "yourDBpassword"; // Database Pass
$DBName = "yourDBname"; // Database Name
$table = "guestbook"; // Database Table
$numComments = $_GET['numComments']; // Number of Comments per page
// Connect to mySQL Server
$DBConn = mysql_connect($DBhost,$DBuser,$DBpass) or die("Error in GuestBook Application: " . mysql_error());
// Select mySQL Database
mysql_select_db($DBName, $DBConn) or die("Error in GuestBook Application: " . mysql_error());
// Part Two - Choose what action to perform
$action = $_GET['action'];
switch($action) {
case 'read' :
// Fetch all comments from database table
$sql = 'SELECT * FROM `' . $table . '`';
$allComments = mysql_query($sql, $DBConn) or die("Error in GuestBook Application: " . mysql_error());
$numallComments = mysql_num_rows($allComments);
// Fetch page-wise comments from database table
$sql .= ' ORDER BY `time` DESC LIMIT ' . $_GET['NumLow'] . ', ' . $numComments;
$fewComments = mysql_query($sql, $DBConn) or die("Error in GuestBook Application: " . mysql_error());
$numfewComments = mysql_num_rows($fewComments);
// Generate Output for Flash to Read
print '&totalEntries=' . $numallComments . '&';
print "<br>&entries=";
if($numallComments == 0) {
print "No entries in the guestbook, as yet..";
} else {
while ($array = mysql_fetch_array($fewComments)) {
$name = mysql_result($fewComments, $i, 'name');
$email = mysql_result($fewComments, $i, 'email');
$comments = mysql_result($fewComments, $i, 'comments');
$time = mysql_result($fewComments, $i, 'time');
print '<b>Name: </b>' . $name . '<br><b>Email: </b>' . $email . '<br><b>Comments: </b>' . $comments . '<br><i>Date: ' . $time . '</i><br><br>';
$i++;
}
}
// Print this only when there aren't any more entries..
if($_GET['NumLow'] > $numallComments) {
print 'No More Entries!&';
}
break;
case 'write' :
// Recieve Variables From Flash
$name = ereg_replace("&", "%26", $_POST['yourname']);
$email = ereg_replace("&", "%26", $_POST['youremail']);
$comments = ereg_replace("&", "%26", $_POST['yourcomments']);
$submit = $_POST['submit'];
// Current system date in yyyy-mm-dd format
$submitted_on = date ("Y-m-d H:i:s",time());
// Check if its submitted from Flash
if($submit == 'Yes'){
// Insert the data into the mysql table
$sql = 'INSERT INTO ' . $table .
' (`ID`,
`name`,
`email`,
`comments`,
`time`
)
VALUES
(\'\','
. '\'' . $name . '\','
. '\'' . $email . '\','
. '\'' . $comments . '\','
. '\'' . $submitted_on . '\'
)';
$insert = mysql_query($sql, $DBConn) or die("Error in GuestBook Application: " . mysql_error());
// If you want your script to send email to both you and the guest, uncomment the following lines of code
// Email Script Begin
/* <-- Remove this line
$MyName = "Mohsin Sumar";
$MyEmail = "
mohsinsumar@hotmail.com";
$Subject = "$name has just signed your guestbook.";
$EmailBody = "Hello Mohsin,\n$name has just signed your guestbook available at
http://www.mohsinsumar.com. THe following were the details submitted into your guestbook:\n\nName: $name\nEmail: $email\nComment:\n$comments\n";
$EmailFooter = "~~~~~~~~~~~~~~~\nThe guestbook was signed by $name and thus this email got activated by $name from $REMOTE_ADDR from
http://www.mohsinsumar.com\n~~~~~~~~~~~~~~~\nThanking you,\nMohsin Sumar";
$Message = $EmailBody.$EmailFooter;
mail($MyName." <".$MyEmail.">",$Subject, $Message, "From: ".$name." <".$email.">");
--> Remove this line */
// Email Script End
print "&gb_status=Thank you for signing my guestbook.&done=yes&";
return;
}
print "&_root.write.gb_status=Error!&";
break;
case 'edit' :
// Recieve Variables From Flash
$name = ereg_replace("&", "%26", $_POST['yourname']);
$email = ereg_replace("&", "%26", $_POST['youremail']);
$comments = ereg_replace("&", "%26", $_POST['yourcomments']);
$submit = $_POST['submit'];
$entryNum = $_POST['entryNum'];
// Check if its submitted from Flash
if($submit == 'Yes'){
$sql = "SELECT * FROM $table ORDER BY `ID` DESC LIMIT " . $_GET['NumLow'] . ", " . $numComments;
$fewComments = mysql_query($sql, $DBConn) or die("Error in GuestBook Application: " . mysql_error());
$id = mysql_result($fewComments, 0, 'ID');
// Insert the data into the mysql table
$sql = "UPDATE $table SET name='$name', email='$email', comments='$comments' WHERE ID='$id'";
$insert = mysql_query($sql, $DBConn) or die("Error in GuestBook Application: " . mysql_error());
print "&gb_status=The guestbook has been edited.&done=yes&";
return;
}
print "&_root.write.gb_status=Error!&";
break;
case 'delete' :
// Recieve Variables From Flash
$submit = $_POST['submit'];
$entryNum = $_POST['entryNum'];
// Current system date in yyyy-mm-dd format
$submitted_on = date ("Y-m-d H:i:s",time());
// Check if its submitted from Flash
if($submit == 'Yes'){
// Insert the data into the mysql table
$sql = "SELECT * FROM $table ORDER BY 'ID' DESC LIMIT " . $_GET['NumLow'] . ",1";
$fewComments = mysql_query($sql, $DBConn) or die("Error in GuestBook Application: " . mysql_error());
$id = mysql_result($fewComments, 0, 'ID');
// Insert the data into the mysql table
$sql = "DELETE FROM $table WHERE ID ='$id'";
$insert = mysql_query($sql, $DBConn) or die("Error in GuestBook Application: " . mysql_error());
print "&gb_status=Entry deleted.&done=yes&";
return;
}
print "&_root.write.gb_status=Error!&";
break;
}
?>
Here's what I did:
I added two "actions" that the flash file can call to manipulate the database. One is 'edit' and the other is 'delete'. 'edit' simply updates a record and 'delete' deletes a record, obviously. I also turned the $numComments variable into a value that is passed to the php script by flash (I did this because in the admin tool I only wanted to display 1 record at a time instead of 10).
You can make a simple administrator by making a copy of the gbv2.fla file, I called mine gbv2Admin. In the 'write' movie I added a new "delete" button and instead of the "submit" button calling the 'write' action I had it call the 'edit' action so that it will modify the entry that is displayed. Likewise the "delete" button calls the 'delete' action to delete the record that is displayed. The 'edit' and 'delete' actions, unlike the 'write' action, also require that you pass the NumLow variable so the script knows which record you're working with. so the ActionScript on the "Submit" button looks like:
on(click){
/*
Modify these reference paths to yours if you
have changed them. Also modify gb_status
reference path if required
*/
yourname = _parent._parent.write.yourname.text;
youremail = _parent._parent.write.youremail.text;
yourcomments = _parent._parent.write.yourcomments.text;
// Check variable data
if (yourname eq "") {
_parent._parent.write.gb_status.text = "Required: Name";
} else if (youremail eq "") {
_parent._parent.write.gb_status.text = "Required: Email Address";
} else if (!youremail.length || youremail.indexOf("@") == -1 || youremail.indexOf(".") == -1) {
_parent._parent.write.gb_status.text = "Required: Valid Email Address";
} else if (yourcomments eq "") {
_parent._parent.write.gb_status.text = "Required: Comments";
} else {
_parent._parent.write.gb_status.text = "Please wait...";
newEntry = new LoadVars();
newEntry.ref = this;
newEntry.submit = "Yes";
newEntry.yourname = yourname;
newEntry.youremail = youremail;
newEntry.yourcomments = yourcomments;
newEntry.entryNum = Number(_parent._parent.read.low.text);
newEntry.sendAndLoad("GuestBook.php?action=edit&numComments=1&r="+random(999)+"&NumLow="+_parent._parent.NumLow, newEntry, "POST");
newEntry.onLoad = function(success){
if(success){
_parent._parent.write.gb_status.text = this.gb_status;
_parent._parent.read.loadEntries("Default", 1);
// Clear fields
_parent._parent.write.yourname.text = "";
_parent._parent.write.youremail.text = "";
_parent._parent.write.yourcomments.text = "";
}
}
}
}
I know this is brief so let me know if there are any questions.