andrew_biggart Posted May 12, 2009 Share Posted May 12, 2009 Ok so i have been given an assignment to do for uni but i really dont have a clue what im doing! Just after some advice and help please. I have to built a "simple" guestbook or forum. I have been given a few files which i will post below! What i would like to know is there a simple way to add all of the elements to one page instead of four different pages. I.e read posts, write delete etc all running from the same page. I can get it working on seperate pages but i want to try and run it off the one page and then build up from there! Any help would be appreciateded and thanks for reading! Ok now for the files! Bare with me if you can! readposts.php <?php //Set no caching header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); header("Cache-Control: no-store, no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>My Guestbook</title> <script type="text/javascript" src="js/mootools.js"></script> <script type="text/javascript" src="js/read.php"></script> </head> <body> <div> <h1>Read My Guestbook</h1> <div id="commentList"> </div> </div> </body> </html> insertpost.php <?php //Set no caching header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); header("Cache-Control: no-store, no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>My Guestbook</title> <script type="text/javascript" src="js/mootools.js"></script> <script type="text/javascript" src="js/insert.php"></script> </head> <body> <div> <h1>Insert Post into Guestbook</h1> <form id="newComment" action="#"> <div><label>Name: </label> <input type="text" name="name"/> </div> <div><label>Comment: </label> <textarea name="comment"></textarea> </div> <div><input type="submit" value="submit"/></div> </form> </div> </body> </html> editpost.php <?php //Set no caching header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); header("Cache-Control: no-store, no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>My Guestbook</title> <script type="text/javascript" src="js/mootools.js"></script> <script type="text/javascript" src="js/edit.php"></script> </head> <body> <div> <h1>Edit Post in Guestbook</h1> <form id="newComment" action="#"> <div><label>ID: </label> <input type="text" name="id"/> </div> <div><label>Name: </label> <input type="text" name="name"/> </div> <div><label>Comment: </label> <textarea name="comment"></textarea> </div> <div><input type="submit" value="submit"/></div> </form> </div> </body> </html> deletepost.php <?php //Set no caching header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); header("Cache-Control: no-store, no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>My Guestbook</title> <script type="text/javascript" src="js/mootools.js"></script> <script type="text/javascript" src="js/delete.php"></script> </head> <body> <div> <h1>Delete Post in Guestbook</h1> <form id="newComment" action="#"> <div><label>ID: </label> <input type="text" name="id"/> </div> <div><input type="submit" value="submit"/></div> </form> </div> </body> </html> control.php <?php require_once 'php/class.GuestBook.php'; $guestbook = new GuestBook('parkinson_guestbook'); function insertPost() { global $guestbook; return $guestbook->insert($_POST); } function editPost() { global $guestbook; return $guestbook->update($_POST); } function getSinglePost(){ global $guestbook; return $guestbook->getPost($_GET['id']); } function getPage() { global $guestbook; return $guestbook->getPostList(); } function removePost(){ global $guestbook; return $guestbook->removePost($_GET['id']); } echo $_GET['action'](); classdatabase.php <?php # Name: Database.class.php # File Description: MySQL Class to allow easy and clean access to common mysql commands # Author: ricocheting # Web: http://www.ricocheting.com/scripts/ # Update: 2/2/2009 # Version: 2.1 # Copyright 2003 ricocheting.com /* This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ //require("config.php"); //$db = new Database($config['server'],$config['user'],$config['pass'],$config['database'],$config['tablePrefix']); ################################################################################################### ################################################################################################### ################################################################################################### class Database { var $server = ""; //database server var $user = ""; //database login name var $pass = ""; //database login password var $database = ""; //database name var $pre = ""; //table prefix ####################### //internal info var $record = array(); var $error = ""; var $errno = 0; //table name affected by SQL query var $field_table= ""; //number of rows affected by SQL query var $affected_rows = 0; var $link_id = 0; var $query_id = 0; #-############################################# # desc: constructor function Database($server, $user, $pass, $database, $pre=''){ $this->server=$server; $this->user=$user; $this->pass=$pass; $this->database=$database; $this->pre=$pre; }#-#constructor() #-############################################# # desc: connect and select database using vars above # Param: $new_link can force connect() to open a new link, even if mysql_connect() was called before with the same parameters function connect($new_link=false) { $this->link_id=@mysql_connect($this->server,$this->user,$this->pass,$new_link); if (!$this->link_id) {//open failed $this->oops("Could not connect to server: <b>$this->server</b>."); } if(!@mysql_select_db($this->database, $this->link_id)) {//no database $this->oops("Could not open database: <b>$this->database</b>."); } // unset the data so it can't be dumped $this->server=''; $this->user=''; $this->pass=''; $this->database=''; }#-#connect() #-############################################# # desc: close the connection function close() { if(!mysql_close($this->link_id)){ $this->oops("Connection close failed."); } }#-#close() #-############################################# # Desc: escapes characters to be mysql ready # Param: string # returns: string function escape($string) { if(get_magic_quotes_gpc()) $string = stripslashes($string); return mysql_real_escape_string($string); }#-#escape() #-############################################# # Desc: executes SQL query to an open connection # Param: (MySQL query) to execute # returns: (query_id) for fetching results etc function query($sql) { // do query $this->query_id = @mysql_query($sql, $this->link_id); if (!$this->query_id) { $this->oops("<b>MySQL Query fail:</b> $sql"); } $this->affected_rows = @mysql_affected_rows(); return $this->query_id; }#-#query() #-############################################# # desc: fetches and returns results one line at a time # param: query_id for mysql run. if none specified, last used # return: (array) fetched record(s) function fetch_array($query_id=-1) { // retrieve row if ($query_id!=-1) { $this->query_id=$query_id; } if (isset($this->query_id)) { $this->record = @mysql_fetch_assoc($this->query_id); }else{ $this->oops("Invalid query_id: <b>$this->query_id</b>. Records could not be fetched."); } // unescape records if($this->record){ $this->record=array_map("stripslashes", $this->record); //foreach($this->record as $key=>$val) { // $this->record[$key]=stripslashes($val); //} } return $this->record; }#-#fetch_array() #-############################################# # desc: returns all the results (not one row) # param: (MySQL query) the query to run on server # returns: assoc array of ALL fetched results function fetch_all_array($sql) { $query_id = $this->query($sql); $out = array(); while ($row = $this->fetch_array($query_id, $sql)){ $out[] = $row; } $this->free_result($query_id); return $out; }#-#fetch_all_array() #-############################################# # desc: frees the resultset # param: query_id for mysql run. if none specified, last used function free_result($query_id=-1) { if ($query_id!=-1) { $this->query_id=$query_id; } if(!@mysql_free_result($this->query_id)) { $this->oops("Result ID: <b>$this->query_id</b> could not be freed."); } }#-#free_result() #-############################################# # desc: does a query, fetches the first row only, frees resultset # param: (MySQL query) the query to run on server # returns: array of fetched results function query_first($query_string) { $query_id = $this->query($query_string); $out = $this->fetch_array($query_id); $this->free_result($query_id); return $out; }#-#query_first() #-############################################# # desc: does an update query with an array # param: table (no prefix), assoc array with data (doesn't need escaped), where condition # returns: (query_id) for fetching results etc function query_update($table, $data, $where='1') { $q="UPDATE `".$this->pre.$table."` SET "; foreach($data as $key=>$val) { if(strtolower($val)=='null') $q.= "`$key` = NULL, "; elseif(strtolower($val)=='now()') $q.= "`$key` = NOW(), "; else $q.= "`$key`='".$this->escape($val)."', "; } $q = rtrim($q, ', ') . ' WHERE '.$where.';'; return $this->query($q); }#-#query_update() #-############################################# # desc: does an insert query with an array # param: table (no prefix), assoc array with data # returns: id of inserted record, false if error function query_insert($table, $data) { $q="INSERT INTO `".$this->pre.$table."` "; $v=''; $n=''; foreach($data as $key=>$val) { $n.="`$key`, "; if(strtolower($val)=='null') $v.="NULL, "; elseif(strtolower($val)=='now()') $v.="NOW(), "; else $v.= "'".$this->escape($val)."', "; } $q .= "(". rtrim($n, ', ') .") VALUES (". rtrim($v, ', ') .");"; if($this->query($q)){ //$this->free_result(); return mysql_insert_id(); } else return false; }#-#query_insert() #-############################################# # desc: throw an error message # param: [optional] any custom error to display function oops($msg='') { if($this->link_id>0){ $this->error=mysql_error($this->link_id); $this->errno=mysql_errno($this->link_id); } else{ $this->error=mysql_error(); $this->errno=mysql_errno(); } ?> <table align="center" border="1" cellspacing="0" style="background:white;color:black;width:80%;"> <tr><th colspan=2>Database Error</th></tr> <tr><td align="right" valign="top">Message:</td><td><?php echo $msg; ?></td></tr> <?php if(strlen($this->error)>0) echo '<tr><td align="right" valign="top" nowrap>MySQL Error:</td><td>'.$this->error.'</td></tr>'; ?> <tr><td align="right">Date:</td><td><?php echo date("l, F j, Y \a\\t g:i:s A"); ?></td></tr> <tr><td align="right">Script:</td><td><a href="<?php echo @$_SERVER['REQUEST_URI']; ?>"><?php echo @$_SERVER['REQUEST_URI']; ?></a></td></tr> <?php if(strlen(@$_SERVER['HTTP_REFERER'])>0) echo '<tr><td align="right">Referer:</td><td><a href="'.@$_SERVER['HTTP_REFERER'].'">'.@$_SERVER['HTTP_REFERER'].'</a></td></tr>'; ?> </table> <?php }#-#oops() }//CLASS Database ################################################################################################### classGuestbook.php <?php require_once 'class.Database.php'; class GuestBook { //Edit these to connect to a different database var $db_server = 'mysqlb14.webcontrolcenter.com'; var $db_user = 'agile'; var $db_pass = 'adila'; var $db_name = 'agile'; //Primary key field is assumed to be called id. Edit if it's not var $id = 'id'; //Field to order posts by, could be set to a date field var $orderBy = ''; var $db, $table, $order; /** * Constructor initialises the database class and the table * which the guest book uses. * @param $table String */ function __construct($table, $primaryKey = '',$order = 'DESC'){ $this->db = new Database($this->db_server, $this->db_user, $this->db_pass, $this->db_name); $this->db->connect(); $this->table = $table; if($primaryKey != '') $this->id = $primaryKey; if($this->orderBy == '') $this->orderBy = $this->id; $this->order = $order; } /** * Inserts an array into a table where the keys are the * column names. Returns the ID of the row just inserted. * @return Number * @param $array String */ function insert($array){ return $this->db->query_insert($this->table, $array); } /** * Updates an existing record. * @return Number * @param $array Array * @param $where Number */ function update($array){ return $this->db->query_update($this->table, $array, $this->id .'='.$array[$this->id]); } /** * Returns a single record from the table. * @return JSON Object * @param $id Number */ function getPost($id){ $sql = 'SELECT * FROM `'.$this->table.'` WHERE '.$this->id.' = '.$id; $result = $this->db->query_first($sql); return json_encode($result); } /** * Returns an array of posts, if no parameters are specified, it will * return the 10 most recently posted. * @return JSON Array * @param $size Object[optional] * @param $offset Object[optional] */ function getPostList($size = 10, $offset = 0){ $sql = 'SELECT * FROM `'.$this->table.'` ORDER BY '.$this->orderBy.' '.$this->order.' LIMIT '.$offset.', '.$size; //$sql = 'SELECT * FROM `'.$this->table.'`'; $result = $this->db->fetch_all_array($sql); return json_encode($result); } function removePost($id) { $sql = 'DELETE FROM `'.$this->table.'` WHERE '.$this->id.' = '.$id; return $this->db->query($sql); } } javascript files.......... read.php <?php //Set no caching header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); header("Cache-Control: no-store, no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); ?> var guestbook; window.addEvent('domready', function(){ guestbook = new GuestBook(); }); var GuestBook = new Class({ initialize: function(){ var req = new Request.JSON({ url: 'control.php?action=getPage', onSuccess: this.success }).send(); }, success: function(jArray){ jArray.each(function(post){ var post = new PostItem(post.id, post.name, post.comment); post.display().inject($('commentList')); }, this); } }); var PostItem = new Class({ initialize: function(id, name, comment){ this.id = id; this.name = name; this.comment = comment; }, display: function(){ var cont = new Element('div',{ 'class':'postItem', 'id':'post'+this.id }); var title = new Element('h3',{ 'class':'postTitle', 'text':this.name + ' says...' }); var comment = new Element('p',{ 'class':'postComment', 'text':this.comment }); title.inject(cont); comment.inject(cont); return cont; } }); insert.php <?php //Set no caching header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); header("Cache-Control: no-store, no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); ?> window.addEvent('domready',domReady); function domReady(){ var guestbook = new GuestBook(); } GuestBook = new Class({ initialize: function(){ $('newComment').addEvent('submit', this.addComment); }, addComment: function(e){ e.preventDefault(); var req = new Request({ url:'control.php?action=insertPost', onSuccess:commentAddSuccess }).post(this); function commentAddSuccess(idNo){ new Element('span',{ 'text':'inserted item ' + idNo }).inject($('newComment')); } }, }); edit.php <?php //Set no caching header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); header("Cache-Control: no-store, no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); ?> window.addEvent('domready',domReady); function domReady(){ var guestbook = new GuestBook(); } GuestBook = new Class({ initialize: function(){ $('newComment').addEvent('submit', this.addComment); }, addComment: function(e){ e.preventDefault(); var req = new Request({ url:'control.php?action=editPost', onSuccess:commentAddSuccess }).post(this); function commentAddSuccess(){ new Element('span',{ 'text':'edited item ' }).inject($('newComment')); } }, }); delete.php <?php //Set no caching header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); header("Cache-Control: no-store, no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); ?> window.addEvent('domready',domReady); function domReady(){ var guestbook = new GuestBook(); } GuestBook = new Class({ initialize: function(){ $('newComment').addEvent('submit', this.addComment); }, addComment: function(e){ e.preventDefault(); var req = new Request({ url:'control.php?action=removePost&id=' + this.id.value, onSuccess:commentAddSuccess }).send(); function commentAddSuccess(){ new Element('span',{ 'text':'deleted item' }).inject($('newComment')); } }, }); Quote Link to comment Share on other sites More sharing options...
PFMaBiSmAd Posted May 12, 2009 Share Posted May 12, 2009 The general method would be to use a GET parameter on the end of the URL that specifies which action you want to perform. Something like yourpage.php?action=delete Then in the code on your page you use a switch/case statement to test $_GET['action'] and perform the code specific to each action. Quote Link to comment Share on other sites More sharing options...
andrew_biggart Posted May 12, 2009 Author Share Posted May 12, 2009 Sorry i dont really understand at all im an absolute beginner to this sorry! I understand the get function ok but i dont understand how i would go about implementing it! Thankyou btw Quote Link to comment Share on other sites More sharing options...
Ken2k7 Posted May 12, 2009 Share Posted May 12, 2009 Why would you take on an assignment when you have no clue what you're doing? Quote Link to comment Share on other sites More sharing options...
andrew_biggart Posted May 12, 2009 Author Share Posted May 12, 2009 Why would you take on an assignment when you have no clue what you're doing? Unfortunitly Ken i have no choice its one of the modules on my course. Im studying multimedia and internet technology so it has abit of everything. I want to be a designer and possibly abit of php coding, but i dont want to know ajax but i dont have a choice! Quote Link to comment Share on other sites More sharing options...
andrew_biggart Posted May 12, 2009 Author Share Posted May 12, 2009 can anyone point me in the right direction! Quote Link to comment Share on other sites More sharing options...
Ken2k7 Posted May 12, 2009 Share Posted May 12, 2009 If you want to add stuff to multiple pages, then write it in one file an use PHP require. Quote Link to comment Share on other sites More sharing options...
andrew_biggart Posted May 20, 2009 Author Share Posted May 20, 2009 can anyone please help me with this? it has be in in 3 days and i havent even got it started? please? any help would be aprreciated thanks Quote Link to comment Share on other sites More sharing options...
RichardRotterdam Posted May 20, 2009 Share Posted May 20, 2009 i really dont have a clue what im doing!I have to built a "simple" guestbook or forum. Just reading that. Do you actually require that code you posted or do you need to start from scratch? And do you need ajax for this? Quote Link to comment Share on other sites More sharing options...
andrew_biggart Posted May 20, 2009 Author Share Posted May 20, 2009 Yea well basically i have been given all that code and i have to get everthing running off one page for a pass. I know that i have to use the get command to find out what action to do and then use a massive if statement for all the functions but i dont know where to start! And yes the module is ajax so i do have to use it! Quote Link to comment Share on other sites More sharing options...
Ken2k7 Posted May 20, 2009 Share Posted May 20, 2009 Posting up code is frowned upon, let alone posting up all your code. No one is going to care to read through all of it. Please just post the necessary bits you need help with. If you need help with AJAX, post just the AJAX and the necessary PHP file that goes along with it if need be. I don't want to backseat moderate, but I'm just letting you know. Google an AJAX tutorial, mess around with it and if you need help or if you are stuck on some parts, then you can post it here asking for help. Though, I find it odd that one of your courses requires you to do something you haven't been taught. As for your original post, you asked this one question: What i would like to know is there a simple way to add all of the elements to one page instead of four different pages. I.e read posts, write delete etc all running from the same page I addressed that in my previous post in using PHP's require or include function. I assume you dismissed that, right? If that's all you wanted to do, use one of those two functions. It was all that you asked for. Quote Link to comment Share on other sites More sharing options...
RichardRotterdam Posted May 21, 2009 Share Posted May 21, 2009 Ok so i have been given an assignment to do for uni I have to built a "simple" guestbook or forum I think you are better of starting from scratch. It's most likely your tutor wants you to understand how ajax works and not how you can adjust someone else's script so it does what it is suppose to do according to the assignment. Just try out some basic ajax tutorials. In the end it will probably be more satisfying too. I can get it working on separate pages but I want to try and run it off the one page and then build up fro there! You'll need a minimum of 2 pages. 1 main page which is visiable to the user and 1 or more ajax pages that will perform the the queries to your database. I know that i have to use the get command to find out what action to do You can use a post too. if you want to send a lot of text to put in your database you're actually better of using a post because there is a character limit with the get method. then use a massive if statement for all the functions but i dont know where to start! you can use a switch statement too if you want to put all database ajax functionality in one page. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.