Tampilkan postingan dengan label Tips Trik Komputer. Tampilkan semua postingan
Tampilkan postingan dengan label Tips Trik Komputer. Tampilkan semua postingan

Selasa, 11 Juni 2013

Pengelompokan Warna dalam CorelDraw

Warna dan Pengelompokannya


Warna adalah spektrum tertentu yang terdapat di dalam suatu cahaya sempurna (berwarna putih). Identitas suatu warna ditentukan panjang gelombang cahaya tersebut. Sebagai contoh warna biru memiliki panjang gelombang 460 nanometer.
Panjang gelombang warna yang masih bisa ditangkap mata manusia berkisar antara 380-780 nanometer. Dalam peralatan optis, warna bisa pula berarti interpretasi otak terhadap campuran tiga warna primer cahaya: merah, hijau, biru yang digabungkan dalam komposisi tertentu. Misalnya pencampuran 100% merah, 0% hijau, dan 100% biru akan menghasilkan interpretasi warna magenta.

Setiap warna mampu memberikan kesan dan identitas tertentu sesuai kondisi sosial pengamatnya.
Misalnya:
Warna PUTIH akan memberi kesan suci dan dingin di daerah Barat karena berasosiasi dengan salju. Sementara di kebanyakan negara Timur warna putih memberi kesan kematian dan sangat menakutkan karena berasosiasi dengan kain kafan (meskipun secara teoritis sebenarnya putih bukanlah warna).
Di dalam ilmu warna, HITAM dianggap sebagai ketidakhadiran seluruh jenis gelombang warna. Sementara putih dianggap sebagai representasi kehadiran seluruh gelombang warna dengan proporsi seimbang. Secara ilmiah, keduanya bukanlah warna, meskipun bisa dihadirkan dalam bentuk pigmen.


Pengelompokan Warna
A. Warna Netral
Adalah warna warna yang tidak lagi memiliki kemurnian warna atau dengan kata lain bukan merupakan warna primer maupun warna sekunder.
Warna Netral merupakan hasil campuran ketiga warna dasar dalam proporsi 1:1:1. warna ini sering muncul sebagai penyeimbang warna-warna kontras di alam. biasanya hasil campuran yang tepat akan menuju hitam.

B. Warna Kontras atau Komplementer
Adalah warna yang berkesan berlawanan satu dengan lainnya. warna kontras bisa didapatkan dari warna yang berseberangan (memotong titik tengah segitiga) terdiri atas warna primer dan warna sekunder.
Tetapi tidak menutup kemungkinan pula membentuk warna kontras dengan mengolah nilai ataupun kemurnian warna. contoh warna kontras adalah merah dengan hijau, kuning dengan ungu dan biru dengan jingga. 

C. Warna Panas 
Adalah Kelompok warna dalam rentang setengah lingkaran didalam lingkaran warna mulai dari merah hingga kuning. warna ini menjadi simbol riang, semangat, marah dsb. warna panas mengesankan jarak yang dekat.
Warna Panas
D. Warna Dingin
Adalah kelompok warna dalam rentang setengah lingkaran di dalam lingkaran warna mulai dari hijau hingga ungu. warna ini menjadi simbol kelembutan, sejuk, nyaman dsb. warna dingin mengesankan jarak yang jauh.
Warna Dingin

Animasi Komputer

Animasi merupakan suatu teknik menampilkan gambar berurut sedemikian rupa sehingga penonton merasakan adanya ilusi gerakan (motion) pada gambar yang ditampilkan. Secara umum ilusi gerakan merupakan perubahan yang dideteksi secara visual oleh mata penonton sehingga tidak harus perubahan yang terjadi merupakan perubahan posisi sebagai makna dari istilah 'gerakan'. Perubahan seperti perubahan warna pun dapat dikatakan
 sebuah animasi.

Animasi adalah menghidupkan gambar, sehingga anda perlu mengetahui dengan pasti setiap detail karakter anda, mulai dari tampak (depan, belakang, dan samping) detail muka si karakter dalam berbagai ekspresi (normal, diam, marah, senyum, ketawa, kesal, dll.) lalu pose/ gaya khas karakter bila sedang melakukan kegiatan tertentu yang menjadi ciri khas si karakter tersebut. Bahkan seorang Sinchan dengan karakter yang sederhana tetapi mempunyai kekuatan personality-nya sehingga membuat penonton tahu betul sifat-sifatnya. Jadi perlu diperhatikan bahwa karakter anda bukan sekedar gambar tetapi mempunyai kelakuan tertentu yang seolah-olah punya jiwa. Karena animasi adalah membuat gambar anda kelihatan hidup, sehingga kita bisa mempengaruhi emosi penonton menjadi turut merasa sedih, ikutan menangis, jatuh cinta, kesal, gembira bahkan tertawa terbahak-bahak.

12 Prinsip Dasar Animasi
Untuk memahami 12 prinsip dasar animasi dapat dilihat dari sebuah gerak dan memahaminya secara berurutan. Kedua belas prinsip tersebut adalah:

1. Pose dan gerakan antara (Pose-To-Pose and Inbetween)
Sebagai misal kita mengambil adegan orang berjalan dengan menggunakan kamera. Bentangkan film yang sudah jadi dan akan terlihat rangkaian gambar yang berkesinambungan yang apabila diputar dengan kecepatan 24 frame per detik (film) atau 25 frame per detik (PAL) akan menghasilkan gambar bergerak.

Terkadang sulit untuk langsung meng-copy semua gerakan pada tiap frame. Untuk mempermudah seorang animator akan membagi sekuens gerakan dalam 2 bagian, yaitu pose dan gerakan antara.
Pose adalah gerakan paling ekstrim dari tiap gerakan yang ada dan inbetween adalah gerakan antara suatu pose ke pose lainnya. Pada animasi 2D key animator akan menggambar key pose. Lalu inbetween melanjutkan dengan membuat gerakan antara satu pose ke pose yang lainnya.

