jQuery slideDown Guestbook

Salam logodc

Mau bagi2 tutorial nih bro untuk bikin guestbook dengan animasi slideDown.. Jd ntar mirip kaya kita update status facebook gitu..

Jadi kita akan menggunakan HTML, CSS, PHP, MySQL, dan jQuery.
Untuk demonya bisa diliat di situs http://ditatompel.crayoncreative.net/ pada bagian "feedback" seneng
Kita bahas dulu apa yang diperlukan untuk guide mengikuti ini.
1. kesabaran
2. Paling tidak mengerti HTML dan CSS, apa itu element id, dan class.
3. Mengerti basic PHP dan MySQL

Untuk file jadinya, bisa didownload di
http://ls-la.ditatompel.crayoncreative.n...stbook.zip
Saya coba berikan komentar pada beberapa baris yang mungkin berguna pada saat mengembangkan program ini. ketawa

Oke, langsung saja... Pertama kita buat dulu databasenya.

Di guide ini saya pakai database dengan nama JQguestbook dan table guestbook didalamnya.
Pertama buat dulu database JQguestbook nya, kemudian eksekusi perintah SQL berikut :

Code:

CREATE TABLE IF NOT EXISTS `guestbook` (
  `message_ID` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(70) CHARACTER SET utf8 NOT NULL DEFAULT '',
  `email` varchar(150) CHARACTER SET utf8 NOT NULL DEFAULT '',
  `message` text CHARACTER SET utf8 NOT NULL,
  `date_submit` datetime NOT NULL,
  PRIMARY KEY (`message_ID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

Nah klo udah, kita buat konfigurasinya untuk koneksi ke database dan beberapa seting dan fungsi2 lainnya.
File : config.php


PHP Code:

<?php
$config 
= array();/**
 * Konfigurasi database
 */
$config['db_host'] = 'localhost'// host database anda$config['db_user'] = 'ditatompel'// nama user database$config['db_pass'] = 'rahasia'// password user database$config['db_name'] = 'JQguestbook'// nama database yang digunakan$config['debug'] = TRUE// untuk mode debug.


/**
 * Stop edit jika anda tidak tahu apa yang sedang anda lakukan.
 */
if ( function_exists('date_default_timezone_set') )
    
date_default_timezone_set('Asia/Jakarta'); // lokasi server IIXini_set('display_errors'$config['debug']);error_reporting(E_ALL E_STRICT);// koneksi ke mysql server$konek mysql_connect($config['db_host'], $config['db_user'], $config['db_pass']);
if (!
$konek)
    die(
'gagal konek ke database<br />');$database mysql_select_db($config['db_name']);
if (!
$database)
    exit(
'gagal pilih database');// fungsi mengambil gambar dari gravatar emailfunction gambarGravatar($email) {
    
$gravatar md5(strtolower(trim($email)));
    
$gravatar '<img src="http://www.gravatar.com/avatar/' $gravatar '?s=80" alt="user-image" class="comment_image" />';
    return 
$gravatar;
}
// fungsi sanitasi
// masih sangat basic, silahkan dikembangkan sendiri :D
function htmlChar($text) {
    
$text htmlspecialchars($textENT_QUOTES);
    return 
$text;
}
?>
Oke, kalau sudah, kita buat halaman untuk menampilkan guestbooknya.
File : index.php
PHP Code:
<?phprequire_once('config.php');?><!DOCTYPE HTML>
<head>
    <meta charset="UTF-8" />
    <title>jQuery slideDown Guestbook tutorial</title>
    <meta name="description" content="jQuery slideDown Guestbook tutorial" />
    <meta name="keywords" content="html,css,jquery,javascript,guestbook,ajax" />
    <meta name="author" content="ditatompel" />
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
    <script type="text/javascript" src="js/guestbook.js"></script>
    <link rel="stylesheet" type="text/css" href="css/style.css" />
</head>

<body>
<div id="main_konten">
    <table cellpadding="0" cellspacing="0" width="500px">
        <tr>
            <td>
                <form id="guestbook" name="form">
                    <table cellpadding="0" cellspacing="0" width="500px">
                        <tr>
                            <td class="comment_box">
                                <h1>jQuery slideDown Guestbook tutorial</h1>
                                <div id="notif"></div>
                                <div>
                                    <input name="name" type="text" id="name" maxlength="20" />
                                    <span id="nameInfo">What's your name?</span>
                                </div>
                                <div>
                                    <input name="email" type="text" id="email" maxlength="50" />
                                    <span id="emailInfo">Valid E-mail please...</span>
                                </div>
                                <div>
                                    <span class="keterangan">* </span>
                                    <textarea id="message" name="message"></textarea>
                                </div>
                                <input id="send" name="send" type="submit" value="Send" />
                            </td>
                        </tr>
                    </table>
                </form>
                <div id="loading" align="left"  ></div>
                <ol id="update" class="timeline">
                <?php
                $query 
mysql_query("SELECT * FROM guestbook ORDER by ID DESC");
             
                while ( 
$hasil mysql_fetch_array($query) ) {
                
?>                <li>
                    <div class="old_comment">
                        <?php echo gambarGravatar($hasil['email']); ?>                        <div class="data_comment">
                        <h3><strong><?php echo $hasil['name']; ?></strong> <span class="date">on <?php echo $hasil['date_submit']; ?></span></h3>
                        <p class="message"><?php echo $hasil['message']; ?></p>
                        <div>
                    </div>
                    <div class="clear"></div>
                </li>
                <?php
                
}
                
?>                </ol>
            </td>
        </tr>
    </table>
</div>
</body>
</html>
Seperti yang temen2 liat, pada tag <head> kita panggil file style.css yang berada pada folder css/
File : css/style.css
Code:
*{margin:0;padding:0;}
body {
    font-family: Tahoma, Arial, sans-serif;
    font-size: 12px;
}
.clear {
    clear:both;
}
.comment_box {
    background-color:#D3E7F5; border-bottom:#ffffff solid 1px; padding:3px 10px;
}
.error{
    color: #e46c6e;
}
a {
    text-decoration:none;
    color:#d02b55;
}
a:hover {
    text-decoration:underline;
    color:#d02b55;
}
#main_konten {
    width: 450px;
    margin:0 auto;
}
#guestbook{
    padding: 0px;
}
#guestbook input{
    width: 200px;
    height:20px;
    padding: 6px;
    color: #949494;
    font-family: Arial,  Verdana, Helvetica, sans-serif;
    font-size: 10px;
    border: 1px solid #cecece;
}
#guestbook textarea{
    width: 450px;
    height: 40px;
    padding: 6px;
    color: #adaeae;
    font-size: 10px;
    border: 1px solid #cecece;
}
#guestbook div{
    margin-bottom: 10px;
}
#guestbook div span{
    margin-left: 10px;
    color: #b1b1b1;
    font-size: 11px;
    font-style: italic;
}

#guestbook #send{
    background: #6f9ff1;
    color: #fff;
    font-weight: 700;
    font-style: normal;
    border: 0;
    cursor: pointer;
    height:40px;
}
#guestbook #send:hover{
    background: #79a7f1;
}
ol.timeline {
    list-style:none;
}
ol.timeline li.bar{
    position:relative;
    padding:.7em 0 .6em 0;
    border-bottom:1px dashed #000;
    line-height:1.1em;
    background-color:#D3E7F5;
    display:none;
}
ol.timeline li{
    position:relative;
    border-bottom:1px dashed #000;
    line-height:1.1em;
    background-color:#D3E7F5;
}
ol.timeline li:first-child{
    border-top:1px dashed #000;
}
img.avatar{
    border:3px solid #FFF;
    float:left;
    margin:5px;
}
div.data_comment {
    padding-top:5px;
}
span.date {
    font-size:10px;
    font-style:italic;
}
p.message {
    padding-top:5px;
    font-size:10px;
}
Kemudian kita buat file action.php yang nantinya digunakan untuk proses validasi dan query ke database, kemudian menampilkan data form yang disubmit dengan format JSON.
File :action.php

PHP Code:
<?phprequire_once('config.php');
if ( isset(
$_POST['message']) ) {
    
$pesan NULL;
    
$error FALSE;
    
// silahkan tambahkan sanitasi dan filterisasi anda disini.
    
if ( empty($_POST['name']) || empty($_POST['email']) || empty($_POST['message']) ) {
        
$pesan .= '<p class="error"><strong>[!] Semua field wajib diisi!</strong></p>';
        
$error TRUE;
        
$loveme 0;
    }
    if ( !
$error ) {
        
// jika lolos sanitasi, proses hasil submit ke database
        
mysql_query("INSERT INTO guestbook (
            name,
            email,
            message,
            date_submit)
        VALUES (
            '" 
htmlChar($_POST['name']) . "',
            '" 
htmlChar($_POST['email']) . "',
            '" 
htmlChar($_POST['message']) . "',
            '" 
date("Y-m-d H:i:s") . "')
        "
);
     
        
// siapkan list yang akan ditampilkan melalui AJAX
        
$pesan .= '<li class="bar"><div class="old_comment">' gambarGravatar($_POST['email']) . '<div class="data_comment">';
        
$pesan .= '<h3><strong>' htmlChar($_POST['name']) . '</strong> <span class="date">on ' date("Y-m-d H:i:s") . '</span></h3>';
        
$pesan .= '<p class="message">' htmlChar($_POST['message']) . '</p>';
        
$pesan .= '</div></div><div class="clear"></div></li>';
        
$loveme 1;
    }
    
// tampilkan respon dan pesan dengan format json untuk AJAX request
    
$json = array(
        
"loveme"         => $loveme,
        
"message"         => $pesan
    
);
    
$encoded json_encode($json);
    echo 
$encoded;
    unset(
$encoded);
}
?>
terakhir, kita buat file guestbook.js pada folder js/ untuk proses form dan animasinya.
File : js/guestbook.js

Code:
$(function() {
    $("#send").click(function() {
        // tampilkan elemen id 'loading' begitu tombol send diklik
        $('#loading').show();
        $('#loading').fadeIn(400).html('<img src="ajax-loader.gif" align="absmiddle">&nbsp;<span class="loading">Loading Comment...</span>');
        // ajax request
        $.ajax({
            type: 'POST',
            url: 'action.php',
            data: $('form#guestbook').serialize(), // ambil semua data form dari id guestbook
            cache: false,
            success: function(data) {
                var dc = eval('(' + data + ')');
                if ( dc.respond ) {
                    // tampilkan isi JSON message pada ordered list id update
                    $('ol#update').prepend(dc.message);
                    $('#loading').hide();
                    $('ol#update li:first').slideDown('slow');
                    // reset nilai 2 pada form id guestbook
                    $(':input','#guestbook').not(':button, :submit').val('');
                    $('div#notif').slideUp();
                }
                else {
                    // tampilkan pesan error bila gagal
                    $('div#notif').addClass('error').html(dc.message).slideDown();
                    $('#loading').hide();
                }
            }
        });
        return false;
    });
});

Oke sekian dulu ya. Silahkan dikembangkan sendiri terutama untuk bagian validasi dan sanitasi.
 
  

jQuery slideDown Guestbook
Item Reviewed: jQuery slideDown Guestbook 9 out of 10 based on 10 ratings. 9 user reviews.

Komentar Terbaru

Just load it!