Page 1 of 1

Blog script: View comments feature won't work [PLS HELP]

Posted: Sun Apr 04, 2004 10:18 pm
by ~fleece~
Hi everyone :)

I'm new to PHP and I usually get by with the help of the manual. I've made a blog script based on a tutorial and added some of my own features. I''m currently working on the 'Add and View comments' feature. I just use a flatfile storage since I don't know mySQL yet and I am able to add comments to blog entries (I know coz I checked the actual txt file) but somehow, I cannot view them on the web. :( I find that I am able to view them if I choose to view the comments all at once but when viewing only the comments for the specific entry, they won't show up! I've checked and rechecked my syntax and nothing seems to be wrong...but of course, I can never be sure.

Here are the PHP codes:

----------The Main Blog Script----------

Code: Select all

<?php
$no_comments = 0; //number of comments
$opFile = "blog.txt";

$fp = fopen($opFile,"r");
  $data = fread($fp, filesize($opFile));
fclose($fp);

$line = explode("\n", $data);
$i = count($line);

$cmntfile = "comments.txt";

$opncfile = fopen($cmntfile, "r");
 $cmntdata = fread($opncfile, filesize($cmntfile));
fclose($opncfile);

for ($n=$i-2 ; $n > -1 ; $n-- )
{
 $blog = explode("|", $line[$n]);

    if (isset($blog[0]))
     {
      echo "<h3>Date: ".$blog[0]."</h3>";
      echo "<h3>Subject: ".$blog[1]."</h3>";
      echo "<h3>Entry:</h3> <p>".$blog[2]."</p>";
      echo "<h3>Mood: ".$blog[3]."</h3>";
      echo "<img src='$blog[4]'/><br/><br/>";
      $identity = $n;
	  $centries = explode("\n", $cmntdata);
	  $l = count($centries);

	  for ($m=$l-2 ; $m > -1 ; $m-- )
            {
              $comment = explode("|", $centries);
              if ($comment[6]==$identity)
               {$no_comments = $no_comments + 1;}
             }
      echo "<form name='viewcomments' action='viewcomments.php' method='POST'>
<input type='text' readonly='readonly' name='identifier' rows='1' cols='1' style='width:11px; font-family:verdana,sans-serif; font-size:10px; background-color:#000000; border-style:none;' value='$n'/>
<input type='submit' name='viewcomments' 'rows='1' cols='4' style='width:155px; font-family:verdana,sans-serif; font-size:10px; color:#999966; background-color:#000000; border-color:#999966;' value='$no_comments Voices Have Spoken'/></form>
<form name='addcomments' action='addcomment.php' method='POST'>
<input type='text' readonly='readonly' name='identifier2' rows='1' cols='1' style='width:11px; font-family:verdana,sans-serif; font-size:10px; background-color:#000000; border-style:none;' value='$n'/>
<input type='submit' name='addcomment' rows='1' cols='4' style='width:65px; font-family:verdana,sans-serif; font-size:10px; color:#999966; background-color:#000000; border-color:#999966;' value='Speak'/></form>";
      echo "<br/><hr/><br/>";
     }
   $no_comments = 0;
 }
?>
-------The Add Comment Form--------

Code: Select all

<?php
$blogfile="blog.txt";

$opnfile = fopen($blogfile,"r");
  $contents = fread($opnfile, filesize($blogfile));
fclose($opnfile);

$entries = explode("\n", $contents);

$identity = $_POST['identifier2'];

$blog = explode("|", $entries[$identity]);

  if (isset($blog[0]))
   {
    echo "<h3>Subject: ".$blog[1]."</h3>";
    echo "<h3>Entry:</h3> <p>".$blog[2]."</p>";
   }