2. Pengaturan waktu (Timing)
Dengan mengatur durasi gerakan, suatu karakter bisa terlihat berbeda dengan karakter yang lain. Walaupun posenya sama, tetapi dengan durasi gerak yang berbeda, maka ekspresi gerakan yang dihasilkan juga berbeda. Misalnya gerak lambat (jarak antar key pose cukup jauh), bergerak biasa, atau gerak cepat (jarak antar key pose lebih dekat).
3. Gerakan sekunder (Secondary Action)
Gerakan sekunder adalah gerakan yang terjadi akibat gerakan yang lain dan merupakan satu kesatuan sistem yang tidak terpisahkan dari gerakan utama. Misalnya pada saat melangkah, tangan kita akan mengimbangi langkah kaki kita, pinggang kita akan ikut berputar dan badan kita akan ikut condong bergerak ke kiri dan ke kanan. Gerakan tersebut adalah akibat dari gerakan utama yaitu langkah kaki yang terjadi akibat reaksi alamiah tubuh untuk tetap seimbang. Untuk menciptakan gerakan sekunder menambah gerak alami, gerakan sekunder tidak boleh melebihi gerakan utama.

4. Akselerasi (Ease In and Out)
Setiap benda diam cenderung tetap diam dan setiap benda bergerak akan tetap bergerak kecuali mengalami percepatan atau akselerasi (hukum kelembaman Newton). Dari suatu pose yang diam ke sebuah gerakan akan terjadi percepatan dan dari gerakan sebuah pose akan terjadi perlambatan.

5. Antisipasi (Anticipation)
Pada dasarnya semua gerakan akan terjadi dalam 3 bagian, bagian awal yang disebut antisipasi, gerakan itu sendiri dan gerakan akhir yang disebut gerakan penutup (follow through). Misalnya pada saat kita meloncat kita akan menekuk kedua kaki kita, membungkukkan badan dan menarik kedua tangan ke bawah, barulah kita meloncat. Gerakan pendahuluan inilah yang disebut antisipasi.

Pada film animasi 2D sering kita melihat tokoh kartun yang menghilang dari layar dengan meninggalkan segumpal asap tebal. Sebelum lari tokoh tersebut memasang pose persiapan, kaki ditarik menjauh arah lari dan tangan merentang bersiap-siap lari dan kemudian tokoh itupun melesat dan meninggalkan asap tebal.

6. Gerakan lanjutan dan perbedaan waktu gerak (Follow Through and Overlapping Action)
Setiap benda yang bergerak akan cenderung tetap bergerak, bahkan setelah mendapat gaya yang menghentikannya (hukum kelembaman Newton). Misalnya saat kita berlari dan tiba-tiba berhenti. Badan kita akan sedikit terlempar ke depan, sebelum akhirnya kembali ke titik seimbang. Perhatikan setiap gerakan yang kita lakukan, kita akan menemukan dan merasakan "gerakan berlebih" pada setiap akhir gerakan yang kita lakukan. Gerakan tersebut yang disebut sebagai gerak penutup (follow trough).

Tidak semua gerakan terjadi atau berhenti pada saat yang bersamaan. Selalu ada selang waktu antara gerakan utama dengan gerakan sekunder. Seringkali gerakan-gerakan tersebut terasa bertintihan. Prinsip inilah yang dikenal sebagai overlapping action.

Biasanya gerakan sekunder akan mengalami perbedaan waktu gerak (overlapping action). Jika seekor binatang bergerak, ekornya akan ikut bergerak, tetapi gerakan ekor tidak berhenti bersamaan dengan gerakan binatang tersebut, melainkan berhenti beberapa saat lebih panjang.

7. Gerakan melengkung (Arc)
Pada saat kita menggelengkan kepala, gerakan yang dihasilkan adalah gerakan yang sedikit melengkung ke arah atas atau bawah yang membentuk lingkaran. Gerakan inilah yang disebut gerakan melengkung (arc) yang merupakan prinsip yang diterapkan pada animasi.

8. Dramatisasi gerakan (Exaggeration)
Dramatisasi gerakan adalah tindakan mempertegas apa yang sedang dilakukan. Sering kita melihat seorang aktor theater mendramatisasi atau melebih-lebihkan aksi mereka agar terlihat jelas oleh penonton. Saat marah sang aktor akan berkacak pinggang dan menuding-nuding lawannya.

Demikian pula saat tertawa, ia berkacak pinggang, menarik bagian atas tubuhnya ke belakang, mengangkat kepalanya ke atas, membuka mulut selebar-lebarnya dan akhirnya mengeluarkan suara tawa sedemikian kerasnya.

9. Elastisitas (Squash and Stretch)
 Hal penting yang harus dilakukan adalah setiap benda yang mengalami pelenturan tetap akan mempertahankan volumenya. Jika sebuah karet berubah volumenya, realitas yang ada akan hilang. Pada animasi prinsip ini tidak diberlakukan begitu saja, melainkan pada bagian tertentu dari suatu benda. Otot bisep misalnya, mengalami pelenturan yang lebih besar pada bagian tengahnya dibanding bagian tendon atau tepinya.

Meskipun benda rigid atau benda relistis (seperti manusia) tampak tidak mengalami pelenturan, prinsip ini tetap saja digunakan. Pada saat melompat ke bawah badan kita akan tertekuk sedikit, gerakan ini yang merupakan gerakan sekunder mirip dengan peristiwa "penyek" yang terjadi pada bola karet yang dilempar ke lantai.

10 prinsip animasi pertama dikenalkan pertama kali oleh Fank Thomas dan Ollie Johnston. Lebih lanjut lagi John Lasseter (sutradara Toys Story) menambahkan 2 prinsip lagi yang akan segera kita pelajari bersama-sama.
 10. Penempatan di bidang gambar (Staging)
Selain animasi yang bagus, cara menempatkan karakter dihadapan kamera juga mutlak diperlukan. Dengan menempatkan kamera atau karakter secara tepat, konsep yang kita inginkan dapat terbaca dengan mudah oleh penonton. Prinsip yang paling penting adalah prinsip sinematography dan prinsip silluet.

