PHP Tutorial: Blog(Including commenting)

Post here is you are having problems with any of the tutorials.
Post Reply
agatkk
Posts: 2
Joined: Sat Jun 09, 2012 4:12 pm

PHP Tutorial: Blog(Including commenting)

Post by agatkk »

Hey there.
I have a problem with blog_list.php
I did everything like Jacek did in his tutorials.
But when I try blog_list.php I see(I know it sais that 'body' is undefined, but I tried with preview and I get the same message):
php.png
php.png (31.31 KiB) Viewed 1444 times
blog_list.php
<?php
include('core/init.inc.php');



?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<title>Agata Filipiuk</title>
	</head>
	<body>
		<div>
        <?php
		$posts=get_posts();
		
		foreach ($posts as $post){
			// linkowanie tytułu, użytkownika, i il kom
			?><center>
           
            <h2><a href="blog_read.php?pid=<?php echo $post['id']; ?>"><?php echo $post['title']; ?></a></h2>
            <h4>By <?php echo $post['user']; ?> on <?php echo $post['date']; ?></h4>
            <h4>( <?php echo $post['total_comments'];?> komentarze, ostatni komentarz <?php echo $post['last_comment'];?> )</h4>
            <hr />
            <p><?php echo $post['preview]; ?></p>
            <?php
		}
		?>
		
		</center>
        </div>
	</body>
</html>
The line 26 is:
<p><?php echo $post['preview]; ?></p>
I'm also including other files:
posts.inc.php:
<?php

//sprawdza, czy dany post id jest w db
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;
	}
}

//zbiera wszystkie posty
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){
		//wskazniki
		$rows[]=array(
		'id'				=>$row['id'],
		'title'				=>$row['title'],
		'user' 				=>$row['user'],
		'date'				=>$row['date'],
		'total_comments'	=>($row['total_comments']===null) ? 0: $row['total_comments'],//sprawdzamy czy są komentarze
		'last_comment'		=>($row['last_comment']===null) ? 'never': $row['last_comment']
		
		);
	}
	return $rows;
}

//zbiera poj posty
function get_post($pid){
	$pid=(int)$pid;
	
	$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);
		echo mysql_error();
		$post=mysql_fetch_assoc($post);
		$post['comments'] = get_comments($pid);
		return $post;
		
	
}

//dodaje nowy post
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())");
	
}

?>

comments.in.php:
<?php
//zwraca wszystkie komentarze do postu
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;
}

//dodaje komentarz
function add_comment($pid, $user, $body){
	//spr czy koment istenieje
	if
(valid_pid($pid) === false){
	return false;
}
	$pid	=(int)$pid;
	$user 	=mysql_real_escape_string(htmlentities($user));
	$body 	=mysql_real_escape_string(nl2br(htmlentities($body)));
	
	mysql_query("INSERT INTO `comments` (`post_id`, `comment_user`, `comment_body`, `comment_date`) VALUES ({$pid}, '{$user}', '{$body}', NOW())");
	return true;
	
	
	
}

?>
User avatar
Temor
Posts: 1186
Joined: Thu May 05, 2011 8:04 pm

Re: PHP Tutorial: Blog(Including commenting)

Post by Temor »

You forgot to create the preview variable inside get_posts.
$rows[]=array(
                'id'                            =>$row['id'],
                'title'                         =>$row['title'],
                'user'                          =>$row['user'],
                'date'                          =>$row['date'],
                'total_comments'        =>($row['total_comments']===null) ? 0: $row['total_comments'],//sprawdzamy czy są komentarze
                'last_comment'          =>($row['last_comment']===null) ? 'never': $row['last_comment']
               
                );
There is no "body" or "preview" there.
$rows[]=array(
                'id'                            =>$row['id'],
                'title'                         =>$row['title'],
                'user'                          =>$row['user'],
                'date'                          =>$row['date'],
                'preview'                      =>$row['preview'], // You forgot this line.
                'total_comments'        =>($row['total_comments']===null) ? 0: $row['total_comments'],//sprawdzamy czy są komentarze
                'last_comment'          =>($row['last_comment']===null) ? 'never': $row['last_comment']
               
                );
agatkk
Posts: 2
Joined: Sat Jun 09, 2012 4:12 pm

Re: PHP Tutorial: Blog(Including commenting)

Post by agatkk »

THANK YOU!
User avatar
Temor
Posts: 1186
Joined: Thu May 05, 2011 8:04 pm

Re: PHP Tutorial: Blog(Including commenting)

Post by Temor »

You're welcome :)
Post Reply