![Shocked :shock:](./images/smilies/icon_eek.gif)
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(
array(2) { ["user"]=> string(9) "title box" ["body"]=> string(20) "this is the body box" }
so hope fully i've just missed a comma or something. heres the rest, for your perusal
thanks in advance 8)
i did change the page names. and the html's a bit basic.
Comments;
[syntax=php]<?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;
}
?>
[/syntax]
posts;
[syntax=php]<?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())");
}
?>
[/syntax]
bloglist;
[syntax=php]
<?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>
[/syntax]
blogpost;
[syntax=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: 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>
[/syntax]
blogread;
[syntax=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: 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>
[/syntax]
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