Blog Tutorial - Invalid Post ID - blog-read.php
Blog Tutorial - Invalid Post ID - blog-read.php
After making a new blog post or comment the page goes blank after clicking button (blog_post.php & blog_read.php). The posts are posting when I view blog_list.php and the comments are posting when I view blog_read.php. If I just preview the blog_read.php file I get a Invalid post ID message.
Can anyone help? Please
Thank you,
David
Can anyone help? Please
Thank you,
David
Re: Blog Tutorial - Invalid Post ID - blog-read.php
Post your code using the proper syntax tags and I'll take a look at it.
Re: Blog Tutorial - Invalid Post ID - blog-read.php
Thank you!
blog_read.php
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(); } ?> <!DOCTYPE HTML> <html lang="en" class="no-js"> <head> <meta charset="UTF-8"> <!-- www.phpied.com/conditional-comments-block-downloads/ --> <!--[if IE]><![endif]--> <script> document.documentElement.className = 'js'; </script> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <link rel="shortcut icon" href="/favicon.ico"> <link rel="apple-touch-icon" href="/apple-touch-icon.png"> <link rel="stylesheet" href="css/reset.css" /> <link rel="stylesheet" href="css/960_24_col.css"/> <link rel="stylesheet" href="css/text.css" /> <link rel="stylesheet" href="css/style.css" /> <!-- For the less-enabled mobile browsers like Opera Mini --> <link rel="stylesheet" media="handheld" href="css/handheld.css?v=1"> <!--[if lt IE 9]> <script src="http://html5shiv.googlecode.com/svn/tru ... "></script> <script src="js/selectivizr.js"></script> <![endif]--> <script src="http://ajax.googleapis.com/ajax/libs/jq ... "></script> <title>SITENAME</title> </head> <body> <div> <?php if (isset($_GET['pid']) === false || valid_pid($_GET['pid']) === false){ echo 'Invalid post ID.'; }else{ $post = get_post($_GET['pid']); ?> <h2><?php echo $post['title']; ?></h2> <h4>By <?php echo $post['user']; ?> on <?php echo $post['date']; ?> (<?php echo count($post['comments']); ?> comments)</h4> <hr /> <p><?php echo $post ['body']; ?></p> <hr /> <?php foreach ($post['comments'] as $comment){ ?> <h4>By <?php echo $comment['user']; ?> on <?php echo $comment['date']; ?></h4> <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="20" cols="60"></textarea> </p> <p> <input type="submit" value="Add Comment" /> </p> </form> <?php } ?> </div> </body> </html>posts.inc.php
<?php // checks 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 summery 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_comments' => ($row['last_comment'] === null) ? 'never' : $row['last_comment'] ); } return $rows; } // fetches a single post from the table. 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); $post = mysql_fetch_assoc($post); $post['comments'] = get_comments($pid); return $post; } //adds a new blog entry. 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.inc.php
<?php //fetches all of the comments for a given 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; } //adds a comment. function add_comment($pid, $user, $body){ 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; } ?>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(); } ?> <!DOCTYPE HTML> <html lang="en" class="no-js"> <head> <meta charset="UTF-8"> <!-- www.phpied.com/conditional-comments-block-downloads/ --> <!--[if IE]><![endif]--> <script> document.documentElement.className = 'js'; </script> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <link rel="shortcut icon" href="/favicon.ico"> <link rel="apple-touch-icon" href="/apple-touch-icon.png"> <link rel="stylesheet" href="css/reset.css" /> <link rel="stylesheet" href="css/960_24_col.css"/> <link rel="stylesheet" href="css/text.css" /> <link rel="stylesheet" href="css/style.css" /> <!-- For the less-enabled mobile browsers like Opera Mini --> <link rel="stylesheet" media="handheld" href="css/handheld.css?v=1"> <!--[if lt IE 9]> <script src="http://html5shiv.googlecode.com/svn/tru ... "></script> <script src="js/selectivizr.js"></script> <![endif]--> <script src="http://ajax.googleapis.com/ajax/libs/jq ... "></script> <title>SITENAME</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">Title</label> <input type="text" name="title" id="title" /> </p> <p> <textarea name="body" rows="20" cols="60"></textarea> </p> <p> <input type="submit" value="Add Post" /> </p> </form> </body> </html>blog_list.php
<?php include('core/init.inc.php'); ?> <!DOCTYPE HTML> <html lang="en" class="no-js"> <head> <meta charset="UTF-8"> <!-- www.phpied.com/conditional-comments-block-downloads/ --> <!--[if IE]><![endif]--> <script> document.documentElement.className = 'js'; </script> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <link rel="shortcut icon" href="/favicon.ico"> <link rel="apple-touch-icon" href="/apple-touch-icon.png"> <link rel="stylesheet" href="css/reset.css" /> <link rel="stylesheet" href="css/960_24_col.css"/> <link rel="stylesheet" href="css/text.css" /> <link rel="stylesheet" href="css/style.css" /> <!-- For the less-enabled mobile browsers like Opera Mini --> <link rel="stylesheet" media="handheld" href="css/handheld.css?v=1"> <!--[if lt IE 9]> <script src="http://html5shiv.googlecode.com/svn/tru ... "></script> <script src="js/selectivizr.js"></script> <![endif]--> <script src="http://ajax.googleapis.com/ajax/libs/jq ... "></script> <title>SITENAME</title> </head> <body> <div> <?php $posts = get_posts(); foreach ($posts as $post){ ?> <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']; ?> comments, last comment<?php echo $post['last_comment']; ?>)</h4> <hr /> <p><?php echo $post['body']; ?></p> <?php } ?> </div> </body> </html>init.inc.php
<?php mysql_connect('localhost', 'root', 'root'); mysql_select_db('blog'); include('inc/posts.inc.php'); include('inc/comments.inc.php'); ?>
Re: Blog Tutorial - Invalid Post ID - blog-read.php
try adding
echo mysql_error();under your queries to see if they are doing what they should.
Re: Blog Tutorial - Invalid Post ID - blog-read.php
Hi Temor,
I tried the echo mysql_error(); and nothing changed. The same thing is still happening. Blank pages upon click. This might be a stupid question but I'm new at this. I did notice that When I test the comments.inc.php and post.inc.php directly that I get an internal server error. Could this be the issue? If so how would I resolve it? I just figured that message was happening because these are back end files. Any thoughts?
Thank you so much for all your help.
David
I tried the echo mysql_error(); and nothing changed. The same thing is still happening. Blank pages upon click. This might be a stupid question but I'm new at this. I did notice that When I test the comments.inc.php and post.inc.php directly that I get an internal server error. Could this be the issue? If so how would I resolve it? I just figured that message was happening because these are back end files. Any thoughts?
Thank you so much for all your help.
David
Re: Blog Tutorial - Invalid Post ID - blog-read.php
Is this on a local server?
Try putting a hashtag (#) as the action in your forms.
Try putting a hashtag (#) as the action in your forms.
<form action="#" method="post">also, remove the die(); in your first if statement in both blog_read and blog_post.
if (isset($_POST['user'], $_POST['title'], $_POST['body'])){ add_post($_POST['user'], $_POST['title'], $_POST['body']); header('Location: blog_list.php'); die(); <-- this one. }
Re: Blog Tutorial - Invalid Post ID - blog-read.php
Hi Temor,
Thank you for your help on this.
Yes, I am testing on a local server. I just added the hashtag (#) in the from action, tested it and nothing changed. Then I removed the die(); in both the blog_read and the blog_post and still nothing happened.
Any other suggestions?
Thank you,
David
Thank you for your help on this.
Yes, I am testing on a local server. I just added the hashtag (#) in the from action, tested it and nothing changed. Then I removed the die(); in both the blog_read and the blog_post and still nothing happened.
Any other suggestions?
Thank you,
David
Re: Blog Tutorial - Invalid Post ID - blog-read.php
Adding the # will just break the form, don't do that
The die() needs to be there. It is to prevent the rest of the script running once the browser has been redirected.
If you are getting blank pages it probably means there is a syntax error that is being hidden because of your error_reporting setting. In your php.ini file make sure that display_error is set to On and error_reporting is set to E_ALL, if you edit the file with the server running you will need to restart it for it to take effect. There are plenty of guides online if this made no sense
The die() needs to be there. It is to prevent the rest of the script running once the browser has been redirected.
If you are getting blank pages it probably means there is a syntax error that is being hidden because of your error_reporting setting. In your php.ini file make sure that display_error is set to On and error_reporting is set to E_ALL, if you edit the file with the server running you will need to restart it for it to take effect. There are plenty of guides online if this made no sense
Re: Blog Tutorial - Invalid Post ID - blog-read.php
I've encountered several cases where the page would redirect to an empty document if the form action was left empty. I never leave it empty now and so far it's working just finejacek wrote:Adding the # will just break the form, don't do that
Re: Blog Tutorial - Invalid Post ID - blog-read.php
Thanks guys for helping with this. I'm sorry to be such a pain.
Okay, It seems I'm back to square one. I added the die() back and removed the #. As far as the php.ini files goes, where is that on a local server? Do I create it? Do you mean add the error_reporting to the init.inc.php?
Hold on... I think I'm getting close. I added
This on the blog_list.php:
Notice: Undefined index: body in /Volumes/Project/blog/blog_list.php on line 52
New
By Dave on 02/03/2012 08:51:55
(0 comments, last comment
Notice: Undefined index: last_comment in /Volumes/Project/blog/blog_list.php on line 48
)
Notice: Undefined index: body in /Volumes/Project/blog/blog_list.php on line 52
By on 02/03/2012 08:51:13
(0 comments, last comment
Notice: Undefined index: last_comment in /Volumes/Project/blog/blog_list.php on line 48
)
Notice: Undefined index: body in /Volumes/Project/blog/blog_list.php on line 52
ads
By vfsdav on 01/03/2012 14:30:16
(1 comments, last comment
Notice: Undefined index: last_comment in /Volumes/Project/blog/blog_list.php on line 48
)
I still don't know the issue. I'm going to try to examine it further. If you have any thoughts on the issue please let me know.
Thank you,
David
Okay, It seems I'm back to square one. I added the die() back and removed the #. As far as the php.ini files goes, where is that on a local server? Do I create it? Do you mean add the error_reporting to the init.inc.php?
Hold on... I think I'm getting close. I added
error_reporting(E_ALL); ini_set('display_errors', 1);to the init.inc.php and got this error when I tested the blog_post.php file: Warning: Cannot modify header information - headers already sent by (output started at /Volumes/Project/blog/core/init.inc.php:16) in /Volumes/Project/blog/blog_post.php on line 7
This on the blog_list.php:
Notice: Undefined index: body in /Volumes/Project/blog/blog_list.php on line 52
New
By Dave on 02/03/2012 08:51:55
(0 comments, last comment
Notice: Undefined index: last_comment in /Volumes/Project/blog/blog_list.php on line 48
)
Notice: Undefined index: body in /Volumes/Project/blog/blog_list.php on line 52
By on 02/03/2012 08:51:13
(0 comments, last comment
Notice: Undefined index: last_comment in /Volumes/Project/blog/blog_list.php on line 48
)
Notice: Undefined index: body in /Volumes/Project/blog/blog_list.php on line 52
ads
By vfsdav on 01/03/2012 14:30:16
(1 comments, last comment
Notice: Undefined index: last_comment in /Volumes/Project/blog/blog_list.php on line 48
)
I still don't know the issue. I'm going to try to examine it further. If you have any thoughts on the issue please let me know.
Thank you,
David
Re: Blog Tutorial - Invalid Post ID - blog-read.php
Hmm, okay
The other ones are just telling you that some variables you have tried to use are not there, this can only happen if they have not been defined. It could be the result of a query failing or maybe just a typo, trace the variable back from the point where the error is and see if you see where it went wrong. I can't see anything right away but I only have a quick look.
This is probably the one to fix first. It is happening because you are trying to send a header after there has already been some output form the script (not allowed). It tells you that the output came from line 16 of init.inc.php so you need to either remove that or move it after any headers.dmanzer2 wrote:to the init.inc.php and got this error when I tested the blog_post.php file: Warning: Cannot modify header information - headers already sent by (output started at /Volumes/Project/blog/core/init.inc.php:16) in /Volumes/Project/blog/blog_post.php on line 7
The other ones are just telling you that some variables you have tried to use are not there, this can only happen if they have not been defined. It could be the result of a query failing or maybe just a typo, trace the variable back from the point where the error is and see if you see where it went wrong. I can't see anything right away but I only have a quick look.
Re: Blog Tutorial - Invalid Post ID - blog-read.php
Thank you, Jacek and Temor. It works!!
Cheers,
David
Cheers,
David
Re: Blog Tutorial - Invalid Post ID - blog-read.php
No problemdmanzer2 wrote:Thank you, Jacek and Temor. It works!!
Cheers,
David