echo "<form action='post_cmnt.php' method='POST' name='postcomment'>
<input type='text' readonly='readonly' name='identified' rows='1' cols='1' style='width:11px; font-family:verdana,sans-serif; font-size:10px; background-color:#000000; border-style:none;' value='$identity'/>
<h3>Name:<h3><input type='text' name='name' size='45' maxlength='40' style='width:350px' tabindex='1' value='' />
<h3>Message:<h3><textarea name='message' rows='10' cols='35' wrap='virtual' style='width:350px' tabindex='3'></textarea>
<h3>Site:<h3><input type='text' name='site' size='45' maxlength='60' style='width:350px' tabindex='4' value='http://' />
<p>Note: If you do not have a site, please leave the above field blank.</p>
<h3>E-mail:<h3> <p><input type='text' name='mail' size='45' maxlength='40' style='width:350px' tabindex='5' value='' /></p>
<p><input type='radio' name='hmail' value='1'/>Hide      <input type='radio' name='hmail' value='2'/>Display</p>
<p class='close'><input type='submit' 'rows='1' cols='5' style='width:105px; font-family:verdana,sans-serif; font-size:10px; color:#999966; background-color:#000000; border-color:#999966;' value='I have spoken' name='addcmnt'/></p>
</form>";
?>
----------The Post Comment Script-----------

Code: Select all

<?php
$cmntfile = "comments.txt";

if (!isset($message)) {
$marker = $_POST['identified'];
$name = $_POST['name'];
$message = $_POST['message'];
$site  = $_POST['site'];
$mail  = $_POST['mail'];
}
switch($_POST['hmail'])
 {
  case 1:
   $check = "hide";
   break;
  case 2:
   $check = "";
   break;
 }
$name = htmlspecialchars(trim(stripslashes($name)));
$message = htmlspecialchars(trim(stripslashes($message)));
$site = htmlspecialchars(trim(stripslashes($site)));
$mail = htmlspecialchars(trim(stripslashes($mail)));
$message = trim($message);
$postdate = date('d M Y');
$message = str_replace("\n", "<br/>", $message);
$message = str_replace("\r", "", $message);
$message = str_replace("|", "&brvbar;", $message);
$cmnt = $postdate."|".$name."|".$message."|".$site."|".$mail."|".$check."|".$marker."|\n" ;

$content = fopen($cmntfile, "a");
fwrite($content, $cmnt);
fclose($content);
echo "<br/>";
echo "<h1>Your comment has been added.</h1>";
?>
-------The View Comments Script--------

Code: Select all

<?php
$blogfile = "blog.txt";

$opnbfile = fopen($blogfile,"r");
  $contents = fread($opnbfile, filesize($blogfile));
fclose($opnbfile);

$cmntfile = "comments.txt";

$opncfile = fopen($cmntfile,"r");
  $cmntcontents = fread($opncfile, filesize($cmntfile));
fclose($opncfile);

$identity = $_POST['identifier'];

$bentries = explode("\n", $contents);
$centries = explode("\n", $cmntcontents);
$i = count($centries);
  $blog = explode("|", $bentries[$identity]);

if (isset($blog[0]))
   {
    echo "<h3>Date: ".$blog[0]."</h3>";
    echo "<h3>Subject: ".$blog[1]."</h3>";
    echo "<h3>Entry:</h3> <p>".$blog[2]."</p>";
    echo "<h3>Mood: ".$blog[3]."</h3>";
    echo "<img src='$blog[4]'/><br/><br/>";
    echo "<h2>Of they who have spoken...</h2><br/>";

for ($n=0; $n<i; $n++) {
 $comment = explode("|", $centries[$n]);
 if (isset($comment[0])AND $comment[6]==$identity)
 { echo "<h3>Date: ".$comment[0]."</h3>";
   echo "<h3>Name: ".$comment[1]."</h3>";
   echo "<h3>Message:</h3> <p>".$comment[2]."</p>";
   if ($comment[3]!="")
    {echo "<h3>Site:</h3><p>".$comment[3]."</p>";}
   if ($comment[5]!="hide")
    {echo "<h3>E-mail:</h3><p>".$comment[4]."</p>";}
   echo "<br/>";
  }
}
}
?>
I'm very sorry for the long post. And I know my codes are pretty "raw" but please understand that I really am a beginner and I'm just trying to make these things work. :?

I would also appreciate any helpful suggestions on how to make my script more efficient or just plain better.

Thanks in advance! :)

Posted: Sun Apr 04, 2004 10:32 pm
by PrObLeM
my suggestion would be to use mysql instead of flat files

Posted: Mon Apr 05, 2004 5:34 pm
by ~fleece~
I would but my host doesn't allow it. :(