PHP Tutorial: Blog(Including commenting)
PHP Tutorial: Blog(Including commenting)
Hello,
Ive tried to search if the answer was already in this forum or not, or on the youtube comments but I couldnt find it.
Basicly my problem occured midway part 5 of the tutorial.
blog_read.php page, when I try and run to see if it works I get "Invalid post ID."
Any help would be appriciated.
Ive tried to search if the answer was already in this forum or not, or on the youtube comments but I couldnt find it.
Basicly my problem occured midway part 5 of the tutorial.
blog_read.php page, when I try and run to see if it works I get "Invalid post ID."
Any help would be appriciated.
Re: PHP Tutorial: Blog(Including commenting)
Please post all/the problem parts of your code using the syntax buttons above the editor.
Remember to remove any SQL passwords you may have in your code.
Remember to remove any SQL passwords you may have in your code.
Re: PHP Tutorial: Blog(Including commenting)
<?php include('core/init.inc.php'); ?> <head> <title>Blog</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></p> <hr /> <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>
Re: PHP Tutorial: Blog(Including commenting)
I don't think isset() should be put like that, try replacing (at line 13):
isset($_GET['pid'])=== falseto
!isset($_GET['pid'])
Re: PHP Tutorial: Blog(Including commenting)
All the files pleaseJeabs wrote:Do you want me to post my whole code?
Re: PHP Tutorial: Blog(Including commenting)
I made my own post and replied to it, but figured I would share it here as well because it is on the same topic... while I realize that you did not make this exact mistake, it does emphasize that it could be something small and difficult to find. Hang in there!
I figured it out in the end, it was something stupid. on my form action="" i'm used to putting in the page i'm coding on (ie: blog_read.php if that is the page the form is on). In the tutorial he has this field blank (<form action="" method="POST">). After I fixed this it worked perfectly.
Just clearing data that I mistakenly placed in the quotes next to action fixed this problem for me.
I figured it out in the end, it was something stupid. on my form action="" i'm used to putting in the page i'm coding on (ie: blog_read.php if that is the page the form is on). In the tutorial he has this field blank (<form action="" method="POST">). After I fixed this it worked perfectly.
Just clearing data that I mistakenly placed in the quotes next to action fixed this problem for me.
<form action="" method="post">
Re: PHP Tutorial: Blog(Including commenting)
blog_read.php
<?php include('core/init.inc.php'); ?> <head> <title>Blog</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 count($post['comments']); ?>)</h4> <hr /> <p></p> <hr /> <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>blog_list.php
<?php include('core/init.inc.php'); ?> <head> <title>Blog</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['preview'];?></p> <?php } ?> </div> </body>init.inc.php
<?php mysql_connect('127.0.0.1','root', ''); mysql_select_db('blog'); include('inc/post.inc.php'); include('inc/comments.inc.php'); ?>comments.inc.php // sorry for the dutch code commeting.
<?php // laad alle reacties van een 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; } // voegt een reactie toe. function add_comment($pid, $user, $body){ if(valid_pid($pid) === false){ return false; } $pid = (int)$pid; $user = mysql_real_escape_string(htmlentites($user)); $body = mysql_real_escape_string(nl2br(htmlentites($body))); mysql_query("INSERT INTO `comments` ( `post_id`, `comment_user`, `comment_body`, `comments_date`) VALUES ({$pid}, '{$user}', '{$body}', NOW())"); return true; } ?>post.inc.php
<?php // controleert of opgegeven id in de tabel staat. 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; } } // laad alle 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; } // laad een post uit de tabel 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; } // voegt een nieuwe blog post toe. function add_post($name, $title, $body){ $name = mysql_real_escape_string(htmlentites($name)); $title = mysql_real_escape_string(htmlentites($title)); $body = mysql_real_escape_string(nl2br(htmlentites($body))); mysql_query("INSERT INTO `posts`( `post_user`, `post_title`,`post_body`, `post_date`) VALUES ( '{$name}', '{$title}','{$body}', NOW()"); } ?>I am stuck in the middle of part 005 of the tutorial so I havent touched blog_post.php yet.
-
- Posts: 205
- Joined: Mon Jul 09, 2012 11:13 pm
Re: PHP Tutorial: Blog(Including commenting)
if (!isset($_GET['pid']) === falseThe way you have this now is like saying, if it returns false on $_GET['pid'] being set and is identical to false. Remove the === false as the ! is doing all of that
<?php while(!$succeed = try()); ?>
Re: PHP Tutorial: Blog(Including commenting)
Removed the === false bit got the same error, I didnt use to have ! but some one suggest it before to see if it would work then
-
- Posts: 205
- Joined: Mon Jul 09, 2012 11:13 pm
Re: PHP Tutorial: Blog(Including commenting)
Ok. Is pid in the URL properly? ex: http://domain.com/blog_read.php?pid=21
If so, does the pid exist in the database?
If so, does the pid exist in the database?
<?php while(!$succeed = try()); ?>
Re: PHP Tutorial: Blog(Including commenting)
http://localhost/blog/blog_read.php?pid=21
gives me 4 errors:
( ! ) Notice: Undefined index: pid in C:\wamp\www\blog\blog_read.php on line 14
Call Stack
( ! ) Notice: Undefined index: pid in C:\wamp\www\blog\blog_read.php on line 17
( ! ) Notice: Undefined index: title in C:\wamp\www\blog\blog_read.php on line 20
By
( ! ) Notice: Undefined index: user in C:\wamp\www\blog\blog_read.php on line 21
on
( ! ) Notice: Undefined index: date in C:\wamp\www\blog\blog_read.php on line 21
http://localhost/blog/blog_read.php?pid=1
Only gives me Invalid post ID
gives me 4 errors:
( ! ) Notice: Undefined index: pid in C:\wamp\www\blog\blog_read.php on line 14
Call Stack
( ! ) Notice: Undefined index: pid in C:\wamp\www\blog\blog_read.php on line 17
( ! ) Notice: Undefined index: title in C:\wamp\www\blog\blog_read.php on line 20
By
( ! ) Notice: Undefined index: user in C:\wamp\www\blog\blog_read.php on line 21
on
( ! ) Notice: Undefined index: date in C:\wamp\www\blog\blog_read.php on line 21
http://localhost/blog/blog_read.php?pid=1
Only gives me Invalid post ID