Dengan menempatkan kamera yang rendah, sebuah karakter akan terlihat besar dan menakutkan. Demikian juga dengan penempatan kamera yang tinggi, karakter akan terlihat kecil atau terlihat bingung. Penempatan kamera dengan arah miring (rolling) akan membuat gerakan terlihat dinamis. Penempatan secara simetris akan membuat karakter terlihat formal atau berwibawa, penempatan arah gerak secara diagonal juga akan membuat adegan terlihat dinamis.

Melihat silluet karakter (hanya pada bagian foreground vs background) juga memberikan ketegasan pose sebuah karakter. Jika silluet karakter terlihat ambigu atau tidak jelas, maka akan sulit bagi penonton untuk mencerna aksi yang dilakukan karakter.

11. Daya tarik karakter (Appeal)
Setiap karakter dalam animasi haruslah mempunyai daya tarik yang unik, yang membedakannya dengan karakter yang lain. Bisa saja suatu karakter rerlihat unik dari sisi desain, atau dari caranya menunjukkan ekspresi pribadinya.

12. Penjiwaan Karakter
Kemampuan akting adalah hal yang harus dimiliki oleh setiap karakter animator. Akting memungkinkan animator menterjemahkan tingkah laku dan daya tarik karakter secara tepat, sehingga penonton merasakan apa yang dimaui oleh seorang animator, bahkan walaupun tanpa dialog sekalipun.

Cara paling mudah menghayati suatu peran adalah dengan membayangkan karakter kita sebagai seorang aktor. Bayangkan kita menjadi diri mereka dan mulailah meniru tingkah laku dan ekspresi mereka.

"Animator yang baik adalah animator yang mampu menggerakkan seluruh anggota tubuhnya dan menterjemahkannya ke dalam suatu karya animasi."
Tanpa penjiwaan sebuah karakter akan terlihat datar, kaku dan tidak manusiawi. Penjiwaan peran adalah "roh" dari setiap karakter.

Membuat Pencahayaan Global Illumination (GI)

Kali ini Anda akan membuat pencahayaan Global Illumination atau istilah kerennya adalah GI. Apa itu GI? GI adalah pencahayaan natural seperti pencahayaan yang terjadi didalam dunia nyata dimana cahaya yang jatuh mengenai objek, akan dipantulkan kembali. Sering diistilahkan sebagai “Bouncing Light” atau disebut juga pencahayaan Tidak Langsung (Indirect Illumination). Fitur yang digunakan adalah Skylight dan Light Tracer.


Teknik ini berbeda dengan teknik menggunakan lampu Omni, Target Direct maupun Target Spot. Ketiga jenis lampu tersebut merupakan pencahayaan langsung (Direct Illumination), yakni kebalikan dari teknik GI.

Bagaimana cara membuat pencahayaan GI? Ini caranya.

Langkah 1 
Buka sebuah file 3DS Max yang Anda punya

Langkah 2
Buka Tab Create > Lights > Skylight. Klik sekali di Viewport mana saja dan disembarang posisi. Misalkan Anda klik di Viewport Front.

Gambar 01. Opsi Skylight
Langkah 3
Pastikan objek Skylight terpilih dan Anda buka Tab Modify. Misalnya Anda tur nilai Multiplier = 1.15. Ini adalah nilai untuk meningkatkan intensitas cahayanya (Anda bebas mengatur nilai multiplier ini).

Gambar 02. Multiplier = 1.15
Langkah 4
Kemudian Anda klik Menu Rendering, lalu klik Advanced Lighting dan klik opsi Light Tracer.

Gambar 03. Fitur Light Tracer
Langkah 5
Akan terbuka jendela Render Scene. Anda klik tombol Render

Gambar 04. Tombol Render
Langkah 6
SIMSALABIM! Hasil Render tampak sangat realistic dan menarik.

Gambar 05. Hasil Render

Tutorial ini diarsipkan di ilmugrafis pada kategori 3DS Max. Selamat mencoba Membuat Pencahayaan Global Illumination (GI), pelajari juga tutorial sebelumnya yaitu Menambahkan Background pada Viewport dan tutorial selanjutnya kita akan belajar yaitu Menghapus Object - Object yang Teranimasi

Membuat Background di 3DsMax

Suatu karya berupa gambar 3D maupun animasi 3d akan lebih indah dan menarik apabila memiliki Background didalamnya sehingga akan membuat gambar atau animasi tersebut menjadi lebih hidup dan nyata.
Bagaimana membuat Background, menambahkan background, berikut panduan langkah-langkah memberikan background:
1. Buka salah satu file 3ds max yang Anda miliki. Misalkan saya memiliki gambar sebuah pemandangan digurun.

Gambar 01 . Hasil Render gambar tanpa background.

2. Selanjutnya klik Menu Rendering > Environment. Akan terbuka jendela Environment & Effects.

3. Di rollout Common Parameters, pada kategori Background, klik tulisan None pada Environment Map, kemudian akan terbuka jendela Material/Map Browser dan Anda klik ganda pada pilihan Bitmap.

4. Anda cari gambar Image yang Anda inginkan, lalu klik tombol Open. Maka gambar tersebut akan langsung menjadi gambar Background di Scene 3D Anda. Tutup jendela Environment & Effects.

Gambar 02. Contoh image bitmap yang diambil sebagai latar background.


Gambar 03. Pemberian image bitmap. 

5. Aktifkan Viewport Perspective dan Anda Render (Rendering>Render>Render).

Gambar 04. Hasil Render pemberian Background.

Selamat mencoba.
Tutorial Membuat Background di 3dsMAX ini diarsipkan di ilmugrafis pada kategori 3DS Max

Jumat, 07 Juni 2013

Cara Membuka Situs Yang Diblokir Terbaru

