|
|
|
|
![]() ![]() |
Jul 2 2008, 06:26 AM
Post
#1
|
|
|
Super Member ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Group: [HOSTED] Posts: 411 Joined: 9-February 08 Member No.: 57,615 |
A really nice tutorial how to create a full news system, a good guide to follow.
The features are: 1. Admin Panel a) Add News c) Delete News 2. Comments a) Add Comments c) Edit Comments 3. BBCode a) Bold Tags/Italics Tags c) Strike Through Tags d) Link Tags e) Image Tags f) Code Tags g) E-Mail Tags At first, you need to create certain (2) tables which are news and comments for your system able to run: CODE CREATE TABLE `news` ( `id` int(10) NOT NULL auto_increment, `title` varchar(50) NOT NULL default '', `author` varchar(30) NOT NULL default '', `content` text NOT NULL, `postdate` varchar(100) NOT NULL default '', PRIMARY KEY (`id`) ) TYPE=MyISAM; CREATE TABLE `news_comments` ( `id` int(10) NOT NULL auto_increment, `author` varchar(30) NOT NULL default '', `content` text NOT NULL, `postdate` varchar(100) NOT NULL default '', `nid` varchar(30) NOT NULL default '', PRIMARY KEY (`id`) ) TYPE=MyISAM; Secondly, you need to create a file which is called "bbcode.php", I guess, you know for what, because the name of it sounds its function. CODE <? function bbcode($content){ // our nice bbcode function $content = nl2br(htmlspecialchars($content)); // our message that we want to put the bbcode in $bbcode = array( // The BBCode tags "'[b](.*?)[/b]'", // Bold Tag [b]Bold[/b] "'[i](.*?)[/i]'", // Italics Tag [i]Italics[/i] "'[u](.*?)[/u]'", // Underline Tag [u]Underlined[/u] "'[strike](.*?)[/strike]'", // Stroked Out Tag [strike]Strike[/strike] "'[img](.*?)[/img]'", // Image Tag "'[url=http://(.*?)](.*?)[/url]'", // Url Tag [url=http://yoursite.com]A website =D[/url] "'[url=http://(.*?)](.*?)[/url]'", // Another Url Tag [url]yoursite.com[url] ); $html = array( // The HTML counter part of the tags "<strong>1</strong>", // Bold "<em>1</em>", // Italics "<u>1</u>", // Underlined "<strike>1</strike>", // Stroked out text "<a href='1' target='_BLANK'>2</a>", // Url 1 opens in a new window "<a href='1' target='_BLANK'>1</a>", // Url 2 opens in a new window "<img border='0' src='1'>", // Image ); $content = preg_replace($bbcode, $html, $content); // replaces all BBCode tags with their HTML counter parts return nl2br($content); } ?> Thirdly, we need to create a page that may display our news, which is "news.php": CODE <?php ob_start(); // allows us to use cookies include("config.php"); // includes the config file include("bbcode.php"); // includes our bbcode file $q = mysql_query("SELECT * FROM news ORDER BY id DESC"); // querys the database if (mysql_num_rows($q) == "0") { // if there is nothing than we echo an error echo ("There is no news in the database!"); // opps nothing } while($r=mysql_fetch_array($q)){ // fetches array $id = $r['id']; // news id $title = $r['title']; // news title $author = $r['author']; // news author $postdate = $r['postdate']; // news date $content = bbcode($r['content']); // news content echo ("<tr> // displays our news <td><a href='news_comments.php?view=news&id=$id'>$title</a> Posted by <a href='/kurt/members.php?user=$author'>$author</a> At $postdate<br></td> </tr> <tr> <td>$content<br>[<a href='news_comments.php?view=addcomment&id=$id'>Add a comment</a>] [<a href='news_comments.php?view=news&id=$id'>View comments</a>]<br><br></td> </tr>"); } if($logged[username] && $logged[level] ==5) echo ("[<a href='news_admin.php'>Administrative Panel</a>]"); // if the user is an admin display a link to the admin panel if(!$logged[username]) echo ("[<a href='login.php'>Login</a>] [<a href='register.php'>Register</a>]"); // if the user is a guest display links to login or register ?> Fourthly, we need to create a file named "news_comments.php" in order to display comments: CODE <?php ob_start(); include("config.php"); if ($logged['username']){ switch($_GET['view']){ case 'news': $id = $_GET['id']; $select = "select * from news where id=$id"; $select2 = "select * from news_comments where nid=$id ORDER BY id DESC"; $getnews = mysql_query($select) or die(mysql_error()); $getcomments = mysql_query($select2); if (mysql_num_rows($getnews) == "0") { echo 'Unable to find the article in our database'; exit(); } $row = mysql_fetch_array($getnews) or die(mysql_error()); $nid = $row['id']; $ntitle = $row['title']; $ncontent = $row['content']; $nauthor = $row['author']; $postdate = $row['postdate']; echo ("<tr> <td>$ntitle Posted by <a href='members.php?user=$nauthor'>$nauthor</a> At $postdate<br></td> </tr> <tr> <td>$ncontent<br><br>Comments:<br></td> </tr>"); if (mysql_num_rows($getcomments) == "0") { echo("There are no comments!<br>[<a href='news_comments.php?view=addcomment&id=$id'>Add a comment</a>]"); } if($logged[username] && $logged[level] ==5) while($rowc= mysql_fetch_array($getcomments)){ $cauthor = $rowc['author']; $ccomment = $rowc['content']; $cdate = $rowc['postdate']; $cid = $rowc['id']; echo ("<tr> <td>Comment Posted by [<a href="news_admin.php?view=editcomment&id=$cid">Edit</a>] [<a href="news_admin.php?view=deletecomment&id=$cid">Delete</a>]<br></td> </tr> <tr> <td>$ccomment<br><br></td> </tr>"); } while($rowc= mysql_fetch_array($getcomments)){ $cauthor = $rowc['author']; $ccomment = $rowc['content']; $cdate = $rowc['postdate']; echo ("<tr> <td>Comment Posted by <a href='members.php?user=$nauthor'>$cauthor</a> At $cdate<br></td> </tr> <tr> <td>$ccomment<br><br></td> </tr>"); } echo("[<a href='news_comments.php?view=addcomment&id=$id'>Add a comment</a>]"); break; case 'addcomment': ob_start(); include("config.php"); $id = $_GET['id']; if(isset($_POST['add_comment'])) { $author = $logged['username']; $postdate = date('g:i A, l F j'); $comment = $_POST['comment']; $nid = $_GET['id']; $sql = "INSERT INTO news_comments ( `author` , `postdate`, `content`, `nid`) VALUES ('$author', '$postdate', '$comment', '$nid')"; $addblog = mysql_query($sql) or die(mysql_error()); header("Location: news.php"); } else { echo ("<form method='post' name='addcomment'> <tr> <td height='20'>Comment:</td> </tr> <tr> <td><br><textarea rows='5' cols='35' name='comment'>Type your comment here!</textarea><br> <input type='submit' name='add_comment' value='Submit'></td> </tr> </form>"); } } if (!isset($_GET['id'])) header("Location:news.php"); }else{ exit('Hey! you need to [<a href='http://www.utsagamingservers.com/kurt/cpanel?view=login'>login</a>] first!'); } ?> Fifthly, "news_admin.php" will be used for administration purposes: CODE <? ob_start(); include('config.php'); if ($logged['level'] == '5') { switch($_GET['view']) { case "addnews" : include("config.php"); if(isset($_POST['add_news'])) { $title=$_POST['title']; $author=$logged['username']; $postdate=date("g:i A, l F j"); $content=$_POST['content']; $sql = "INSERT INTO news (title, author, postdate, content) VALUES ('$title', '$author', '$postdate', '$content')"; $addnews = mysql_query($sql) or die(mysql_error()); header("Location:news.php"); } else { echo (" <form method='post' name='addnews'> <tr> <td height='20'>Article Title:<br></td> </tr> <tr> <td> <input class='content_box' Type='text' name='title' value='Article's Title'></td> </tr> <tr> <td height='20'><br>News Article:</td> </tr> <tr> <td><br><textarea rows='15' cols='95' name='content'>Type your article here!</textarea><br> <input type='submit' name='add_news' value='Submit'></td> </tr> </form>"); } break; case "editnews" : include("config.php"); $id = $_GET['id']; if(!$_GET['id']) { header("Location:news_admin.php"); } $select = mysql_query("select * from news where id=$id"); if (mysql_num_rows($select) == "0") { echo 'Unable to find the news article in the database!'; exit(); } if(isset($_POST['edit_news'])) { $title=$_POST['title']; $content=$_POST['content']; $sql = mysql_query("update news set title = '$title', content = '$content' where id = '$id'"); echo ("<meta http-equiv='Refresh' content='1; URL=news.php'/>Your article has been updated! You will now be redirected"); exit; } else { $get = mysql_query("select * from news where id=$id"); $get = mysql_fetch_array($get); echo (" <form method='post' name='editnews'> <tr> <td height='20'>Article Title:<br></td> </tr> <tr> <td> <input Type='text' name='title' value='$get[title]'></td> </tr> <tr> <td height='20'><br>News Article:</td> </tr> <tr> <td><br><textarea rows='15' cols='95' name='content'>$get[content]</textarea><br> <input type='submit' name='edit_news' value='Submit'></td> </tr> </form>"); } break; case "deletenews" : include("config.php"); $id = $_GET['id']; if(!$_GET['id']) { header("Location:news_admin.php"); } $select = mysql_query("select * from news where id=$id"); if (mysql_num_rows($select) == "0") { echo 'Unable to find the news article in the database!'; exit(); } $delete = mysql_query("DELETE FROM news WHERE id = '$id'") or die(mysql_error()); $delete2 = mysql_query("DELETE FROM news_comments WHERE nid = '$id'") or die(mysql_error()); echo("<meta http-equiv='Refresh' content='1; URL=news.php'/>Your article has been deleted! You will now be redirected"); break; case "deletecommet" : include("config.php"); $id = $_GET['id']; if(!$_GET['id']) { header("Location:news_admin.php"); } $select = mysql_query("select * from news_comments where id=$id"); if (mysql_num_rows($select) == "0") { echo 'Unable to find the comment in the database!'; exit(); } $delete = mysql_query("DELETE FROM `news_comments` WHERE id = '$id'") or die(mysql_error()); echo("<meta http-equiv='Refresh' content='1; URL=news.php'/>The comment has been deleted! You will now be redirected"); break; case "editcomment" : include("config.php"); $id = $_GET['id']; if(!$_GET['id']) { header("Location:news_admin.php"); } $select = mysql_query("select * from news_comments where id=$id"); if (mysql_num_rows($select) == "0") { echo 'Unable to find the comment in the database!'; exit(); } if(isset($_POST['edit_comment'])) { $comment=$_POST['comment']; $sql = mysql_query("update news_comments set content = '$content' where id = '$id'"); echo ("<meta http-equiv='Refresh' content='1; URL=news.php'/>The comment has been updated! You will now be redirected"); exit; } else { $get = mysql_query("select * from news_comments where id=$id"); $get = mysql_fetch_array($get); echo (" <form method='post' name='editcomment'> <tr> <td height='20'>Comment:</td> </tr> <tr> <td><br><textarea rows='15' cols='95' name='comment'>$get[content]</textarea><br> <input type='submit' name='edit_comment' value='Submit'></td> </tr> </form>"); } break; default: echo "Welcome to your news admin area $logged[username]! [<a href='news_admin.php?view=addnews'>Add News</a>]<br><br>"; $q = mysql_query("SELECT * FROM news ORDER BY id DESC"); if (mysql_num_rows($q) == "0") { echo ("There is no news in the database! [<a href='news_admin.php?view=addnews'>Add News</a>]"); } while($r=mysql_fetch_array($q)){ $id = $r['id']; $title = $r['title']; $author = $r['author']; $postdate = $r['postdate']; echo ("<tr> <td><a href='news_comments.php?view=news&id=$id'>$title</a> Posted by <a href='members.php?user=$author'>$author</a> At $postdate [<a href='news_admin.php?view=editnews&id=$id'>Edit</a>] [<a href='news_admin.php?view=deletenews&id=$id'>Delete</a>]<br></td> </tr>"); } break; } }else{ exit('Hey! where do you think your going?'); } ?> Lastly, you need create the configuration file that will access your database settings ("config.php"): CODE <?php $host = "localhost"; $dbuser = "username"; $dbpassword = "password"; $dbname = "table/database"; $connection = mysql_connect($host, $dbuser, $password) or die(mysql_error()); mysql_select_db($dbname) or die(mysql_error()); ?> That's it. Any replies to improve it are welcomed!!! |
|
|
|
Jul 2 2008, 09:43 PM
Post
#2
|
|
|
Newbie [Level 1] ![]() Group: [HOSTED] Posts: 18 Joined: 12-June 08 Member No.: 63,526 |
Nice tutorial, I'm going to try it out now. You should close your last code tag though. I'll repost when I finish.
|
|
|
|
Jul 3 2008, 02:55 AM
Post
#3
|
|
|
Privileged Member ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Group: [HOSTED] Posts: 603 Joined: 13-December 06 Member No.: 35,271 |
Love it, seriously do. You include everything needed here. Perhaps add some suggestive css styles to make things look all pretty
|
|
|
|
Jul 3 2008, 01:31 PM
Post
#4
|
|
|
Member [Level 3] ![]() ![]() ![]() ![]() ![]() ![]() Group: [HOSTED] Posts: 96 Joined: 23-June 08 Member No.: 64,048 |
This is very cool, I really would love to learn PHP and CSS in full. But I don't have the time! But this tutorial is great, but I use Wordpress so I don't exactly need it, but I could make mods to Wordpress now, using some of this knowledge!
Thanks, Sam. |
|
|
|
Jul 3 2008, 04:01 PM
Post
#5
|
|
|
Trap Grand Marshal Member ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Group: [HOSTED] Posts: 1,308 Joined: 11-January 06 From: Chennai, India Member No.: 16,932 |
Nice tutorial, great for learning PHP. but for serious use I'd suggest using a News Management System like
* CutePHP * EBA-News * Fusion News * PhpCow (Paid) * Absolute Engine or you can use Wordpress for publishing news like http://blog.omio.com/ or http://chinesemedicinenews.com/ |
|
|
|
![]() ![]() |
Similar Topics
| Topics | Topics | |
|---|---|---|
|
|
|