Page 1 of 1

Errors after having completed the blog with comments tut.

Posted: Fri Nov 30, 2012 4:22 am
by AdzProductions
Below are all of the errors I am getting:

"Parse error: syntax error, unexpected $end in /usr/local/www/project/A._____/website + blog/blog/blog_post.php on line 35"

"Parse error: syntax error, unexpected '[' in /usr/local/www/project/A._____/website + blog/blog/blog_list.php on line 18"

"Parse error: syntax error, unexpected ')' in /usr/local/www/project/A.Saberton/website + blog/blog/core/inc/comments.inc.php on line 35"

And I am sure there are a few more..

I have attached my whole code for the programmer and I would be immensely thankful if someone is able to fix any/all of the errors and possibly let me know where I went wrong, I am sure there is very little to do to fix this however as an immature programmer I cannot find a solution.. many thanks and I look forward to hearing from you!.

Download here [safe]http://www.mediafire.com/?gcds3f16wmgm6r7

Re: Errors after having completed the blog with comments tut

Posted: Fri Nov 30, 2012 4:54 am
by Temor
Instead of a zip file, please copy and paste all of your code here inside php syntax tags,
[syntax=php]
[/syntax]
and I will do my best to assist you in solving this.

Re: Errors after having completed the blog with comments tut

Posted: Fri Nov 30, 2012 5:24 am
by AdzProductions
Blog_list.php
<?php

include('core/init.inc.php');

?>
<html>
<head>
<title>
</head>
<body>
<?php

$posts = get_posts();

foreach ($posts as $post){
	?>
	<h2><a href="blog_read.php?pid=<?php echo $post['id']; ?><?php echo $post['title']; ?></h2>
	<h3>Author:<?php echo['user']; ?> at exactly $post['date'] <?php echo </h3>
	<h3>(<?php echo $post['total_comments'];?>comment, this was the last comment <?php echo $post['last_comment']; ?>)</h3>
	
	<hr />
	<p><?php echo $post['preview']; ?></p>
	<?php

	}

	?>
</body>
</html>

blog_post.php
<?php

include('core/init.inc.php');


