PopojiCMS hanya menggunakan OOP untuk pemprosesan CRUD saja. Ini memudahkan developer untuk menulis code karena akan lebih mempersingkat waktu tentu saja dan tidak akan memakan bandwidth. Untuk mengenal lebih jauh mengenai OOP CRUD ini, maka simak baik-baik tutorial di bawah ini.

Catatan : Setiap file PHP yang menggunakan OOP PopojiCMS agar jangan lupa untuk meng-include-kan file po-database.php di permulaan script.

Create Proses

Proses ini dalam mysql dikenal dengan Insert. Berikut adalah contoh Insert data ke database secara kontekstual :

								mysql_query("INSERT INTO post(title_id,title_en) VALUES('$title_id','$title_en')");
							

Menggunakan OOP PopojiCMS :

								
$table = new PoTable('post');
$table->save(array(
	'title_id' => $title_id,
	'title_en' => $title_en
));
								
							

Read Proses

Proses ini dalam mysql dikenal dengan Select. Berikut adalah contoh Select data dari database secara kontekstual dan dengan OOP PopojiCMS :

Kontekstual :

								
$tampil = mysql_query("SELECT * FROM post ORDER BY id_post DESC");
while($r=mysql_fetch_array($tampil)){
	echo "$r[title_id]";
}
								
							

OOP PopojiCMS :

								
$tablepost = new PoTable('post');
$posts = $tablepost->findAll(id_post, DESC);
foreach($posts as $post){
	echo "$post->title_id";
}
								
							

Kontekstual :

								
$edit = mysql_query("SELECT * FROM post WHERE id_post='$id'");
$r = mysql_fetch_array($edit);
echo "$r[title_id]";
								
							

OOP PopojiCMS :

								
$table = new PoTable('post');
$currentPost = $table->findBy(id_post, $id);
$currentPosts = $currentPost->current();
echo "$currentPosts->title_id";
								
							

Proses-proses di atas adalah proses-proses secara umum, berikut adalah proses-proses lain yang bisa ditangani OOP PopojiCMS yang semuanya bisa dilihat pada folder po-library -> po-database.php :

Semua function harus dipanggil dengan mendeklarasi pemanggilan nama table terlebih dahulu kecuali pada fungsi findManualQuery() saja :

								$table = new PoTable('nama-table');
							

findManualQuery()

Adalah fitur baru yang tersedia sejak versi 1.2.5, dimana memudahkan pembuatan query ke database dengan query-query yang kompleks.

								
$table = new PoTable();
$data = $table->findManualQuery($tabel = '', $field = '', $condition = '');
								
							

contoh :

								
$table = new PoTable();
$data = $table->findManualQuery($tabel = 'post', $field = 'id_post,id_category,title,seotitle', $condition = 'WHERE id_category = "8" ORDER BY id_post DESC LIMIT 5');
								
							

penjelasan : ambil data dari tabel post dengan field-field : id_post, id_category, title, dan seotitle kemudian dengan filter kondisi id_category = 8, urutkan menurut id_post dan sorting dengan metode DESC ambil sebanyak 5 data.


findAll()

								$data = $table->findAll($field, $value);
							

contoh :

								
$table = new PoTable('post');
$data = $table->findAll(id_post, DESC);
								
							

penjelasan : order data menurut id_post dan urutkan dengan metode DESC.


findAllLimit()

								$data = $table->findAllLimit($field, $value, $value2);
							

contoh :

								
$table = new PoTable('post');
$data = $table->findAllLimit(id_post, DESC, '10');
								
							

penjelasan : order data menurut id_post dan urutkan dengan metode DESC kemudian ambil data sebanyak 10.


findAllLimitBy()

								$data = $table->findAllLimitBy($field, $field2, $value, $value2, $value3);
							

contoh :

								
$table = new PoTable('post');
$table->findAllLimitBy(id_post, id_category, '8', DESC, '10');
								
							

penjelasan : order data menurut id_post dan urutkan dengan metode DESC kemudian ambil data sebanyak 10 dengan kondisi id_category = 8.


findAllLimitByAnd()

								$data = $table->findAllLimitByAnd($field, $field2, $field3, $value, $value2, $value3, $value4);
							

contoh :

								
$table = new PoTable('post');
$table->findAllLimitByAnd(id_category, 8, active, 'Y', id_post, DESC, 10);
								
							

