PDA

View Full Version : Script berita management - PHP


Eclipse
11-11-2008, 03:44 PM
Karena tempo hari ada yang reques disini (http://webmastercafe.org/showthread.php?p=359#post359), bagaimana cara membuat script utk portal berita..maka gw pengen berbagi dengan teman2 semua...mudah2an bermanfaat. Jika masih ada bugs harap dimaklumi karena gw juga masih nubie :malu, dan berharap temans disini juga bisa memperbaikinya... :P

Oke langsung aja kita mulai,

1. Pertama, sediakan dulu cemilan dan kopi/teh manis, bagi yang merokok sediakan juga asbak, biar abu rokoknya gak berantakan :P

2. Kedua, langsung aja bikin database, disini kita menggunakan Mysql, copy-paste (kopas) aja script dibawah ini..

--
-- Table structure for table `berita`
--

CREATE TABLE `berita` (
`no_berita` int(3) NOT NULL auto_increment,
`no_kategori` int(3) NOT NULL default '0',
`judul_berita` varchar(100) NOT NULL default '',
`headline_berita` text NOT NULL,
`isi_berita` text NOT NULL,
`hari` varchar(20) NOT NULL default '',
`tgl_berita` date NOT NULL default '0000-00-00',
`jam_berita` time NOT NULL default '00:00:00',
PRIMARY KEY (`no_berita`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

-- --------------------------------------------------------

--
-- Table structure for table `kategori`
--

CREATE TABLE kategori (
no_kategori int(3) NOT NULL auto_increment,
nama_kategori varchar(30) NOT NULL default '',
PRIMARY KEY (no_kategori)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

--
-- Dumping data for table 'kategori'
--

INSERT INTO kategori VALUES (1, 'Life Style');
INSERT INTO kategori VALUES (2, 'Politik');
INSERT INTO kategori VALUES (3, 'Sepak Bola');
INSERT INTO kategori VALUES (4, 'Musik');
INSERT INTO kategori VALUES (5, 'Otomotif');
INSERT INTO kategori VALUES (6, 'Hiburan');
INSERT INTO kategori VALUES (7, 'Ekonomi');
INSERT INTO kategori VALUES (8, 'Movie');
INSERT INTO kategori VALUES (9, 'Kuliner');
INSERT INTO kategori VALUES (10, 'Tehnologi');
INSERT INTO kategori VALUES (11, 'Kesehatan');
INSERT INTO kategori VALUES (12, 'Jual Beli');
INSERT INTO kategori VALUES (13, 'Tips & Trik');
INSERT INTO kategori VALUES (14, 'Komunitas');


3. Buat koneksi ke database, dengan nama konak_to_db.php :P
<?
mysql_connect("localhost","user","password");
mysql_select_db("berita");
?>

4. Kemudian buat script utk keperluan pengisian berita, form_isi_berita.php
<?
echo "<h3>FORM UNTUK ISI BERITA/TUTORIAL</h3>
<form method=post action=input_berita.php>
<b>Judul :</b> <input type=text size=70 name=judul_berita><br /><br />
<b>Kategori :</b> <select name=no_kategori>
<option value=0 selected>Silahken Pilih Kategorinya Cuy";

//menampilkan nama2 kategori pada combo box
include "konak_to_db.php";
$tampil=mysql_query("SELECT * FROM kategori ORDER BY nama_kategori");
while($data=mysql_fetch_array($tampil))
{
echo "<option value=$data[no_kategori]>$data[nama_kategori]";
}
echo "</option></select><br /><br />
<b>Headline Berita / Tutorial :</b><br><textarea name=headline_berita cols=60 rows=5></textarea><br /><br />
<b>Isi Berita / Tutorial :</b><br><textarea name=isi_berita cols=60 rows=15></textarea><br>
<input type=SUBMIT VALUE=kirim></form>";
?>

<a href="index.php">Lihat berita donk ah</a>

5. Script buat berita sebelumnya, kasih nama berita_sebelumnya.php
<?
echo "<b>Berita Sebelumnya</b><br><br>";
include "konak_to_db.php";

//tampil setelah 2 pada headline
//tampilakan hanya 10 berita, jgn banyak2 ntar riweh :)
$tampil= mysql_query("SELECT * FROM berita ORDER BY no_berita DESC LIMIT 2,10");
while ($data = mysql_fetch_array($tampil))
{
echo "$data[hari], $data[tgl_berita], $data[jam_berita] WIB<br>";
echo "<a href=detail_berita.php?id=$data[no_berita]>$data[judul_berita]</a><br><br></font>";
}
?>

6. Lanjut lagi, bikin file dengan nama beritaperkategori.php
<table width="100%" border="0" align="center" cellpadding="0" cellspacing="4">
<tr>
<td colspan="3" bgcolor="#00FFFF"><div align="center">
<? include "tampil_kategori.php"; ?>
</div></td>
</tr>
<tr>
<td width="20%">&nbsp;</td>
<td width="60%">&nbsp;</td>
<td width="20%">&nbsp;</td>
</tr>
<tr>
<td height="145" valign="top"><? include "berita_sebelumnya.php"; ?></td>
<td valign="top">
<?
include "konak_to_db.php";
//tampilkan kategori berdasarkan id kategori
$tampil_a=mysql_query("SELECT nama_kategori FROM kategori WHERE no_kategori='$_REQUEST[id]'");
$data_kategori=mysql_fetch_array($tampil_a);
echo "<h3>$data_kategori[nama_kategori]</h3>";

//tampilkan judul2 berita berdasakan id kategoti
$tampil_b=mysql_query("SELECT judul_berita, no_berita FROM berita WHERE no_kategori='$_REQUEST[id]'");
while ($data=mysql_fetch_array($tampil_b))
{
echo "<a href=detail_berita.php?id=$data[no_berita]> $data[judul_berita]</a><br>";
}
?>
</td>
<td valign="top"><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><strong>Menu Utama</strong></td>
</tr>
<tr>
<td><a href="index.php">Home</a></td>
</tr>
<tr>
<td><a href="form_isi_berita.php">Isi Berita</a></td>
</tr>
<tr>
<td>&nbsp;</td>
</tr>
<tr>
<td><? include "jumberita_perkategori.php"; ?></td>
</tr>
<tr>
<td>&nbsp;</td>
</tr>
</table></td>
</tr>
<tr>
<td>&nbsp;</td>
<td></td>
<td>&nbsp;</td>
</tr>
</table>


Bersambung..............

Eclipse
11-11-2008, 03:52 PM
7. Ngeroko dulu ah....:ngebul

8. Lanjut dengan ngopi sebentar..... :s

9. Buat file dengan nama headline_berita.php
<?
include "konak_to_db.php";
//10 berita terakhir yang di inputkan, akan tampil dihalaman utama, kl mo ubah edit aja..sesuai selera
$tampil=mysql_query("SELECT * FROM berita ORDER BY no_berita DESC LIMIT 10");
while ($data=mysql_fetch_array($tampil))
{
echo "$data[hari], $data[tgl_berita], $data[jam_berita] WIB<br>";
echo "<a href=detail_berita.php?id=$data[no_berita]>
<b>$data[judul_berita]</b></a><br><br>";
echo "$data[headline_berita]<hr>";
}
?>

10. Buat lagi file tampil_kategori.php
<?
include "konak_to_db.php";
$tampil=mysql_query("SELECT * FROM kategori ORDER BY nama_kategori");
while($data=mysql_fetch_array($tampil))
{
echo "<a href=beritaperkategori.php?id=$data[no_kategori]>$data[nama_kategori]</a> | ";
}
?>

11. Nah file index nya.... kasih nama index.php
<table width="100%" border="0" align="center" cellpadding="0" cellspacing="4">
<tr>
<td colspan="3" bgcolor="#00FFFF"><div align="center">
<? include "tampil_kategori.php"; ?>
</div></td>
</tr>
<tr>
<td width="20%">&nbsp;</td>
<td width="60%">&nbsp;</td>
<td width="20%">&nbsp;</td>
</tr>
<tr>
<td height="145" valign="top"><? include "berita_sebelumnya.php"; ?></td>
<td valign="top"><? include "headline_berita.php"; ?></td>
<td valign="top"><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><strong>Menu Utama</strong></td>
</tr>
<tr>
<td><a href="index.php">Home</a></td>
</tr>
<tr>
<td><a href="form_isi_berita.php">Isi Berita</a></td>
</tr>
<tr>
<td>&nbsp;</td>
</tr>
<tr>
<td><? include "jumberita_perkategori.php"; ?></td>
</tr>
<tr>
<td>&nbsp;</td>
</tr>
</table></td>
</tr>
<tr>
<td>&nbsp;</td>
<td></td>
<td>&nbsp;</td>
</tr>
</table>


12. File ini berfungsi utk memproses inputan berita dari form isi berita, kasih aja nama input_berita.php
<?
//hari dalam bahasa indonesia
$hr=array("Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu");
$hari_ini=date("w");
$hari=$hr[$hari_ini];

//tanggal dan jam
$tgl_berita=date("Ymd");
$jam_berita=date("H:i:s");

include "konak_to_db.php";
$input=mysql_query("INSERT INTO berita(no_kategori,judul_berita,headline_berita,is i_berita,hari,tgl_berita,jam_berita)
VALUES ('$_POST[no_kategori]','$_POST[judul_berita]','$_POST[headline_berita]','$_POST[isi_berita]','$hari','$tgl_berita','$jam_berita')");

if ($input)
{
echo "<b>Proses input berita berhasil bro..! Trus mo ngapain lagi sekarang?</b><br><br>";
echo "<A HREF=form_isi_berita.php>Gue mo isi tutor lagi aja ahh, biar situsnya cepet rame...</A><br>";
echo "<A HREF=index.php>Ogah ah, capek, besok lagi aja deh, sekarang mo liat dulu yang gue isi tadi!</A><br>";
}
else { echo "Proses pengisian berita / tutorial gagal total, scrip panik tolong kontak Admin bro";
}
?>

Eclipse
11-11-2008, 04:03 PM
13. File ini gunanya utk menampilkan detil berita.... kasih nama detail_berita.php
<table width="100%" border="0" align="center" cellpadding="0" cellspacing="4">
<tr>
<td colspan="3" bgcolor="#00FFFF"><div align="center">
<? include "tampil_kategori.php"; ?>
</div></td>
</tr>
<tr>
<td width="20%">&nbsp;</td>
<td width="60%">&nbsp;</td>
<td width="20%">&nbsp;</td>
</tr>
<tr>
<td height="145" rowspan="2" valign="top"><? include "berita_sebelumnya.php"; ?></td>
<td valign="top"><? include "detailberita.php"; ?></td>
<td rowspan="2" valign="top"><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><strong>Menu Utama</strong></td>
</tr>
<tr>
<td><a href="index.php">Home</a></td>
</tr>
<tr>
<td><a href="form_isi_berita.php">Isi Berita</a></td>
</tr>
<tr>
<td>&nbsp;</td>
</tr>
<tr>
<td><? include "jumberita_perkategori.php"; ?></td>
</tr>
<tr>
<td>&nbsp;</td>
</tr>
</table></td>
</tr>
<tr>
<td valign="top" bgcolor="#66FFFF"><table width="100%" border="0" cellspacing="6" cellpadding="0">
<tr>
<td>
<? echo "<b>Berita Sebelumnya</b><br><br>";
include "konak_to_db.php";

//menampilkan berita sebelumnya pada halaman detail berita
//tampil setelah 1 pada headline
//tampilakan hanya 7 berita, jgn banyak2 ntar riweh :)
$tampil= mysql_query("SELECT * FROM berita ORDER BY no_berita DESC LIMIT 1,7");
while ($data = mysql_fetch_array($tampil))
{
echo "<a href=detail_berita.php?id=$data[no_berita]>$data[judul_berita]</a><br />";
}
?></td>
</tr>
</table></td>
</tr>
<tr>
<td>&nbsp;</td>
<td></td>
<td>&nbsp;</td>
</tr>
</table>


14. Script detail berita yang di include ke file detail_berita.php, kasih nama file ini dengan nama detailberita.php
<?
include "konak_to_db.php";
//tampilkan berita yang sesuai dengan no berita
$tampil=mysql_query("SELECT * FROM berita WHERE no_berita='$_REQUEST[id]'");
$data=mysql_fetch_array($tampil);

//rapikan tampilan dengan fungsi nl2br
$isi_berita=nl2br($data[isi_berita]);
$username=$data[username];

echo "<h2>Judul : $data[judul_berita]</h2>";
echo "$data[hari], $data[tgl_berita], $data[jam_berita] WIB<br /><br />";
echo "$isi_berita";
?>

15. jumberita_perkategori.php , guna dari script ini utk menghitung jumlah berita pada masing2 kategori..
<?
echo "<b>Statistik</b><br>";
include "konak_to_db.php";

//tampilkan kategori dan hitung jumlahnya, berhitung mulai
$tampil=mysql_query("SELECT nama_kategori,kategori.no_kategori, COUNT(berita.no_kategori)
AS jml_berita FROM kategori,berita WHERE kategori.no_kategori=berita.no_kategori GROUP BY berita.no_kategori,kategori.no_kategori,nama_kateg ori");

echo "<ul>";
while ($data=mysql_fetch_array($tampil))
{
echo "<li><a href=beritaperkategori.php?id=$data[no_kategori]>$data[nama_kategori]</a>($data[jml_berita])</li>";
}
$total=mysql_query("SELECT COUNT(*)AS total_berita FROM berita");
$baris=mysql_fetch_array($total);
echo "</ul>Total: <b>$baris[total_berita] </b>Berita</font>";
?>

Nah selesai sudah, script ini belum dilengkapi dengan fasilitas edit berita, tapi itu bisa ditambahkan koq...silahkan teman coba utk membuat script tsb...:P

Selain itu, harusnya form utk pengisian berita dilengkapi dengan fasilitas login, jadi gak sembarang orang bisa mengisi berita...ini juga bisa dikembangkan lagi, atau kl gak mau pusing2 bikin scriptnya bisa pake php security, selamat mencoba dan semoga bermanfaat....

akupasrah
11-12-2008, 09:24 AM
Setelah gw pelajari dan gw coba-coba

(bikin anak kok coba-coba :P)

lalu di analisa (dah kaya prof aja)

dan ternyata hasilnya top banget dah....:top

thanks ya gan...mang abang kito yg satu nich T O P B G T :yiha

Eclipse
09-15-2009, 09:26 AM
Apanya yang top....jangan bilang top2an deh.... kan buron tuh orang nya.... :d

c-devour
09-16-2009, 12:27 PM
penamaan filenya parah euy, masa "konak"? wahahahaha

Eclipse
09-16-2009, 12:32 PM
Kan bebas bro...bisa diubah - ubah....hahahahha :s

Ini mah tutor dibikin jaman jadul punya..... cuma query ke DB dan manipulasi PHP doang...

Jadi :malu

c-devour
09-16-2009, 12:35 PM
tapi kok "konak" :arghhhh

Eclipse
09-16-2009, 12:48 PM
tapi kok "konak" :arghhhh
Hihihihi :d