Jump to content

Assignment please help !


andrew_biggart

Recommended Posts

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'));
	}
},


});

 

 

 

 

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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!

Link to comment
Share on other sites

  • 2 weeks later...

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!

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.