penjelasan : order data menurut id_post dan urutkan dengan metode DESC kemudian ambil data sebanyak 10 dengan kondisi id_category = 8 dan active = Y.


findAllLimitByRand()

								$data = $table->findAllLimitByRand($field, $value, $value2);
							

contoh :

								
$table = new PoTable('category');
$table->findAllLimitByRand(id_category, '8', '10');
								
							

penjelasan : ambil data sebanyak 10 dari id_category = 8 kemudian data diurutkan acak.


findNotAll()

								$data = $table->findNotAll($field, $value);
							

contoh :

								
$table = new PoTable('category');
$data = $table->findNotAll(id_category, '8');
								
							

penjelasan : ambil semua data kecuali data dengan id_category = 8.


findAllRand()

								$data = $table->findAllRand();
							

contoh :

								
$table = new PoTable('post');
$data = $table->findAllRand();
								
							

penjelasan : ambil semua data dan diurutkan acak.


findBy()

								$data = $table->findBy($field, $value);
							

contoh :

								
$table = new PoTable('post');
$data = $table->findBy(id_post, '8');
								
							

penjelasan : ambil satu data yang id_postnya adalah 8.


findByDESC()

								$data = $table->findByDESC($field, $value, $field2);
							

contoh :

								
$table = new PoTable('post');
$data = $table->findByDESC(id_category, 8, id_post);
								
							

penjelasan : ambil satu data yang id_categorynya adalah 8 dan order menurut id_post secara DESC.


findByASC()

								$data = $table->findByASC($field, $value, $field2);
							

contoh :

								
$table = new PoTable('post');
$data = $table->findByASC(id_category, 8, id_post);
								
							

penjelasan : ambil satu data yang id_categorynya adalah 8 dan order menurut id_post secara ASC.


findByAnd()

								$data = $table->findByAnd($field, $value, $field2, $value2);
							

contoh :

								
$table = new PoTable('category');
$data = $table->findByAnd(id_category, '8', active, 'Y');
								
							

penjelasan : ambil satu data dengan id_categorynya adalah 8 dan activenya bernilai Y.


findByAndDESC()

								$data = $table->findByAndDESC($field, $value, $field2, $value2, $value3);
							

contoh:

								
$table = new PoTable('post');
$data = $table->findByAndDESC(id_category, '8', active, 'Y', id_post);
								
							

penjelasan : ambil data yang id_categorynya adalah 8 dan status activenya Y kemudian diurutkan menurut metode DESC.


findByAndASC()

								$data = $table->findByAndASC($field, $value, $field2, $value2, $value3);
							

contoh:

								
$table = new PoTable('post');
$data = $table->findByAndASC(id_category, '8', active, 'Y', id_post);
								
							

penjelasan : ambil data yang id_categorynya adalah 8 dan status activenya Y kemudian diurutkan menurut metode ASC.


findByLogin()

								$data = $table->findByLogin($field1, $value1, $field2, $value2, $field3, $value3);
							

contoh :

								
$table = new PoTable('users');
$data = $table->findByLogin(username, 'admin', password, 'admin123', blokir, 'N');
								
							

penjelasan : ini hanya dipakai pada script login halaman administrator.


findStat()

								$data = $table->findStat($field1, $value1, $field2);
							

penjelasan : ini hanya dipakai untuk menampilkan grafik pengunjung di halaman administrator.


findStatd()

								$data = $table->findStatd($field1, $field2, $field3, $value1, $field4);
							

penjelasan : ini hanya dipakai untuk menampilkan grafik pengunjung di halaman administrator.


findSearchPost()

								$data = $table->findSearchPost($value1, $value2);
							

contoh:

								
$table = new PoTable('post');
$data = $table->findSearchPost(Array data yang dicari, 10);
								
							

penjelasan : cari kata menurut array data dan ambil sebanyak 10 data jika ditemukan.


findRelatedPost()

								$data = $table->findRelatedPost($value, $value2, $value3, $value4, $value5);
							

contoh:

								
$table = new PoTable('post');
$data = $table->findRelatedPost(Array data yang dicari, 8, id_post, DESC, 5);
								
							

penjelasan : cari post menurut array data dan id_postnya kurang dari id_post = 8 serta id_post bukan 8 lalu ambil sebanyak 5 data diurutkan DESC menurut id_post.


numRow()

								$data = $table->numRow();
							

contoh :

								
$table = new PoTable('post');
$data = $table->numRow();
								
							

