Welcome Guest ( Log In | Register)



 
Reply to this topicStart new topic
> News System (cms), .::DeadMan::. Paraphrased by alex1985
alex1985
post 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

cool.gif Edit News

c) Delete News

2. Comments

a) Add Comments

cool.gif Delete Comments

c) Edit Comments

3. BBCode

a) Bold Tags/Italics Tags

cool.gif Underlined 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!!!
Go to the top of the page
 
+Quote Post
BuBBaG
post 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.
Go to the top of the page
 
+Quote Post
Forbez
post 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 biggrin.gif
Go to the top of the page
 
+Quote Post
samlockart
post 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.
Go to the top of the page
 
+Quote Post
delivi
post 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/
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic

Collapse

> Similar Topics

Topics Topics


 



-