Cara Membuka Situs Yang Diblokir - Kebijakan pemerintah agar situs ilegal seperti situs porno, hacking, Phising diblokir haruslah ditanggapi secara positif, karena dengan diblokirnya situs berkonten "merusak" akan meminimalkan risiko pengaruh buruk kepada pengguna internet yang masih belum mapan secara pemikiran seperti anak-anak remaja misalnya.

Cara memblokir situs yang dilakukan pemerintah adalah dengan mewajibkan para provider, maupun pengusaha warnet untuk memasang program untuk memblokir situs-situs yang dimaksud, seperti Nawala dan internet positif.

Namun, pemblokiran dengan cara itu juga belum cukup efektif, karena masih banyak cara membuka situs yang diblokir oleh nawala maupun internet positif, bahkan pada awal-awal kebijakan ini dikeluarkan, Telkom memberi tips membuka situs yang diblokir, karena memang memblokir situs dapat menurunkan perkembangan pemakai internet.

Cara membuka situs yang diblokir banyak sekali kita jumpai di internet, mulai dari menggunakan software, proxy, DNS, dan cara terbaru lainnya juga terus berkembang, seiring banyaknnya pengguna internet mencari cara agar situs yang inginkan dapat dibuka walau diblokir.

Pada tulisan ini, kami akan mencoba membagi informasi cara membuka situs yang diblokir yang kami peroleh dari berbagai sumber , harapan kami cara ini jangan dipergunakan untuk hal-hal yang tidak baik, gunakanlah informasi ini sebagai bahan pelajaran, khususnya bagi pemerintah, provider maupun pengusaha warnet agar dapat mengantisipasi cara-cara ini.

Berikut kumpulan cara membuka situs yang diblokir yang dimaksud :
Membuka situs yang diblok menggunakan Web Proxy
Banyak layanan web proxy saat ini baik yang berbayar maupun yang gratis. Diantaranya:
http://webproxy.to
http://hidemyass.com
http://webproxy.ca
http://www.freshproxylist.net
Cara menggunakannya adalah masuk ke salah satu alamat web proxy di atas dan masukkan url atau alamat website yang diblokir.

Membuka Situs Yang diblokir dengan software Spotflux
Adapun tahapan-tahapan untuk membuka situs internet yang diblokir dengan Spotflux cukup sangat mudah, dan bisa dilihat seperti langkah-langkah berikut ini:

1. Download Spotflux
2. Instal Spotflux
3. Jalankan ( Run ) Spotflux
4. Klik Tombol "Enable"
5. Anda sudah terhubung ke server proxy dan siap untuk browsing

Membuka website yang diblokir menggunakan Open DNS 
Biasanya para penyedia layanan internet menggunakan DNS khusus untuk proses pemblokirannya, seperti menggunakan DNS Nawala. Maka untuk mengatasinya agar website tidak diblokir lagi oleh DNS Nawala yaitu dengan cara mengganti DNS yang dipakai di komputer dengan DNS Open. Caranya:

   1. Tekan tombol berlogo Windows + R secara bersamaan di keyboard (Start > Run > ketik: cmd > Enter) dan ketikkan ncpa.cpl, OK.
   2. Akan muncul halaman Network Connections, Klik kanan pada Network Connection yang aktif, pilih Properties > Internet Protocol Service 4 (TCP/IPv4)
   3. Lalu beri centang Use the following DNS server addresses, lalu isi Preffered DNS server 8.8.8.8 dan Alternate DNS server 8.8.4.4. Selesai, dan tekan OK.

Selain DNS Google masih banyak lagi DNS Open lainnya, untuk lebih mudahnya lagi gunakan software DNS Jumper, download di sini. Cara menggunakannya buka aplikasi DNS Jumper, pilih Network Connection yang aktif di menu Select Network Card, Choose a Free DNS Service pilih yang paling cepat (Untuk mengetahui DNS tercepat klik Fastest DNS terlebih dahulu, lihat yang millisecond nya lebih kecil) kemudian tekan tombol Apply.


Membuka situs yang diblokir dengan mengakses IP Adressnya
Terkadang yang pem-blokir-an website hanya pada domain name nya saja, apabila kasusnya seperti ini cara yang paling cepat adalah dengan menggunakan IP Address Website tersebut untuk membukanya. Misal http://google.com bisa diakses dengan http://74.125.135.103/.

Untuk mengetahui IP Address sebuah website caranya masuk ke command prompt (Start > Run > ketik: cmd > Enter) dan ketik ping nama_situs.com lalu tekan enter. Maka akan muncul alamat IP situs tersebut.

Cara Membuka Situs Yang Di BLOKIR Dengan SOftware Hotspot Shield.
Hotspot Shield menciptakan virtual private network (VPN), Hotspot Shield aplikasi keamanan bebas untuk men-download, menggunakan teknologi VPN terbaru, dan mudah diinstal dan digunakan. Hotspot Shield dapat membuka website yang terblokir.

Buka situs atau website yang diblokir menggunakan layanan Short URL
Alternatif lain untuk membuka situs yang diblokir adalah dengan memanfaatkan layanan short url seperti:
http://www.tinyurl.com
http://www.moourl.com
http://www.snipurl.com
http://www.shorturl.com
Cara menggunakannya, masuk ke salah satu alamat shorting URL lalu masukkan alamat website yang diblokir. Setelah itu anda akan mendapatkan url baru yang telah di short, dan buka URL baru tersebut di web browser anda.

Buka website yang diblokir dengan penerjemah online

Banyak layanan penerjemah online yang populer diantarnya:
http://world.altavista.com
http://translate.google.com
- Buka Google Translate.
- Masukkan URL situs yang akan diakses kemudian tekan enter.
- Google akan menerjemahkan situs web dalam bahasa yang Anda pilih.
http://www.worldlingo.com
http://www.windowslivetranslator.com
Cukup masukkan URL situs yang diblok dan pilih opsi terjemahan ke dalam bahasa yang Anda inginkan (atau bahasa yang sama).
(untuk beberapa situs tidak dapat, seperti situs layanan video)