penjelasan : mencari dan menghitung banyaknya data dari suatu tabel


numRowBy()

								$data = $table->numRowBy($field, $value);
							

contoh :

								
$table = new PoTable('post');
$data = $table->numRowBy(id_category, '8');
								
							

penjelasan : mencari dan menghitung banyaknya data dari suatu tabel dengan kondisi id_category = 8.


numRowByAnd()

								$data = $table->numRowByAnd($field, $value, $field2, $value2);
							

contoh :

								
$table = new PoTable('post');
$data = $table->numRowByAnd(id_category, '8', active, 'Y');
								
							

penjelasan : mencari dan menghitung banyaknya data dari suatu tabel dengan kondisi id_category = 8 dan activenya bernilai Y.


numRowSearchPost()

								$data = $table->numRowSearchPost($value1, $value2);
							

contoh :

								
$table = new PoTable('post');
$data = $table->numRowSearchPost(Array data yang dicari, 10);
								
							

penjelasan : mencari dan menghitung banyaknya data dari suatu tabel dengan kondisi sesuai array data dan diambil sebanyak 10.

Update Proses

Proses ini dalam mysql dikenal dengan Update. Berikut adalah contoh Update data ke database secara kontekstual :

								mysql_query("UPDATE post SET title_id = '$title_id', title_en = '$title_en' WHERE id_post = '$id'");
							

Menggunakan OOP PopojiCMS :

								
$data = array(
	'title_id' => $title_id,
	'title_en' => $title_en
);
$table = new PoTable('post');
$table->updateBy('id_post', $id, $data);
								
							

Option lainnya adalah dengan menambahkan kondisi AND :

								$table->updateByAnd($field, $value, $field2, $value2, $data);
							

Option lainnya adalah dengan menuliskan kondisi WHERE pada blok function :

								$table->update($data, id_post = $id);
							

Delete Proses

Berikut adalah contoh Delete data di database secara kontekstual :

								mysql_query("DELETE FROM post WHERE id_post='id'");
							

Menggunakan OOP PopojiCMS :

								
$tabledel = new PoTable('post');
$tabledel->deleteBy('id_post', $id);
								
							

Option lainnya adalah dengan menuliskan kondisi WHERE pada blok function :

								$tabledel->delete(id_post = $id);
							

Kontekstual Proses

PopojiCMS juga menyediakan option untuk para developer yang mau tetap di CRUD kontekstual, caranya adalah dengan memasukan code seperti ini sebelum melakukan proses CRUD :

								
$dbhostsql = DATABASE_HOST;
$dbusersql = DATABASE_USER;
$dbpasswordsql = DATABASE_PASS;
$dbnamesql = DATABASE_NAME;
$connection = mysql_connect($dbhostsql, $dbusersql, $dbpasswordsql) or die(mysql_error());
mysql_select_db($dbnamesql, $connection) or die(mysql_error());
								
							

Codenya sudah seperti di atas, jangan dirubah lagi. Contoh :

								
<?php
	$dbhostsql = DATABASE_HOST;
	$dbusersql = DATABASE_USER;
	$dbpasswordsql = DATABASE_PASS;
	$dbnamesql = DATABASE_NAME;
	$connection = mysql_connect($dbhostsql, $dbusersql, $dbpasswordsql) or die(mysql_error());
	mysql_select_db($dbnamesql, $connection) or die(mysql_error());

	$tampil = mysql_query("SELECT * FROM post ORDER BY id_post DESC");
	while($r=mysql_fetch_array($tampil)){
		echo "$r[title_id]";
	}
?>
								
							
Catatan : Setiap file PHP yang menggunakan OOP PopojiCMS agar jangan lupa untuk meng-include-kan file po-database.php di permulaan script.

Maintenance Mode adalah keadaan dimana website kita ditutup sementara untuk keperluan perbaikan. PopojiCMS sudah menyediakan fitur ini dengan mengaturnya lewat halaman administrator. Berikut langkah-langkahnya :

Login ke halaman administrator kemudian ke menu pengaturan (setting) lalu aktifkan mode maintenance beserta lama waktu maintenance akan dilakukan :

Maintenance Mode


Refresh browser dan lihat sekarang website Anda sudah beralih pada mode Maintenance.

Maintenance Mode


Untuk membuat halaman maintenance sendiri, silahkan mengedit file maintenance.php yang ada pada direktori PopojiCMS milik Anda.