if (isset($_POST['user'], $_POST['title'], $_POST['body'])){
add_post($_POST['user'], $_POST['title'], $_POST['body']);
header('Location: blog_list.php');
die();


	?>
	<html>
	<head>
	<title>
	</head>
	<body>
	<form action="" method="post">
	<p>
		<label for="user">Name</label>
		<input type=text" name="user" id-"user" />
	</p>
	<p>
		<label for="title">Post Title:</label>
		<input> type="text" name="title" id="title" />
	</p>
	<p>
		<textarea name="body" rows="15" cols="50"></textarea>
	</p>
	<p>
		<input type="submit" value="Add Post" />
	</p>
	</form>
	</body>
	</html>
blog_read.php
<?php

include('core/init.inc.php');

if (isset($_GET['pid'],$_POST['user'], $_POST['body'];)){
	if (add_comment($GET['pid'],$_POST['user'],$_POST['body'])){
		header("Location: blog_read.php?pid={$_GET['pid']}");
	}else{
		header('Location: blog_list.php'();
	}

	die();
}

?>

<html>
<head>
</head>
<body>
	<div>
		<?php

		if (isset($_GET['pid']) === false || valid_pid($_GET['pid'])=== false){
			echo 'You have screwed up dude! - post ID.';
		}else{
			$post = get_post($_GET['pid']);
			
			?>
			<h2><?php echo $post['title'];</h2>
			<h3>Author: <?php echo $post['user']; ?> on <?php echo $post['date']; ?>(<?php echo count($post['comments'];)?> feedback)</h3>

			<hr />

			<p><?php echo $post['body']; ?></p>



			<hr />
				<?php

				foreach ($post['comments'] AS $comment){
					?>
					<h2>Author: <?php echo $comment['user']; ?> at approx: <?php echo $connect['date']; ?></h2>
					<p><?php echo $comment['body']; ?></p>
					<hr />
					<?php

				}

				?>

			<form action="" method="post">
			<p>
				<label for="user">Name</label>
				<input type="text" name="user" id="user />
			</p>
			<p>
				<textarea name="body" rows="15" cols="50"></textarea>
			</p>
			<p>
				<input type="submit" value="Have your say!" />
			</p>
			</form>
		<?php
	}
	
	?>
	</div>
	</body>
</html>

</body>
comments.inc.php
<?php

// this will fetch all the comments for my blog post
function get_comments($pid){
	$pid = (int)$pid;

	$sql = "SELECT
		`comment_body` AS `body`,
		`comment_user` AS `user`,
		DATE_FORMAT(`comment_date`, %d/%m/%Y %H:%i:$s') AS `date`
	FROM `comments`
	WHERE `post_id` = {$pid}";

	$comments = mysql_query($sql);

	$return = array();
	while (($row = mysql_fetch_assoc($comments)) !== false){
		$return[] = $row;
}

	return $return;

}
// this will allow me to add a comment to a specfic blog post
function add_comment($pid, $user, $body){
	if (valid_pid($pid) === false){
	return false;

	}

	//I am now going to put the $pid as an integer again.
	
	$pid = (int)$pid;
	$user = mysql_real_escape_string(htmlentities($user));
	$body = mysql_real_escape_string(htmlentities($body)));
	
	mysql_query("INSERT INTO `comments` (`post_id`, `comment_user`, `comment_body`, `comment_date`) VALUES ({$pid}, '{$user}', {$body}', NOW())");
	echo
	return true;
}

?>
posts.inc.php
<?php


//this will check if the given post id is in the table.
function valid_pid($pid){
	$pid = (int)$pid;

	$total = mysql_query("SELECT COUNT('post_id') FROM 'posts' WHERE 'post_id' = {$pid}");
	$total = mysql_result($total, 0);

	if ($total !=1){
		return false;
	}else{
		return true;
	}
}

// fetches a summary of all the blog posts.
function get_posts(){
	$sql = "SELECT
		`posts`.`post_id` AS `id`,
		`posts`.`post_title` AS `title`,
		LEFT(`posts`.`post_body`,512) AS `preview`,
		`posts`.`post_user` AS 'user',
		DATE_FORMAT(`posts`.`post_date`,'%d/%m/%y $H:%i:%s') AS `date`,
		`comments`.`total_comments`,
		DATE_FORMAT(`comments`.`last_comment`, '%d/%m/%y $H:%i:%s') AS `last_comment`
	FROM `posts`
	LEFT JOIN (
		SELECT
			`post_id`,
			COUNT(`comment_id`) AS `total_comments`,
			MAX(`comment_date`) AS `last_comment`
		FROM `comments`
		GROUP BY `post_id`
	) AS `comments`
	ON `posts`.`post_id` = `comments`.`post_id`
	ORDER BY `posts`.`post_date` DESC";

	$posts = mysql_query(sql);
	
	$rows = array();
	while (($row = mysql_fetch_assoc($posts)) !== false){
		$rows[] = array(
			'id'			=>$row['id'],
			'title'		=>$row['title'],
			'preview'		=>$row['preview'],
			'user'			=>$row['user'],
			'date'			=>$row['date'],
			'total_comments'	=>($row['total_comments'] === null) ? 0 : $row['total_comments'],
			'last_comment'	=>($row['last_comment'] === null)? 'never' : $row['last_comment']	
		);
	return $rows;	

	}

}

// fetches a single that is from the table in question.

function get_post($pid){
	$pid =(int)$spid;
	
	$sql = "SELECT
			`post_title` AS `title`,
			`post_body` AS `body`,
			`post_user` AS `user`
			`post_date` AS `date`
		FROM `posts`
		WHERE `post_id` = {$pid}";
	
	$post = mysql_query($sql);
	$post = mysql_fetch_assoc($post);
	
	$post['comments'] = get_comments($pid);
	
	return $post;
	
}

//adds a post + making the posting secure by protection from SQL injection.
function add_post($name, $title, $body){
	$name = mysql_real_escape_string(htmlentities($name));
	$title = mysql_real_escape_string(htmlentities($title));
	$body = mysql_real_escape_string(nl2br(htmlentities($body)));

	mysql_query("INSERT INTO `posts` [`post_user`, `post_title`,`post_body`,`post_date`) VALUES ('{$name}', '{$title}', '{$body}', NOW()");
}

?>

Thanks so much for offering to help me, I feel I am so close yet so far away ;)

Re: Errors after having completed the blog with comments tut

Posted: Fri Nov 30, 2012 3:54 pm
by ExtremeGaming
"Parse error: syntax error, unexpected $end in /usr/local/www/project/A._____/website + blog/blog/blog_post.php on line 35"

Lines 6-10:
if (isset($_POST['user'], $_POST['title'], $_POST['body'])){
add_post($_POST['user'], $_POST['title'], $_POST['body']);
header('Location: blog_list.php');
die();
Change to:
if (isset($_POST['user'], $_POST['title'], $_POST['body'])){
add_post($_POST['user'], $_POST['title'], $_POST['body']);
header('Location: blog_list.php');
die();
}
"Parse error: syntax error, unexpected '[' in /usr/local/www/project/A._____/website + blog/blog/blog_list.php on line 18"

Line 18:
<h3>Author:<?php echo['user']; ?> at exactly $post['date'] <?php echo </h3>
Change to:
<h3>Author:<?php echo $post['user']; ?> at exactly <?php echo $post['date']; ?></h3>
"Parse error: syntax error, unexpected ')' in /usr/local/www/project/A.Saberton/website + blog/blog/core/inc/comments.inc.php on line 35"

Line 35:
$body = mysql_real_escape_string(htmlentities($body)));
Change to:
$body = mysql_real_escape_string(htmlentities($body));