PHP blog tut, post and comments fail insert [Solved]
Posted: Mon Oct 22, 2012 11:04 pm
Hi, i've been typing this blog in for weeks now. (i'm a bit slow)
i've worked out a load of errors already - backticks, basic connection etc.
(so +1 for not releasing the code) but i'm stumped.
i keep scanning the code and watching the youtube vids, but my eyes don't seem to work anymore.
in phpmyadmin i've added some dummy data, 'get' works fine. if i type it into MySQL, no probs.
i've added some var dumps(for POST) to see if the form is picking up the data and it seems so.
adding a comment does nothing, takes me to blogread?pid=(n) but no php shows. if i hit 'enter' in the browser location bar, the post comes up but no comments(i've tested the mysql functions in mysql putting real data instead of php vars)
testing the blogpost page lets me post data according to the var dump; but never arrives in the table 8(
thanks in advance 8)
i did change the page names. and the html's a bit basic.
Comments;
posts;
anyway good hunting
i've worked out a load of errors already - backticks, basic connection etc.
(so +1 for not releasing the code) but i'm stumped.
i keep scanning the code and watching the youtube vids, but my eyes don't seem to work anymore.
in phpmyadmin i've added some dummy data, 'get' works fine. if i type it into MySQL, no probs.
i've added some var dumps(for POST) to see if the form is picking up the data and it seems so.
adding a comment does nothing, takes me to blogread?pid=(n) but no php shows. if i hit 'enter' in the browser location bar, the post comes up but no comments(i've tested the mysql functions in mysql putting real data instead of php vars)
testing the blogpost page lets me post data according to the var dump; but never arrives in the table 8(
so hope fully i've just missed a comma or something. heres the rest, for your perusalarray(2) { ["user"]=> string(9) "title box" ["body"]=> string(20) "this is the body box" }
thanks in advance 8)
i did change the page names. and the html's a bit basic.
Comments;
<?php // gets comments for a 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; } 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(nl2lb(htmlentities($body))); mysql_query("INSERT INTO `comments` (`post_id`, `comment_user`, `comment_body`, `comment_date`) VALUES ({$pid}, '{$user}', '{$body}', NOW())"); echo mysql_error(); return true; } ?>
posts;
<?php // checks for a valid post 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; } } // get summary of all 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; } //Get the post and comments 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; } 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())"); } ?>bloglist;
<?php include('core/init.inc.php'); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://ww.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>get blogged</title> </head> <body> <div> <?php $posts = get_posts(); foreach ($posts as $post){ ?> <h2><a href="blogread.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> </html>blogpost;
<?php include('core/init.inc.php'); if (isset($_POST['user'], $_POST['title'], $_POST['body'])){ add_post($_POST['user'], $_POST['title'], $_POST['body']); header('location: bloglist.php'); die(); } ?> <?php var_dump( $_POST ); ?> <html> <head> <title>Blog read</title> </head> <body> <div> <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="user" id="user" /></p> <p> <textarea name="body" rows="20" cols="60"></textarea> </p> <p> <input type="submit" value="Add Comment" /> </p> </form> </div> </body> </html>blogread;
<?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: blogread.php?pid={$_GET['pid']}"); } else { header('Location: bloglist.php'); } die(mysql_error()); } var_dump( $_POST ); ?> <html> <head> <title>Blog read</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']; ?> </h4> <h4>(<?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>also as i'm hosting it myself - i had a look at the php.ini, but all seemed ok. not sure if i needed to mod the .htaccess file. like Jacek did.
anyway good hunting