sella2009 Posted January 4, 2010 Share Posted January 4, 2010 Hi I am a total noob and I need help, I'm taking this tutorial on how to create a basic forum but there is something wrong with code and I get this error "Parse error: syntax error, unexpected $end in C:\xampp\htdocs\forum\view_topic.php on line 136" and here is the full code for view_topic.php <?php $host="localhost"; // Host name $username=""; // Mysql username $password=""; // Mysql password $db_name="test"; // Database name $tbl_name="forum_question"; // Table name // Connect to server and select databse. mysql_connect("$host", "$username", "$password")or die("cannot connect"); mysql_select_db("$db_name")or die("cannot select DB"); // get value of id that sent from address bar $id=$_GET['id']; $sql="SELECT * FROM $tbl_name WHERE id='$id'"; $result=mysql_query($sql); $rows=mysql_fetch_array($result); ?> <table width="400" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC"> <tr> <td><table width="100%" border="0" cellpadding="3" cellspacing="1" bordercolor="1" bgcolor="#FFFFFF"> <tr> <td bgcolor="#F8F7F1"><strong><? echo $rows['topic']; ?></strong></td> </tr> <tr> <td bgcolor="#F8F7F1"><? echo $rows['detail']; ?></td> </tr> <tr> <td bgcolor="#F8F7F1"><strong>By :</strong> <? echo $rows['name']; ?> <strong>Email : </strong><? echo $rows['email'];?></td> </tr> <tr> <td bgcolor="#F8F7F1"><strong>Date/time : </strong><? echo $rows['datetime']; ?></td> </tr> </table></td> </tr> </table> <BR> <?php $tbl_name2="forum_answer"; // Switch to table "forum_answer" $sql2="SELECT * FROM $tbl_name2 WHERE question_id='$id'"; $result2=mysql_query($sql2); while($rows=mysql_fetch_array($result2)){ ?> <table width="400" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC"> <tr> <td><table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF"> <tr> <td bgcolor="#F8F7F1"><strong>ID</strong></td> <td bgcolor="#F8F7F1">:</td> <td bgcolor="#F8F7F1"><? echo $rows['a_id']; ?></td> </tr> <tr> <td width="18%" bgcolor="#F8F7F1"><strong>Name</strong></td> <td width="5%" bgcolor="#F8F7F1">:</td> <td width="77%" bgcolor="#F8F7F1"><? echo $rows['a_name']; ?></td> </tr> <tr> <td bgcolor="#F8F7F1"><strong>Email</strong></td> <td bgcolor="#F8F7F1">:</td> <td bgcolor="#F8F7F1"><? echo $rows['a_email']; ?></td> </tr> <tr> <td bgcolor="#F8F7F1"><strong>Answer</strong></td> <td bgcolor="#F8F7F1">:</td> <td bgcolor="#F8F7F1"><? echo $rows['a_answer']; ?></td> </tr> <tr> <td bgcolor="#F8F7F1"><strong>Date/Time</strong></td> <td bgcolor="#F8F7F1">:</td> <td bgcolor="#F8F7F1"><? echo $rows['a_datetime']; ?></td> </tr> </table></td> </tr> </table><br> <? } $sql3="SELECT view FROM $tbl_name WHERE id='$id'"; $result3=mysql_query($sql3); $rows=mysql_fetch_array($result3); $view=$rows['view']; // if have no counter value set counter = 1 if(empty($view)){ $view=1; $sql4="INSERT INTO $tbl_name(view) VALUES('$view') WHERE id='$id'"; $result4=mysql_query($sql4); } // count more value $addview=$view+1; $sql5="update $tbl_name set view='$addview' WHERE id='$id'"; $result5=mysql_query($sql5); mysql_close(); ?> <BR> <table width="400" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC"> <tr> <form name="form1" method="post" action="add_answer.php"> <td> <table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF"> <tr> <td width="18%"><strong>Name</strong></td> <td width="3%">:</td> <td width="79%"><input name="a_name" type="text" id="a_name" size="45"></td> </tr> <tr> <td><strong>Email</strong></td> <td>:</td> <td><input name="a_email" type="text" id="a_email" size="45"></td> </tr> <tr> <td valign="top"><strong>Answer</strong></td> <td valign="top">:</td> <td><textarea name="a_answer" cols="45" rows="3" id="a_answer"></textarea></td> </tr> <tr> <td> </td> <td><input name="id" type="hidden" value="<? echo $id; ?>"></td> <td><input type="submit" name="Submit" value="Submit"> <input type="reset" name="Submit2" value="Reset"></td> </tr> </table> </td> </form> </tr> </table> anyone please help??? Quote Link to comment Share on other sites More sharing options...
Deoctor Posted January 4, 2010 Share Posted January 4, 2010 can u paste the mysql table structure and some sample data along.. Quote Link to comment Share on other sites More sharing options...
sella2009 Posted January 4, 2010 Author Share Posted January 4, 2010 can u paste the mysql table structure and some sample data along.. hi friend, thank you for ur reply, I got this tutorial from phpeasystepdotcom/workshopview.php?id=12 and I cant seem to get this code working Quote Link to comment Share on other sites More sharing options...
gizmola Posted January 4, 2010 Share Posted January 4, 2010 Yes no kidding, your script has a while loop up top, then drops into a mass block of html, and never drops back into a php block to close out the while loop. Therefore, PHP is helpfully telling you that you had an "Unexpected end". Seems you are missing part of the tutorial code, or you didn't cut and paste well. Quote Link to comment Share on other sites More sharing options...
sella2009 Posted January 4, 2010 Author Share Posted January 4, 2010 and I also tried testing something and I added a topic in my test forum but when I go to my main forum page it doesnt show anything, but when I go to my database phpmyadmin it shows it. and I also followed everything what the tutorial says. Quote Link to comment Share on other sites More sharing options...
gizmola Posted January 4, 2010 Share Posted January 4, 2010 and I also tried testing something and I added a topic in my test forum but when I go to my main forum page it doesnt show anything, but when I go to my database phpmyadmin it shows it. and I also followed everything what the tutorial says. $host="localhost"; // Host name $username=""; // Mysql username $password=""; // Mysql password $db_name="test"; // Database name $tbl_name="forum_question"; // Table name // Connect to server and select databse. mysql_connect("$host", "$username", "$password")or die("cannot connect"); mysql_select_db("$db_name")or die("cannot select DB"); // get value of id that sent from address bar $id=$_GET['id']; $sql="SELECT * FROM $tbl_name WHERE id='$id'"; $result=mysql_query($sql); $rows=mysql_fetch_array($result); ?> </pre> <table width="400" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC"> echo $rows['topic']; ?> echo $rows['detail']; ?> By : echo $rows['name']; ?> Email : echo $rows['email'];?> Date/time : echo $rows['datetime']; ?> </table> <br><br><br>$tbl_name2="forum_answer"; // Switch to table "forum_answer"<br><br>$sql2="SELECT * FROM $tbl_name2 WHERE question_id='$id'";<br>$result2=mysql_query($sql2);<br><br>while($rows=mysql_fetch_array($result2)){<br>?><br><table width="400" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC"> ID : echo $rows['a_id']; ?> Name : echo $rows['a_name']; ?> Email : echo $rows['a_email']; ?> Answer : echo $rows['a_answer']; ?> Date/Time : echo $rows['a_datetime']; ?> </table> <br><br><br>}<br><br>$sql3="SELECT view FROM $tbl_name WHERE id='$id'";<br>$result3=mysql_query($sql3);<br><br>$rows=mysql_fetch_array($result3);<br>$view=$rows['view'];<br><br>// if have no counter value set counter = 1<br>if(empty($view)){<br>$view=1;<br>$sql4="INSERT INTO $tbl_name(view) VALUES('$view') WHERE id='$id'";<br>$result4=mysql_query($sql4);<br>}<br><br>// count more value<br>$addview=$view+1;<br>$sql5="update $tbl_name set view='$addview' WHERE id='$id'";<br>$result5=mysql_query($sql5);<br><br>mysql_close();<br>?><br><br><br><table width="400" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC"> Name : Email : Answer : </table Ok, so I see the code was there, but with the short tags, I missed it. Maybe you don't have short tags on, and it's not parsing it. Make sure that all the start tags are <?php and not . I fixed in the code block above. Try it and see. Quote Link to comment Share on other sites More sharing options...
sella2009 Posted January 4, 2010 Author Share Posted January 4, 2010 and I also tried testing something and I added a topic in my test forum but when I go to my main forum page it doesnt show anything, but when I go to my database phpmyadmin it shows it. and I also followed everything what the tutorial says. <?php $host="localhost"; // Host name $username=""; // Mysql username $password=""; // Mysql password $db_name="test"; // Database name $tbl_name="forum_question"; // Table name // Connect to server and select databse. mysql_connect("$host", "$username", "$password")or die("cannot connect"); mysql_select_db("$db_name")or die("cannot select DB"); // get value of id that sent from address bar $id=$_GET['id']; $sql="SELECT * FROM $tbl_name WHERE id='$id'"; $result=mysql_query($sql); $rows=mysql_fetch_array($result); ?> <table width="400" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC"> <tr> <td><table width="100%" border="0" cellpadding="3" cellspacing="1" bordercolor="1" bgcolor="#FFFFFF"> <tr> <td bgcolor="#F8F7F1"><strong><? echo $rows['topic']; ?></strong></td> </tr> <tr> <td bgcolor="#F8F7F1"><? echo $rows['detail']; ?></td> </tr> <tr> <td bgcolor="#F8F7F1"><strong>By :</strong> <? echo $rows['name']; ?> <strong>Email : </strong><? echo $rows['email'];?></td> </tr> <tr> <td bgcolor="#F8F7F1"><strong>Date/time : </strong><? echo $rows['datetime']; ?></td> </tr> </table></td> </tr> </table> <BR> <?php $tbl_name2="forum_answer"; // Switch to table "forum_answer" $sql2="SELECT * FROM $tbl_name2 WHERE question_id='$id'"; $result2=mysql_query($sql2); while($rows=mysql_fetch_array($result2)){ ?> <table width="400" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC"> <tr> <td><table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF"> <tr> <td bgcolor="#F8F7F1"><strong>ID</strong></td> <td bgcolor="#F8F7F1">:</td> <td bgcolor="#F8F7F1"><? echo $rows['a_id']; ?></td> </tr> <tr> <td width="18%" bgcolor="#F8F7F1"><strong>Name</strong></td> <td width="5%" bgcolor="#F8F7F1">:</td> <td width="77%" bgcolor="#F8F7F1"><? echo $rows['a_name']; ?></td> </tr> <tr> <td bgcolor="#F8F7F1"><strong>Email</strong></td> <td bgcolor="#F8F7F1">:</td> <td bgcolor="#F8F7F1"><? echo $rows['a_email']; ?></td> </tr> <tr> <td bgcolor="#F8F7F1"><strong>Answer</strong></td> <td bgcolor="#F8F7F1">:</td> <td bgcolor="#F8F7F1"><? echo $rows['a_answer']; ?></td> </tr> <tr> <td bgcolor="#F8F7F1"><strong>Date/Time</strong></td> <td bgcolor="#F8F7F1">:</td> <td bgcolor="#F8F7F1"><? echo $rows['a_datetime']; ?></td> </tr> </table></td> </tr> </table><br> <?php } $sql3="SELECT view FROM $tbl_name WHERE id='$id'"; $result3=mysql_query($sql3); $rows=mysql_fetch_array($result3); $view=$rows['view']; // if have no counter value set counter = 1 if(empty($view)){ $view=1; $sql4="INSERT INTO $tbl_name(view) VALUES('$view') WHERE id='$id'"; $result4=mysql_query($sql4); } // count more value $addview=$view+1; $sql5="update $tbl_name set view='$addview' WHERE id='$id'"; $result5=mysql_query($sql5); mysql_close(); ?> <BR> <table width="400" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC"> <tr> <form name="form1" method="post" action="add_answer.php"> <td> <table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF"> <tr> <td width="18%"><strong>Name</strong></td> <td width="3%">:</td> <td width="79%"><input name="a_name" type="text" id="a_name" size="45"></td> </tr> <tr> <td><strong>Email</strong></td> <td>:</td> <td><input name="a_email" type="text" id="a_email" size="45"></td> </tr> <tr> <td valign="top"><strong>Answer</strong></td> <td valign="top">:</td> <td><textarea name="a_answer" cols="45" rows="3" id="a_answer"></textarea></td> </tr> <tr> <td> </td> <td><input name="id" type="hidden" value="<? echo $id; ?>"></td> <td><input type="submit" name="Submit" value="Submit"> <input type="reset" name="Submit2" value="Reset"></td> </tr> </table> </td> </form> </tr> </table> Ok, so I see the code was there, but with the short tags, I missed it. Maybe you don't have short tags on, and it's not parsing it. Make sure that all the start tags are <?php and not <?. I fixed in the code block above. Try it and see. thanks I tried your method and it worked however i am still facing a problem, every time I try to create a topic in the forum, it says that I successfully created the topic with no error messages however when I go to the main forum page it doesnt show anything but in the database (phpmyadmin) it shows it all inside the tables. Here is the code for my main forum page <?php $host="localhost"; // Host name $username="project"; // Mysql username $password="123456"; // Mysql password $db_name="project"; // Database name $tbl_name="forum_question"; // Table name // Connect to server and select databse. mysql_connect("$host", "$username", "$password")or die("cannot connect"); mysql_select_db("$db_name")or die("cannot select DB"); $sql="SELECT * FROM $tbl_name ORDER BY id DESC"; // OREDER BY id DESC is order result by descending $result=mysql_query($sql); ?> <table width="90%" border="0" align="center" cellpadding="3" cellspacing="1" bgcolor="#CCCCCC"> <tr> <td width="6%" align="center" bgcolor="#E6E6E6"><strong>#</strong></td> <td width="53%" align="center" bgcolor="#E6E6E6"><strong>Topic</strong></td> <td width="15%" align="center" bgcolor="#E6E6E6"><strong>Views</strong></td> <td width="13%" align="center" bgcolor="#E6E6E6"><strong>Replies</strong></td> <td width="13%" align="center" bgcolor="#E6E6E6"><strong>Date/Time</strong></td> </tr> <?php while($rows=mysql_fetch_array($result)){ // Start looping table row ?> <tr> <td bgcolor="#FFFFFF"><? echo $rows['id']; ?></td> <td bgcolor="#FFFFFF"><a href="view_topic.php?id=<? echo $rows['id']; ?>"><? echo $rows['topic']; ?></a><BR></td> <td align="center" bgcolor="#FFFFFF"><? echo $rows['view']; ?></td> <td align="center" bgcolor="#FFFFFF"><? echo $rows['reply']; ?></td> <td align="center" bgcolor="#FFFFFF"><? echo $rows['datetime']; ?></td> </tr> <?php // Exit looping and close connection } mysql_close(); ?> <tr> <td colspan="5" align="right" bgcolor="#E6E6E6"><a href="create_topic.php"><strong>Create New Topic</strong> </a></td> </tr> </table> and here is the code for adding a topic <?php $host="localhost"; // Host name $username="project"; // Mysql username $password="123456"; // Mysql password $db_name="project"; // Database name $tbl_name="forum_question"; // Table name // Connect to server and select database. mysql_connect("$host", "$username", "$password")or die("cannot connect"); mysql_select_db("$db_name")or die("cannot select DB"); // get data that sent from form $topic=$_POST['topic']; $detail=$_POST['detail']; $name=$_POST['name']; $email=$_POST['email']; $datetime=date("d/m/y h:i:s"); //create date time $sql="INSERT INTO $tbl_name(topic, detail, name, email, datetime)VALUES('$topic', '$detail', '$name', '$email', '$datetime')"; $result=mysql_query($sql); if($result){ echo "Successful<BR>"; echo "<a href=main_forum.php>View your topic</a>"; } else { echo "ERROR"; } mysql_close(); ?> Quote Link to comment Share on other sites More sharing options...
Buddski Posted January 4, 2010 Share Posted January 4, 2010 $result=mysql_query($sql) or trigger_error(mysql_error()); instead of $result=mysql_query($sql); on your main forum page.. and as always make sure error reporting is turned on error_reporting(E_ALL); ini_set('display_errors',1); at the top of your script inside the PHP tags. Quote Link to comment Share on other sites More sharing options...
sella2009 Posted January 4, 2010 Author Share Posted January 4, 2010 $result=mysql_query($sql) or trigger_error(mysql_error()); instead of $result=mysql_query($sql); on your main forum page.. and as always make sure error reporting is turned on error_reporting(E_ALL); ini_set('display_errors',1); at the top of your script inside the PHP tags. I tried what you said but I still get no error and it still wont show anything Quote Link to comment Share on other sites More sharing options...
Buddski Posted January 4, 2010 Share Posted January 4, 2010 Try this as your looping block <?php if (mysql_num_rows($result) > 0) { while($rows=mysql_fetch_array($result)){ // Start looping table row ?> <tr> <td bgcolor="#FFFFFF"><?php echo $rows['id']; ?></td> <td bgcolor="#FFFFFF"><a href="view_topic.php?id=<?php echo $rows['id']; ?>"><?php echo $rows['topic']; ?></a><BR></td> <td align="center" bgcolor="#FFFFFF"><?php echo $rows['view']; ?></td> <td align="center" bgcolor="#FFFFFF"><?php echo $rows['reply']; ?></td> <td align="center" bgcolor="#FFFFFF"><?php echo $rows['datetime']; ?></td> </tr> <?php // Exit looping and close connection } } else { echo '<tr><td colspan="5">No records found</td></tr>'; } mysql_close(); ?> Quote Link to comment Share on other sites More sharing options...
sella2009 Posted January 4, 2010 Author Share Posted January 4, 2010 Try this as your looping block <?php if (mysql_num_rows($result) > 0) { while($rows=mysql_fetch_array($result)){ // Start looping table row ?> <tr> <td bgcolor="#FFFFFF"><?php echo $rows['id']; ?></td> <td bgcolor="#FFFFFF"><a href="view_topic.php?id=<?php echo $rows['id']; ?>"><?php echo $rows['topic']; ?></a><BR></td> <td align="center" bgcolor="#FFFFFF"><?php echo $rows['view']; ?></td> <td align="center" bgcolor="#FFFFFF"><?php echo $rows['reply']; ?></td> <td align="center" bgcolor="#FFFFFF"><?php echo $rows['datetime']; ?></td> </tr> <?php // Exit looping and close connection } } else { echo '<tr><td colspan="5">No records found</td></tr>'; } mysql_close(); ?> thank you so much friend, finally it shows now Quote Link to comment Share on other sites More sharing options...
Buddski Posted January 4, 2010 Share Posted January 4, 2010 Your problem was clearly what gizmola has said and you didnt replace the short tags with the full ones in your loop.. Quote Link to comment Share on other sites More sharing options...
sella2009 Posted January 4, 2010 Author Share Posted January 4, 2010 Your problem was clearly what gizmola has said and you didnt replace the short tags with the full ones in your loop.. oh ok sorry about that Quote Link to comment Share on other sites More sharing options...
Buddski Posted January 4, 2010 Share Posted January 4, 2010 No need to be sorry.. Just a handy hint for future reference.. We all have to start somewhere Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.