Menggunakan IP Proxy Server untuk membuka situs yang diblokir
Dengan menggunakan Proxy Server maka koneksi internet kita akan di direct ke alamat proxy tersebut, ini memungkinkan kita untuk melewati pemblokiran website. Beberapa website penyedia list proxy server adalah:
http://spys.ru/en/
http://www.freeproxylists.net/
http://www.proxynova.com/proxy-server-list/
http://www.ip-adress.com/proxy_list/
Cara menggunakannya, ambil IP Proxy dan port yang akan kita pakai dari website proxy list tadi, misal 182.201.253.66:8080 (182.201.253.66 = IP Proxy, 8080 = Port Proxy).

   1. Buka Firefox > Tool > Option > Advanced > Network > Setting
   2. Pilih > Manual Proxy Configuration
   3. Pilih > HTTP, Masukkan: IP Proxy 182.201.253.66, Pilih > Port, Masukkan: Port Proxy 8080
   4. Beri centang pada "Use this proxy server for all protocols"
   5. Tekan OK

kumpulan Cara diatas hanyalah sebagian dari banyak cara yang dapat dilakukan untuk membuka situs yang diblokir, namun pada prinsipnya caranya adalah hanya mengalihkan, mengganti dan menompengi, baik IP, DNS dan alamat situs. Singkat kata bahwa software nawala dan internet postif masih banyak celah yanp perlu diperbaiki.

Demikianlah sedikit ulasan kami tentang cara membuka situs yang diblokir, sekali lagi, pergunakanlan informasi ini untuk hal yang baik. Semoga bermanfaat, sekian dan terimakasih.

Rabu, 05 Juni 2013

Membuat Web Forum dengan PHP dan MySQL

Langkah 1 : Membuat Tabel Database

Sebagai langkah pertama, kita akan membuat database dengan nama database yang berisikan tabel user, categoriestopics, dan posts.

Tabel user :

CREATE TABLE users (
user_id     INT(8) NOT NULL AUTO_INCREMENT,
user_name    VARCHAR(30) NOT NULL,
user_pass      VARCHAR(255) NOT NULL,
user_email    VARCHAR(255) NOT NULL,
user_date    DATETIME NOT NULL,
user_level    INT(8) NOT NULL,
UNIQUE INDEX user_name_unique (user_name),
PRIMARY KEY (user_id)
) TYPE=INNODB;


Tabel categories :

CREATE TABLE categories (
cat_id              INT(8) NOT NULL AUTO_INCREMENT,
cat_name         VARCHAR(255) NOT NULL,
cat_description     VARCHAR(255) NOT NULL,
UNIQUE INDEX cat_name_unique (cat_name),
PRIMARY KEY (cat_id)
) TYPE=INNODB;


Tabel topics :

CREATE TABLE topics (
topic_id        INT(8) NOT NULL AUTO_INCREMENT,
topic_subject          VARCHAR(255) NOT NULL,
topic_date        DATETIME NOT NULL,
topic_cat        INT(8) NOT NULL,
topic_by        INT(8) NOT NULL,
PRIMARY KEY (topic_id)
) TYPE=INNODB; 


Tabel posts : 

CREATE TABLE posts (
post_id         INT(8) NOT NULL AUTO_INCREMENT,
post_content        TEXT NOT NULL,
post_date         DATETIME NOT NULL,
post_topic        INT(8) NOT NULL,
post_by        INT(8) NOT NULL,
PRIMARY KEY (post_id)
) TYPE=INNODB;



Selanjutnya kita akan menghubungkan tabel-tabel tersebut. Hubungkan topics ke categories :
ALTER TABLE topics ADD FOREIGN KEY(topic_cat) REFERENCES categories(cat_id) ON DELETE CASCADE ON UPDATE CASCADE

hubungkan topics ke user :

ALTER TABLE topics ADD FOREIGN KEY(topic_by) REFERENCES users(user_id) ON DELETE RESTRICT ON UPDATE CASCADE; 

selanjutnya hubungkan post ke topics :

ALTER TABLE posts ADD FOREIGN KEY(post_topic) REFERENCES topics(topic_id) ON DELETE CASCADE ON UPDATE CASCADE; 

dan yang terakhir adalah menghubungkan posts ke user : 

ALTER TABLE posts ADD FOREIGN KEY(post_by) REFERENCES users(user_id) ON DELETE RESTRICT ON UPDATE CASCADE;


Langkah 2 : Pengenalan Header/Footer System

Pada langkah kedua ini, kita akan membuat header dan body untuk halaman forum kita nanti

header.php :

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">


   
   
   
    PHP-MySQL forum
   

My forum


   

   


$error = false;
if($error = false)
{
     //the beautifully styled content, everything looks good
     echo '

some text
';
}
else
{
     //bad looking, unstyled error :-(
}

?>


body {
    background-color: #4E4E4E;
    text-align: center;            /* make sure IE centers the page too */
}
#wrapper {
    width: 900px;
    margin: 0 auto;             /* center the page */
}
#content {
    background-color: #fff;
    border: 1px solid #000;
    float: left;
    font-family: Arial;
    padding: 20px 30px;
    text-align: left;
    width: 100%;                /* fill up the entire div */
}
#menu {
    float: left;
    border: 1px solid #000;
    border-bottom: none;        /* avoid a double border */
    clear: both;                /* clear:both makes sure the content div doesn't float next to this one but stays under it */
    width:100%;
    height:20px;
    padding: 0 30px;
    background-color: #FFF;
    text-align: left;
    font-size: 85%;
}
#menu a:hover {
    background-color: #009FC1;
}
#userbar {
    background-color: #fff;
    float: right;
    width: 250px;
}
#footer {
    clear: both;
}
/* begin table styles */
table {
    border-collapse: collapse;
    width: 100%;
}
table a {
    color: #000;
}
table a:hover {
    color:#373737;
    text-decoration: none;
}
th {
    background-color: #B40E1F;
    color: #F0F0F0;
}
td {
    padding: 5px;
}
/* Begin font styles */
h1, #footer {
    font-family: Arial;
    color: #F1F3F1;
}
h3 {margin: 0; padding: 0;}
/* Menu styles */
.item {
    background-color: #00728B;
    border: 1px solid #032472;
    color: #FFF;
    font-family: Arial;
    padding: 3px;
    text-decoration: none;
}
.leftpart {
    width: 70%;
}
.rightpart {
    width: 30%;
}
.small {
    font-size: 75%;
    color: #373737;
}
#footer {
    font-size: 65%;
    padding: 3px 0 0 0;
}
.topic-post {
    height: 100px;
    overflow: auto;
}
.post-content {
    padding: 30px;
}
textarea {
    width: 500px;
    height: 200px;
}
   







