Danas cemo u maloj skoli php-ja napraviti jednostavan news system 
Naravno, sve vesti bice skladistene u mysql bazi, nazovimo je db_news (logicno, zar ne). Evo mysql strukturne sheme za vasu bazu podataka:
Sada, kada imamo bazu, uradicemo news skripticu. News system nam se sastoji iz dva dela: iz fajla index.php gde pregledamo sve vesti i iz admin.php gde dodajemo i brisemo vesti. Pozeljno bi bilo fajl admin.php zastititi preko nekog login systema ili jednostavno staviti admin.php u zaseban dir pa onda uraditi .htaccess za taj dir. Sve to u cilju da bi ste samo vi mogli da dodajete i brisete vesti i niko vise.
Prvo cemo uraditi admin.php. U ovom fajlu potrebno je izlistati sve vesti i pored svake vesti dodati link "Delete" kako biste mogli da obrisete neku vest koja je zastarela ili iz nekog drugog razloga.
Sada na red dolazi fajl post_news.php koji sluzi da nam proveri podatke i potom unese novu vestu bazu podataka:
Dakle, za sada imamo admin.php i post_news.php. Red je da uradimo i stranicu za brisanje vesti -- del.php:
Eto sada imamo sva tri fajla koja sacinjavaju administratorski deo nase news skripte, dakle admin.php, post_news.php kao i del.php.
Kao sto znamo, potrebno je jos samo da odradimo i index.php -- stranica na kojoj ce sve nase vesti biti izlistane i koju ce drugi ljudi moci da vide bez problema. To nece biti tesko s obzirom da smo vec izlistali vesti u fajlu admin.php.
Dakle:
Obrattite paznju da se svo vreme u igru ubacuje i fajl inc.php koji se non stop includuje. U fajl inc.php trebate da stavite deklaraciju vase baze podatake i povezivanje na istu. Takodje u fajlu inc.php nalazi se i funkcija za lepo formatiranje datuma od mysql funkcije timestamp(14). inc.php bi izlgedao npr:
E to bi bilo to
Nadam se da nije zamrseno i da ce mnogima ovo pomoci da naprave svoj news system i stave to na svoj sajt. Ovo je nesto najjednostavnije, imalo bi tu jos dosta drugih stvari da se uradi, kao npr: mogucnost editovanja vesti, mogucnost logovanja u bazu imena autora koji je napisao odredjenu vest, onda lepse formatiranje prikaza vesti itd itd... To ostaje na vama da doradite svoj news system kako zelite.
Ziveli!
Naravno, sve vesti bice skladistene u mysql bazi, nazovimo je db_news (logicno, zar ne). Evo mysql strukturne sheme za vasu bazu podataka:
Code:
CREATE TABLE db_news (
id int(10) NOT NULL auto_increment,
text blob NOT NULL,
datum timestamp(14) NOT NULL,
title varchar(100) NOT NULL default '',
PRIMARY KEY (id)
) ENGINE=MyISAM;
CREATE TABLE db_news (
id int(10) NOT NULL auto_increment,
text blob NOT NULL,
datum timestamp(14) NOT NULL,
title varchar(100) NOT NULL default '',
PRIMARY KEY (id)
) ENGINE=MyISAM;
Sada, kada imamo bazu, uradicemo news skripticu. News system nam se sastoji iz dva dela: iz fajla index.php gde pregledamo sve vesti i iz admin.php gde dodajemo i brisemo vesti. Pozeljno bi bilo fajl admin.php zastititi preko nekog login systema ili jednostavno staviti admin.php u zaseban dir pa onda uraditi .htaccess za taj dir. Sve to u cilju da bi ste samo vi mogli da dodajete i brisete vesti i niko vise.
Prvo cemo uraditi admin.php. U ovom fajlu potrebno je izlistati sve vesti i pored svake vesti dodati link "Delete" kako biste mogli da obrisete neku vest koja je zastarela ili iz nekog drugog razloga.
Code:
<?
//admin.php
include "db.php";
//display all the news
$result=mysql_query("select count(id) from db_news", $db);
while ($myrow=mysql_fetch_row($result)) {
echo " (<b>$myrow[0]</B> posts in the news)<p>";
}
echo "<TABLE border='1' bordercolor='#E2E2E2' cellspacing='0' cellpadding='1' width='100%'><tr bgcolor='#C0C0C0' bordercolor='1'><B><td><B>Date</B></td><td><B>News</B></td></B></tr>";
$result=mysql_query("select * from db_news order by datum desc", $db) or die (mysql_error());
while ($myrow=mysql_fetch_row($result)) {
$txt=nl2br($myrow[1]);
echo "
<TR bordercolor='1'>";
make_date1();
echo "
<TD>$date1</TD>
<TD>$myrow[3] - $txt [<a href='del.php?number=$myrow[0]'>Delete it!</a>]<p></td>
</TR>
";
}
echo "</table>";
echo "<CENTER><form action='post_news.php' method='post'>
Title: <INPUT TYPE='text' NAME='title'><p>
News: <TEXTAREA NAME='news' ROWS='10' COLS=100></TEXTAREA><p>
<CENTER><INPUT TYPE='submit' value='Post news!'></CENTER>
</form>";
?>
<?
//admin.php
include "db.php";
//display all the news
$result=mysql_query("select count(id) from db_news", $db);
while ($myrow=mysql_fetch_row($result)) {
echo " (<b>$myrow[0]</B> posts in the news)<p>";
}
echo "<TABLE border='1' bordercolor='#E2E2E2' cellspacing='0' cellpadding='1' width='100%'><tr bgcolor='#C0C0C0' bordercolor='1'><B><td><B>Date</B></td><td><B>News</B></td></B></tr>";
$result=mysql_query("select * from db_news order by datum desc", $db) or die (mysql_error());
while ($myrow=mysql_fetch_row($result)) {
$txt=nl2br($myrow[1]);
echo "
<TR bordercolor='1'>";
make_date1();
echo "
<TD>$date1</TD>
<TD>$myrow[3] - $txt [<a href='del.php?number=$myrow[0]'>Delete it!</a>]<p></td>
</TR>
";
}
echo "</table>";
echo "<CENTER><form action='post_news.php' method='post'>
Title: <INPUT TYPE='text' NAME='title'><p>
News: <TEXTAREA NAME='news' ROWS='10' COLS=100></TEXTAREA><p>
<CENTER><INPUT TYPE='submit' value='Post news!'></CENTER>
</form>";
?>
Sada na red dolazi fajl post_news.php koji sluzi da nam proveri podatke i potom unese novu vestu bazu podataka:
Code:
<?
//post_news.php
include "inc.php";
$news=htmlspecialchars($news);
$title=htmlspecialchars($title);
$result=mysql_query("insert db_news set text='$news', title='$title'", $db);
echo "<CENTER><p>News posted... I am taking you back...<meta http-equiv='refresh' content='2; url=admin.php'></CENTER>";
?>
<?
//post_news.php
include "inc.php";
$news=htmlspecialchars($news);
$title=htmlspecialchars($title);
$result=mysql_query("insert db_news set text='$news', title='$title'", $db);
echo "<CENTER><p>News posted... I am taking you back...<meta http-equiv='refresh' content='2; url=admin.php'></CENTER>";
?>
Dakle, za sada imamo admin.php i post_news.php. Red je da uradimo i stranicu za brisanje vesti -- del.php:
Code:
<?
//del.php
include "inc.php";
$result=mysql_query("delete from db_news where id='$number'", $db);
echo "<CENTER>News entry deleted! I am taking you back...<meta http-equiv='refresh' content='2; url=admin.php'></CENTER>";
?>
<?
//del.php
include "inc.php";
$result=mysql_query("delete from db_news where id='$number'", $db);
echo "<CENTER>News entry deleted! I am taking you back...<meta http-equiv='refresh' content='2; url=admin.php'></CENTER>";
?>
Eto sada imamo sva tri fajla koja sacinjavaju administratorski deo nase news skripte, dakle admin.php, post_news.php kao i del.php.
Kao sto znamo, potrebno je jos samo da odradimo i index.php -- stranica na kojoj ce sve nase vesti biti izlistane i koju ce drugi ljudi moci da vide bez problema. To nece biti tesko s obzirom da smo vec izlistali vesti u fajlu admin.php.
Dakle:
Code:
<?
//index.php
include "inc.php";
$result=mysql_query("select * from db_news order by datum desc", $db) or mysql_error();
while ($myrow=mysql_fetch_row($result)) {
make_date1();
$txt=nl2br($myrow[1]);
echo "<B>$myrow[3]</B> [$date1]<br><br>
$txt<hr>";
}
?>
<?
//index.php
include "inc.php";
$result=mysql_query("select * from db_news order by datum desc", $db) or mysql_error();
while ($myrow=mysql_fetch_row($result)) {
make_date1();
$txt=nl2br($myrow[1]);
echo "<B>$myrow[3]</B> [$date1]<br><br>
$txt<hr>";
}
?>
Obrattite paznju da se svo vreme u igru ubacuje i fajl inc.php koji se non stop includuje. U fajl inc.php trebate da stavite deklaraciju vase baze podatake i povezivanje na istu. Takodje u fajlu inc.php nalazi se i funkcija za lepo formatiranje datuma od mysql funkcije timestamp(14). inc.php bi izlgedao npr:
Code:
<?
define("HOST", "vas_hostname");
define("USER", "vas_username_ovde");
define("PASSWORD", "vasa_sifra_ovde");
define("DATABASE", "ime_baze");
//connecting to the database
$db=mysql_connect(HOST, USER, PASSWORD);
mysql_select_db(DATABASE, $db);
function make_date1() {
global $d1, $year1, $month1, $day1, $hour1, $min1, $sec1, $date1, $myrow;
$d1=$myrow[2];
$year1=substr($d1, 0, 4);
$month1=substr($d1, 4, 2);
$day1=substr($d1, 6, 2);
$hour1=substr($d1, 8, 2);
$min1=substr($d1, 10, 2);
$sec1=substr($d1, 12, 2);
return $date1="$month1-$day1-$year1 @ $hour1:$min1";
}
?>
<?
define("HOST", "vas_hostname");
define("USER", "vas_username_ovde");
define("PASSWORD", "vasa_sifra_ovde");
define("DATABASE", "ime_baze");
//connecting to the database
$db=mysql_connect(HOST, USER, PASSWORD);
mysql_select_db(DATABASE, $db);
function make_date1() {
global $d1, $year1, $month1, $day1, $hour1, $min1, $sec1, $date1, $myrow;
$d1=$myrow[2];
$year1=substr($d1, 0, 4);
$month1=substr($d1, 4, 2);
$day1=substr($d1, 6, 2);
$hour1=substr($d1, 8, 2);
$min1=substr($d1, 10, 2);
$sec1=substr($d1, 12, 2);
return $date1="$month1-$day1-$year1 @ $hour1:$min1";
}
?>
E to bi bilo to
Ziveli!