Tampilkan postingan dengan label Kurikulum. Tampilkan semua postingan
Tampilkan postingan dengan label Kurikulum. Tampilkan semua postingan

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/

    Rabu, 22 Mei 2013

    Verifikasi Validasi NUPTK Tahun 2013

    -->
    NUPTK 2013 - Cara akses data guru/dapodik atau yang terbaru NUPTK, NUPTKkependekan dari Nomor Unik Pendidik dan Tenaga Kependidikan yang diberikan untuk PTK yang merupakan nomor identitas 16 angka yang bersifat nasional. Cara valid nuptk dapodik, untuk guru yang belum verifikasi NUPTK secara online 2013 silahkan segera untuk memvalidkan data-data kelengkapan yang berwarna merah sebelum batas waktu yang telah ditentukan.


    Silahkan cek data anda yang telah ikut sertifikasi guru dan yang akan ikut sertifikasi, tunjungan profesi, kenaikan pangkat, penilaian kinerja, peningkatan kopetensi guru, dll.

    Cara cek apakah NUPTK kita sudah benar atau belum, atau sudah divalidasi dan diverifikasi oleh Kementrian Pendidikan dan Kebudayaan cukup inputkan Nama/NUPTK dan Kota/Kabupaten lokasi, untuk lebih jelas bisa di lihat melalui web di bawah :

    CEK NUPTK 2013


    Contoh Pengisian :




    Hasil Isi Data :


    Form Verifikasi / Validasi yang harus kita isi


    Berkas atau form isian ini akan dikumpulkan mulai bulan Juni yang akan datang, sehingga perlu kita siapkan data-data yang dibutuhkan, karena masing-masing NUPTK nanti akan berbeda Form yang diunduh, tergantung status masing-masing NUPTK, Ada yang A01, A02, A03 atau A04.

    Silahkan tinggalkan komentar jika artikel di atas bermanfaat bagi anda.

     

    Subscribe to our Newsletter

    Contact our Support

    Email us: Support@templateism.com

    Our Team Memebers