Langkah 3: Memulai

Sebelum kita bisa membaca apa pun dari database kitakita perlu sambunganItulah connect.phpKita akan memasukkannya dalam setiap file yang akan kita buat.

//connect.php
$server    = 'localhost';
$username    = 'usernamehere';
$password    = 'passwordhere';
$database    = 'databasenamehere';
if(!mysql_connect($server, $username,  $password))
{
     exit('Error: could not establish database connection');
}
if(!mysql_select_db($database)
{
     exit('Error: could not select the database');
}
?>



Langkah 4: Displaying the Forum Overview

create_cat.php :

//create_cat.php
include 'connect.php';
include 'header.php';
echo ' ';     
echo '
';

        echo '

Category name

Category description goes here';
    echo '
';    echo '
';

            echo 'Topic subject at 10-10';
    echo '
';echo '';include 'footer.php';?>


Langkah 5: Mendaftarkan Pengguna

Mari kita mulai dengan membuat bentuk HTML sederhana sehingga pengguna baru dapat mendaftarLihat halaman signup.php di bawah.


//signup.php
include 'connect.php';
include 'header.php';
echo '

Sign up

';
if($_SERVER['REQUEST_METHOD'] != 'POST'){
    /*the form hasn't been posted yet, display it      note that the action="" will cause the form to post to the same page it is on */
    echo '
          Username:          Password:         Password again:         
E-mail:               
';}
else{
    /* so, the form has been posted, we'll process the data in three steps:        1.    Check the data        2.    Let the user refill the wrong fields (if necessary)        3.    Save the data    */
    $errors = array();
 /* declare the array for later use */
    if(isset($_POST['user_name']))    {
        //the user name exists
        if(!ctype_alnum($_POST['user_name']))
        {
            $errors[] = 'The username can only contain letters and digits.';
        }
        if(strlen($_POST['user_name']) > 30)
        {            
$errors[] = 'The username cannot be longer than 30 characters.';
        }
    }
    else
    {
        $errors[] = 'The username field must not be empty.';
    }
    if(isset($_POST['user_pass']))
    {        
if($_POST['user_pass'] != $_POST['user_pass_check'])
        {            
$errors[] = 'The two passwords did not match.';
        }
    }
    else
    {
        $errors[] = 'The password field cannot be empty.';
    }
    if(!empty($errors))
 /*check for an empty array, if there are errors, they're in this array (note the ! operator)*/
    {
        echo 'Uh-oh.. a couple of fields are not filled in correctly..';
        echo '
    ';

        foreach($errors as $key => $value) /* walk through the array so all the errors get displayed */
        {
            echo '
  • ' . $value . '
  • ';
     /* this generates a nice error list */
            }
            echo '
    ';    }
        else
        {
            //the form has been posted without, so save it
            //notice the use of mysql_real_escape_string, keep everything safe!
            //also notice the sha1 function which hashes the password
            $sql = "INSERT INTO users(user_name, user_pass, user_email ,user_date, user_level)
                    VALUES('" . mysql_real_escape_string($_POST['user_name']) . "',                    
    '" . sha1($_POST['user_pass']) . "',                       '" . mysql_real_escape_string($_POST['user_email']) . "',NOW(),0)";
            $result = mysql_query($sql);
            if(!$result)
            {
                //something went wrong, display the error
                echo 'Something went wrong while registering. Please try again later.';
                //echo mysql_error();
     //debugging purposes, uncomment when needed
            }
            else
            {
                echo 'Successfully registered. You can now sign in and start posting! :-)';
            }
        }
    }
    include 'footer.php';
    ?>


    Langkah 6: Menambahkan Otentikasi dan Tingkat Pengguna

    File signin.php ada di bawah ini :
    //signin.php
    include 'connect.php';
    include 'header.php';
    echo '

    Sign in

    ';
    //first, check if the user is already signed in. If that is the case, there is no need to display this page
    if(isset($_SESSION['signed_in']) && $_SESSION['signed_in'] == true)
    {
        echo 'You are already signed in, you can sign out if you want.';
    }
    else
    {
        if($_SERVER['REQUEST_METHOD'] != 'POST')
        {
            /*the form hasn't been posted yet, display it
              note that the action="" will cause the form to post to the same page it is on */
            echo '

                Username:
                Password:
                
            
    ';
        }
        else
        {
            /* so, the form has been posted, we'll process the data in three steps:
                1.    Check the data
                2.    Let the user refill the wrong fields (if necessary)
                3.    Varify if the data is correct and return the correct response
            */
            $errors = array(); /* declare the array for later use */
            if(!isset($_POST['user_name']))
            {
                $errors[] = 'The username field must not be empty.';
            }
            if(!isset($_POST['user_pass']))
            {
                $errors[] = 'The password field must not be empty.';
            }
            if(!empty($errors)) /*check for an empty array, if there are errors, they're in this array (note the ! operator)*/
            {
                echo 'Uh-oh.. a couple of fields are not filled in correctly..';
                echo '
      ';
                  foreach($errors as $key => $value) /* walk through the array so all the errors get displayed */
                  {
                      echo '
    • ' . $value . '
    • '; /* this generates a nice error list */
                  }
                  echo '
    ';
            }
            else
            {
                //the form has been posted without errors, so save it
                //notice the use of mysql_real_escape_string, keep everything safe!
                //also notice the sha1 function which hashes the password
                $sql = "SELECT
                            user_id,
                            user_name,
                            user_level
                        FROM
                            users
                        WHERE
                            user_name = '" . mysql_real_escape_string($_POST['user_name']) . "'
                        AND
                            user_pass = '" . sha1($_POST['user_pass']) . "'";
                $result = mysql_query($sql);
                if(!$result)
                {
                    //something went wrong, display the error
                    echo 'Something went wrong while signing in. Please try again later.';
                    //echo mysql_error(); //debugging purposes, uncomment when needed
                }
                else
                {
                    //the query was successfully executed, there are 2 possibilities
                    //1. the query returned data, the user can be signed in
                    //2. the query returned an empty result set, the credentials were wrong
                    if(mysql_num_rows($result) == 0)
                    {
                        echo 'You have supplied a wrong user/password combination. Please try again.';
                    }
                    else
                    {
                        //set the $_SESSION['signed_in'] variable to TRUE
                        $_SESSION['signed_in'] = true;
                        //we also put the user_id and user_name values in the $_SESSION, so we can use it at various pages
                        while($row = mysql_fetch_assoc($result))
                        {
                            $_SESSION['user_id']     = $row['user_id'];
                            $_SESSION['user_name']     = $row['user_name'];
                            $_SESSION['user_level'] = $row['user_level'];
                        }
                        echo 'Welcome, ' . $_SESSION['user_name'] . '. Proceed to the forum overview.';
                    }
                }
            }
        }
    }
    include 'footer.php';
    ?>
       

    //set the $_SESSION['signed_in'] variable to TRUE
    $_SESSION['signed_in'] = true;
    //we also put the user_id and user_name values in the $_SESSION, so we can use it at various pages
    while($row = mysql_fetch_assoc($result))
    {
         $_SESSION['user_id'] = $row['user_id'];
         $_SESSION['user_name'] = $row['user_name'];
    }
    ?>



    Langkah 7 : Membuat Kategori

    Untuk membuat halaman kategori, buatlah form terlebih dahulu.



         Category name:
         Category description:
       


    //create_cat.php
    include 'connect.php';
    if($_SERVER['REQUEST_METHOD'] != 'POST')
    {
        //the form hasn't been posted yet, display it
        echo '


              Category name:
             Category description:
            
          
    ';
    }
    else
    {
        //the form has been posted, so save it
        $sql = ìINSERT INTO categories(cat_name, cat_description)
            VALUES('' . mysql_real_escape_string($_POST['cat_name']) . ì',
                  '' . mysql_real_escape_string($_POST['cat_description']) . ì')';
        $result = mysql_query($sql);
        if(!$result)
        {
            //something went wrong, display the error
            echo 'Error' . mysql_error();
        }
        else
        {
            echo 'New category successfully added.';
        }
    }
    ?>

    Langkah 8Menambahkan Kategori ke index.php

    Kami telah membuat beberapa kategorijadi sekarang kami dapat menampilkannya di halaman depan 

    index.php :
    //create_cat.php
    include 'connect.php';
    include 'header.php';
    $sql = "SELECT
                cat_id,
                cat_name,
                cat_description,
            FROM
                categories";
    $result = mysql_query($sql);
    if(!$result)
    {
        echo 'The categories could not be displayed, please try again later.';
    }
    else
    {
        if(mysql_num_rows($result) == 0)
        {
            echo 'No categories defined yet.';
        }
        else
        {
            //prepare the table
            echo '
                 
                   
                   
                  ';
            while($row = mysql_fetch_assoc($result))
            {
                echo ' ';
                    echo '';
                    echo '';
                echo ' ';
            }
        }
    }
    include 'footer.php';
    ?>
    CategoryLast topic
    ';
                        echo '

    ' . $row['cat_name'] . '

    ' . $row['cat_description'];
                    echo '
    ';
                                echo 'Topic subject at 10-10';
                    echo '



    Langkah 9: Membuat Topik

    //create_cat.php
    include 'connect.php';
    include 'header.php';
    echo '

    Create a topic

    ';
    if($_SESSION['signed_in'] == false)
    {
        //the user is not signed in
        echo 'Sorry, you have to be signed in to create a topic.';
    }
    else
    {
        //the user is signed in
        if($_SERVER['REQUEST_METHOD'] != 'POST')
        {
            //the form hasn't been posted yet, display it
            //retrieve the categories from the database for use in the dropdown
            $sql = "SELECT
                        cat_id,
                        cat_name,
                        cat_description
                    FROM
                        categories";
            $result = mysql_query($sql);
            if(!$result)
            {
                //the query failed, uh-oh :-(
                echo 'Error while selecting from database. Please try again later.';
            }
            else
            {
                if(mysql_num_rows($result) == 0)
                {
                    //there are no categories, so a topic can't be posted
                    if($_SESSION['user_level'] == 1)
                    {
                        echo 'You have not created categories yet.';
                    }
                    else
                    {
                        echo 'Before you can post a topic, you must wait for an admin to create some categories.';
                    }
                }
                else
                {
                    echo '

                        Subject:
                        Category:';
                    echo '';
                    echo 'Message:
                       
                     
    ';
                }
            }
        }
        else
        {
            //start the transaction
            $query  = "BEGIN WORK;";
            $result = mysql_query($query);
            if(!$result)
            {
                //Damn! the query failed, quit
                echo 'An error occured while creating your topic. Please try again later.';
            }
            else
            {
                //the form has been posted, so save it
                //insert the topic into the topics table first, then we'll save the post into the posts table
                $sql = "INSERT INTO
                            topics(topic_subject,
                                   topic_date,
                                   topic_cat,
                                   topic_by)
                       VALUES('" . mysql_real_escape_string($_POST['topic_subject']) . "',
                                   NOW(),
                                   " . mysql_real_escape_string($_POST['topic_cat']) . ",
                                   " . $_SESSION['user_id'] . "
                                   )";
                $result = mysql_query($sql);
                if(!$result)
                {
                    //something went wrong, display the error
                    echo 'An error occured while inserting your data. Please try again later.' . mysql_error();
                    $sql = "ROLLBACK;";
                    $result = mysql_query($sql);
                }
                else
                {
                    //the first query worked, now start the second, posts query
                    //retrieve the id of the freshly created topic for usage in the posts query
                    $topicid = mysql_insert_id();
                    $sql = "INSERT INTO
                                posts(post_content,
                                      post_date,
                                      post_topic,
                                      post_by)
                            VALUES
                                ('" . mysql_real_escape_string($_POST['post_content']) . "',
                                      NOW(),
                                      " . $topicid . ",
                                      " . $_SESSION['user_id'] . "
                                )";
                    $result = mysql_query($sql);
                    if(!$result)
                    {
                        //something went wrong, display the error
                        echo 'An error occured while inserting your post. Please try again later.' . mysql_error();
                        $sql = "ROLLBACK;";
                        $result = mysql_query($sql);
                    }
                    else
                    {
                        $sql = "COMMIT;";
                        $result = mysql_query($sql);
                        //after a lot of work, the query succeeded!
                        echo 'You have successfully created your new topic.';
                    }
                }
            }
        }
    }
    include 'footer.php';
    ?>
        

    Langkah 10: Menampilkan Kategori

    Kita akan membuat halaman ikhtisar untuk satu kategoriKami baru saja membuat kategoriitu akan berguna untuk dapat melihat semua topik di dalamnyaPertamamembuat halaman yang disebut category.php.

    //create_cat.php
    include 'connect.php';
    include 'header.php';
    //first select the category based on $_GET['cat_id']
    $sql = "SELECT
                cat_id,
                cat_name,
                cat_description
            FROM
                categories
            WHERE
                cat_id = " . mysql_real_escape_string($_GET['id']);
    $result = mysql_query($sql);
    if(!$result)
    {
        echo 'The category could not be displayed, please try again later.' . mysql_error();
    }
    else
    {
        if(mysql_num_rows($result) == 0)
        {
            echo 'This category does not exist.';
        }
        else
        {
            //display category data
            while($row = mysql_fetch_assoc($result))
            {
                echo '

    Topics in ′' . $row['cat_name'] . '′ category

    ';
            }
            //do a query for the topics
            $sql = "SELECT
                        topic_id,
                        topic_subject,
                        topic_date,
                        topic_cat
                    FROM
                        topics
                    WHERE
                        topic_cat = " . mysql_real_escape_string($_GET['id']);
            $result = mysql_query($sql);
            if(!$result)
            {
                echo 'The topics could not be displayed, please try again later.';
            }
            else
            {
                if(mysql_num_rows($result) == 0)
                {
                    echo 'There are no topics in this category yet.';
                }
                else
                {
                    //prepare the table
                    echo '
                         
                          
                          
                          ';
                    while($row = mysql_fetch_assoc($result))
                    {
                        echo ' ';
                            echo '';
                            echo '';
                        echo ' ';
                    }
                }
            }
        }
    }
    include 'footer.php';
    ?>
    TopicCreated at
    ';
                                echo '

    ' . $row['topic_subject'] . '

    ';
                            echo '

    ';
                                echo date('d-m-Y', strtotime($row['topic_date']));
                            echo '


    Langkah 11: Tampilan Topik

    Pada tahap ini, kita tinggal menggantikan query pada bagian PHP dalam halaman category.phpQuery yang pertama untuk mengambil informasi dasar tentang topik:

    SELECT
        topic_id,
        topic_subject
    FROM
        topics
    WHERE
        topics.topic_id = " . mysql_real_escape_string($_GET['id'])


    Selanjutnya, kita mengambil semua posting dalam topik ini dari databaseQuery berikut memberi kita apa yang kita butuhkan:

    SELECT
        posts.post_topic,
        posts.post_content,
        posts.post_date,
        posts.post_by,
        users.user_id,
        users.user_name
    FROM
        posts
    LEFT JOIN
        users
    ON
        posts.post_by = users.user_id
    WHERE
        posts.post_topic = " . mysql_real_escape_string($_GET['id'])
        

    Langkah 12: Menambahkan Reply

    Mari kita membuat bagian terakhir yang hilang dari forum inikemungkinan untumenambahkan balasanKita akan mulai dengan membuat form.

    Kode lengkap reply.php terlihat seperti ini :



       
       


    //create_cat.php
    include 'connect.php';
    include 'header.php';
    if($_SERVER['REQUEST_METHOD'] != 'POST')
    {
        //someone is calling the file directly, which we don't want
        echo 'This file cannot be called directly.';
    }
    else
    {
        //check for sign in status
        if(!$_SESSION['signed_in'])
        {
            echo 'You must be signed in to post a reply.';
        }
        else
        {
            //a real user posted a real reply
            $sql = "INSERT INTO
                        posts(post_content,
                              post_date,
                              post_topic,
                              post_by)
                    VALUES ('" . $_POST['reply-content'] . "',
                            NOW(),
                            " . mysql_real_escape_string($_GET['id']) . ",
                            " . $_SESSION['user_id'] . ")";
            $result = mysql_query($sql);
            if(!$result)
            {
                echo 'Your reply has not been saved, please try again later.';
            }
            else
            {
                echo 'Your reply has been saved, check out the topic.';
            }
        }
    }
    include 'footer.php';
    ?>




    REFERENSI

    Padje, Evert, 2010, How to Create a PHP/MySQL Powered Forum from Scratch, viewed 26 Februari 2013, http://net.tutsplus.com/tutorials/php/how-to-create-a-phpmysql-powered-forum-from-scratch/

     

    Subscribe to our Newsletter

    Contact our Support

    Email us: Support@templateism.com

    Our Team Memebers