Cara Membuat CMS Berita dengan PHP
Tahun baru semangat baru kali ini kita akan membuat sebuah CMS berita dengan PHP. CMS(Conten management system) adalah sebuah aplikasi web yang tujuanya untuk memudahkan pengelolaan konten dalam sebuah website contohnya seperti wordpress, joomla, drupal, magento dll.
Untuk membuat aplikasi berita, pertama buat dulu database nya di phpmyadmin. disini saya menggunakan nama pw2 untuk database nya, kemudian buat dua buah tabel yaitu tabel kategori dan table berita
Kemudian buat koneksi ke database, saya menggunakan nama koneksi.php isinya seperti berikut:
<?php
$host = "localhost";
$user = "root";
$pass = "";
$dbnm = "pw2";
$conn = mysql_connect ($host, $user, $pass);
if ($conn) {
$buka = mysql_select_db ($dbnm);
if (!$buka) {
die ("Database tidak dapat dibuka");
}
} else {
die ("Server MySQL tidak terhubung");
}
?>
Lalu buat halaman input berita disini saya menggunakan nama input_berita.php
<?php
include "koneksi.php";
//proses input berita
if (isset($_POST['input'])) {
$judul = addslashes (strip_tags ($_POST['judul']));
$kategori = $_POST['kategori'];
$headline = addslashes (strip_tags ($_POST['headline']));
$isi_berita = addslashes (strip_tags ($_POST['isi']));
$pengirim = addslashes (strip_tags ($_POST['pengirim']));
//insert ke tabel
$query = "INSERT INTO berita
VALUES('','$kategori','$judul','$headline','$isi_berita','$pengirim', now())";
$sql = mysql_query ($query);
if ($sql) {
echo "<h2><font color=blue>Berita telah berhasil ditambahkan</font></h2>";
} else {
echo "<h2><font color=red>Berita gagal ditambahkan</font></h2>";
}
}
?>
<html>
<head><title>Input Berita</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<a href="index.php">Halaman Depan</a> |
<a href="arsip_berita.php">Arsip Berita</a> |
<a href="input_berita.php">Input Berita</a>
<br><br>
<form action="" method="POST" name="input">
<table cellpading="0" cellspacing="0" border="0" width="700">
<tr>
<td colspan="2"><h2>Input Berita</h2></td>
</tr>
<tr>
<td width="200">Judul Berita</td>
<td>: <Input type="text" name="judul" size="30"></td>
</tr>
<tr>
<td>Kategori</td>
<td>:
<select name="kategori">
<option value=0 selected>- Pilih Kategori -</option>";
<?php
$tampil=mysql_query("SELECT * FROM kategori ORDER BY nm_kategori");
while($r=mysql_fetch_array($tampil)){
echo "<option value=$r[id_kategori]>
$r[nm_kategori]</option>";
} ?>
</select></td>
</tr>
<tr>
<td>Headline Berita</td>
<td>: <textarea name="headline" cols="50" rows="4"></textarea></td>
</tr>
<tr>
<td>Isi Berita</td>
<td>: <textarea name="isi" cols="50" rows="10"></textarea></td>
</tr>
<tr>
<td>Pengirim</td>
<td>: <input type="text" name="pengirim" size="20" ></td>
</tr>
<tr>
<td> </td>
<td> <input type="submit" name="input" value="Input Berita"> <input type="reset" name="reset" value="Cancel"></td>
</tr>
</table>
</form>
</body>
</html>
Untuk kategori bisa diinputkan manual melalui PHPmyadmin, tambahkan beberapa kategori. kemudian buat file arsip berita disini saya menggunakan nama arsip_berita.php
<?php
include "koneksi.php";
?>
<html>
<head><title>Arsip Berita</title>
<link rel="stylesheet" href="style.css">
<script language="javascript">
function tanya() {
if (confirm ("Apakah Anda yakin akan menghapus berita ini ?")) {
return true;
} else {
return false;
}
}
</script>
</head>
<body>
<a href="index.php">Halaman Depan</a> |
<a href="arsip_berita.php">Arsip Berita</a> |
<a href="input_berita.php">Input Berita</a>
<br><br>
<h2>Arsip Berita</h2>
<ol>
<?php
$query = "select A.id_berita, B.nm_kategori, A.judul, A.pengirim, A.tanggal from berita A, kategori B where A.id_kategori=B.id_kategori order by A.id_berita DESC";
$sql = mysql_query ($query);
while ($hasil = mysql_fetch_array ($sql)) {
$id_berita = $hasil['id_berita'];
$kategori = stripslashes($hasil['nm_kategori']);
$judul = stripslashes ($hasil['judul']);
$pengirim = stripslashes ($hasil['pengirim']);
$tanggal = stripslashes ($hasil['tanggal']);
//tampilkan arsip berita
echo "<li><a href='berita_lengkap.php?id=$id_berita'>$judul</a><br>";
echo "<small>Berita dikirimkan oleh <b>$pengirim</b>
pada tanggal <b>$tanggal</b> dalam kategori <b>$kategori</b><br>";
echo "<b>Action : </b><a href='edit_berita.php?id=$id_berita'>Edit</a> | ";
echo "<a href='delete_berita.php?id=$id_berita' onClick='return tanya()'>Delete</a>";
echo "</small></li><br><br>";
}
?>
<p></p>
</ol>
</body>
</html>
Kemudian buat file berita lengkap untuk menampilkan berita lengkapnya. disini saya menggunakan berita_lengkap.php. berikut kodenya:
<?php
include "koneksi.php";
if (isset($_GET['id'])) {
$id_berita = $_GET['id'];
}else{
die ("Error. No Id Selected! ");
}
?>
<html>
<head><title>Berita Lengkap</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<a href="index.php">Halaman Depan</a> |
<a href="arsip_berita.php">Arsip Berita</a> |
<a href="input_berita.php">Input Berita</a>
<br><br>
<h2>Berita Lengkap</h2>
<?php
$query = "select A.id_berita, B.nm_kategori, A.judul,A.isi, A.pengirim, A.tanggal from berita A, kategori B where A.id_kategori=B.id_kategori && A.id_berita='$id_berita'";
$sql = mysql_query ($query);
$hasil = mysql_fetch_array ($sql);
$id_berita = $hasil['id_berita'];
$kategori = stripslashes ($hasil['nm_kategori']);
$judul = stripslashes ($hasil['judul']);
$isi = nl2br(stripslashes ($hasil['isi']));
$pengirim = stripslashes ($hasil['pengirim']);
$tanggal = stripslashes ($hasil['tanggal']);
//tampilkan berita
echo "<font size='5' color='blue'>$judul</font><br>";
echo "<small>Berita dikirimkan oleh <b>$pengirim</b> pada tanggal <b>$tanggal</b> dalam kategori <b>$kategori</b></small>";
echo "<p>$isi</p>";
?>
</body>
</html>
Selanjutnya yaitu membuat edit berita untuk mengedit beritanya, disini saya menggunakan nama edit_berita.php. ini source kodenya:
<?php
include "koneksi.php";
if (isset($_GET['id'])) {
$id_berita = $_GET['id'];
} else {
die ("Error. No Id Selected! ");
}
$query = "SELECT id_berita, id_kategori, judul, headline, isi,
pengirim, tanggal
FROM berita WHERE id_berita='$id_berita'";
$sql = mysql_query ($query);
$hasil = mysql_fetch_array ($sql);
$id_berita = $hasil['id_berita'];
$id_kategori = stripslashes ($hasil['id_kategori']);
$judul = stripslashes ($hasil['judul']);
$headline = stripslashes ($hasil['headline']);
$isi = stripslashes ($hasil['isi']);
$pengirim = stripslashes ($hasil['pengirim']);
$tanggal = stripslashes ($hasil['tanggal']);
//proses edit berita
if (isset($_POST['Edit'])) {
$id_berita = $hasil['id_berita'];
$judul = addslashes (strip_tags ($_POST['judul']));
$kategori = $_POST['kategori'];
$headline = addslashes (strip_tags ($_POST['headline']));
$isi_berita = addslashes (strip_tags ($_POST['isi']));
$pengirim = addslashes (strip_tags ($_POST['pengirim']));
//update berita
$query = "UPDATE berita SET id_kategori='$kategori',judul='$judul',headline='$headline',
isi='$isi_berita',pengirim='$pengirim' WHERE id_berita='$id_berita'";
$sql = mysql_query ($query);
if ($sql) {
echo "<h2><font color=blue>Berita telah berhasil diedit</font></h2>";
} else {
echo "<h2><font color=red>Berita gagal diedit</font></h2>";
}
}
?>
<html>
<head><title>Edit Berita</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<a href="index.php">Halaman Depan</a> |
<a href="arsip_berita.php">Arsip Berita</a> |
<a href="input_berita.php">Input Berita</a>
<br><br>
<FORM ACTION="" METHOD="POST" NAME="input">
<table cellpadding="0" cellspacing="0" border="0" width="700">
<tr>
<td colspan="2"><h2>Input Berita</h2></td>
</tr>
<tr>
<td width="200">Judul Berita</td>
<td>: <input type="text" name="judul" size="30" value="<?=$judul?>"></td>
</tr>
<tr>
<td>Kategori</td>
<td>:
<select name="kategori">
<?php
$tampil=mysql_query("SELECT * FROM kategori ORDER BY nm_kategori");
while($r=mysql_fetch_array($tampil)){
echo "<option value=$r[id_kategori]>
$r[nm_kategori]</option>";
} ?>
</select></td>
</tr>
<tr>
<td>Headline Berita</td>
<td>: <textarea name="headline" cols="50" rows="4"><?=$headline?></textarea></td>
</tr>
<tr>
<td>Isi Berita</td>
<td>: <textarea name="isi" cols="50" rows="10"><?=$isi?></textarea></td>
</tr>
<tr>
<td>Pengirim</td>
<td>: <input type="text" name="pengirim" size="20" value="<?=$pengirim?>"></td>
</tr>
<tr>
<td> </td>
<td>
<input type="hidden" name="hidberita" value="<?=$id_berita?>">
<input type="submit" name="Edit" value="Edit Berita">
<input type="reset" name="reset" value="Cancel"></td>
</tr>
</table>
</FORM>
</body>
</html>
Lalu membuat file delete_berita.php untuk menghapus berita. berikut kodenya:
<?php
include "koneksi.php";
if (isset($_GET['id'])) {
$id_berita = $_GET['id'];
} else {
die ("Error. No Id Selected! ");
}
?>
<html>
<head><title>Delete Berita</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<a href="index.php">Halaman Depan</a> |
<a href="arsip_berita.php">Arsip Berita</a> |
<a href="input_berita.php">Input Berita</a>
<br><br>
<?php
//proses delete berita
if (!empty($id_berita) && $id_berita != "") {
$query = "DELETE FROM berita WHERE id_berita='$id_berita'";
$sql = mysql_query ($query);
if ($sql) {
echo "<h2><font color=blue>Berita telah berhasil dihapus</font></h2>";
} else {
echo "<h2><font color=red>Berita gagal dihapus</font></h2>";
}
echo "Klik <a href='arsip_berita.php'>di sini</a> untuk kembali ke halaman arsip berita";
} else {
die ("Access Denied");
}
?>
</body>
</html>
Terakhir adalah membuat halaman index.php halaman ini berfungsi sebagai halaman utama yang ditampilkan untuk pengunjung. berikut ini kodingnya:
<?php
include "koneksi.php";
?>
<html>
<head><title>Berita Utama</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<ul>
<li><a href="index.php">Halaman Depan</a></li>
<li><a href="arsip_berita.php">Arsip Berita</a></li>
<li><a href="input_berita.php">Input Berita</a></li>
</ul>
<br><br>
<h2>Halaman Depan ~ Lima Berita terbaru</h2>
<?php
$query = "select A.id_berita, B.nm_kategori, A.judul, A.headline, A.pengirim, A.tanggal from berita A, kategori B where A.id_kategori=B.id_kategori order by A.id_berita DESC LIMIT 0,5";
$sql = mysql_query ($query) ;
while ($hasil = mysql_fetch_array ($sql)) {
$id_berita = $hasil['id_berita'];
$kategori = stripslashes ($hasil['nm_kategori']);
$judul = stripslashes ($hasil['judul']);
$headline = nl2br(stripslashes ($hasil['headline']));
$pengirim = stripslashes($hasil['pengirim']);
$tanggal = stripslashes($hasil['tanggal']);
//tampilkan berita
echo "<font size='4'><a href='berita_lengkap.php?id=$id_berita'>$judul</a></font><br>";
echo "<small>Berita dikirim oleh <b>$pengirim</b> pada tanggal <b>$tanggal</b> dalam kategori <b>$kategori</b></small>";
echo "<p>$headline</p>";
echo "<hr>";
}
?>
</body>
</html>
dan yang paling terakhir adalah menambahkan CSS untuk mempercantik tampilanya. disini saya menggunakan nama style.css berikut ini kode cssnya:
* {
margin: 0;
padding: 0;
}
body {
font-family:verdana;
font-size:11px;
width: 80%;
margin: 0 auto;
}
a {
color:#0000ff;
text-decoration:underline;
}
a:hover {
color:#ffffff;
background-color:#8AC452;
text-decoration:none;
}
input, textarea, select, option {
font-family:verdana;
}
ul {
list-style: none;
background-color: yellow;
}
li {
display: inline-block;
padding: 10px;
}