[PHP] Membuat Soal Ganda dengan Database

Untuk pertama kalinya saya akan mencoba berbagi dengan memposting artikel yang berhubungan dengan PHP. Oke langsung saja kita akan membuat Soal Pilihan Ganda dengan Database.

Awalnya mungkin terpikir dalam benak bahwa untuk membuat program seperti itu kita harus membuat file sebanyak jumlah soal. Namun tidak demikian jika kita simpan soal-soal tersebut dalam database. Di sini kita menggunakan mysql.
Pertama kita buat databasenya. Database yang kita buat bernama db_soal, berisikan no, soal, a, b, c, d, kunci. Di bawah ini adalah isinya. Boleh langsung di-import saja.

/*

MySQL Data Transfer

Source Host: localhost

Source Database: db_soal

Target Host: localhost

Target Database: db_soal

Date: 3/19/2014 12:57:40 PM

*/

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------

-- Table structure for t_soal

-- ----------------------------

CREATE TABLE `t_soal` (

`no` int(11) NOT NULL AUTO_INCREMENT,

`soal` text NOT NULL,

`a` varchar(1000) NOT NULL,

`b` varchar(1000) NOT NULL,

`c` varchar(1000) NOT NULL,

`d` varchar(1000) NOT NULL,

`kunci` varchar(1000) NOT NULL,

PRIMARY KEY (`no`)

) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1;

-- ----------------------------

-- Records

-- ----------------------------

INSERT INTO `t_soal` VALUES ('1', 'Siapa presiden pertama Indonesia', 'Soekarno', 'Suharto', 'Ki Hajar Dewantara', 'Megawati Soekarno Puteri', 'Soekarno');

INSERT INTO `t_soal` VALUES ('2', 'Apa kepanjangan dari NKRI', 'Negara Kesatuan Rakyat Indonesia', 'Negara Kesatuan Republik Indonesia', 'Negara Kedaulatan Republik Indonesia', 'Negara Kekeluargaan Rakyat Indonesia', 'Negara Kesatuan Republik Indonesia');

INSERT INTO `t_soal` VALUES ('3', '2 + 2 = ', '10:3', '8:4', '(2:2)x(2*2)', '7:3', '(2:2)x(2*2)');

INSERT INTO `t_soal` VALUES ('4', 'UPI merupakan singkatan dari', 'Universitas Padahal IKIP', 'Universitas Pendidikan Indonesia', 'Universitas Pelawak Internasional', 'Semua Benar', 'Universitas Pendidikan Indonesia');

INSERT INTO `t_soal` VALUES ('5', 'Siapa nama ayah Arum Yuniarsih', 'Ruman', 'Jajang', 'Dedi', 'Sarbini', 'Ruman');

INSERT INTO `t_soal` VALUES ('6', 'Malaikat pencabut nyawa adalah malaikat', 'Izroil', 'Jibril', 'Mikail', 'Isrofil', 'Izroil');

Selanjutnya langsung ke PHP deh yaa.

<?php

    $db_host = 'localhost';

    $db_user = 'root';

    $db_pass = '';

    $db_name = 'db_soal';

    $dbh = mysql_connect($db_host, $db_user, $db_pass);

    if ($dbh) {

        mysql_select_db($db_name);

    }else{

        echo "database tidak tersedia";

    }

?>

index.php
<?php

    include 'koneksi.php';

    session_start();

    $query = mysql_query("select * from t_soal") or die (mysql_error());

    //$_SESSION['soal'] = mysql_fetch_array($query);

    $_SESSION['soal'] = array();

    $_SESSION['no'] = 1;

    $_SESSION['score'] = 0;

    $_SESSION['option'] = array();

    $_SESSION['jawab'] = array();

    $i=0;

    while($row = mysql_fetch_assoc($query)){

        $_SESSION['soal'][] = $row;

        $_SESSION['option'][] = array($_SESSION['soal'][$i]['a'], $_SESSION['soal'][$i]['b'], $_SESSION['soal'][$i]['c'], $_SESSION['soal'][$i]['d']);

        $i++;

    }

    if(isset($_SESSION['soal'])){

        header("location:test.php");

    }

?>

test.php
<?php

    session_start();

    $soal = $_SESSION['soal'];

    $no = $_SESSION['no'];

    if(isset($_POST['next'])){

        $_SESSION['jawab'][] = $_POST['option'];

        if($_POST['option'] == $soal[$no-2]['kunci']){

            $_SESSION['score'] = $_SESSION['score'] + 10;

        }

    }

    if(isset($soal[$no-1])){

?>

<!DOCTYPE html>

<html>

<head>

    <title>Latihan Soal</title>

</head>

<body>

<a href="index.php">Kembali ke soal 1</a>

    <form action="" method="POST">

        <p>

        <?php

            echo $no.". "; $_SESSION['no']++;

            echo $soal[$no-1]['soal'];

            $jawaban = $_SESSION['option'][$no-1];

            shuffle($jawaban);

        ?>

        </p>

        <?php

            for ($i=0; $i < 4; $i++) {

        ?>

            <input type="radio" name="option" value="<?php echo $jawaban[$i]; ?>" required/> <?php echo $jawaban[$i]; ?></br>

        <?php

            }

         ?>

        <input type="submit" name="next" value="next">

    </form>

</body>

</html>

<?php

    }else{

        header("location:result.php");

    }

?>

result.php
<?php

    include 'koneksi.php';

    session_start();

    $jawab = $_SESSION['jawab'];

?>

<!DOCTYPE html>

<html>

<head>

    <title>Hasil Test</title>

</head>

<body>

    <h1>Hasil Latihan</h1>

    <h2>SCORE ANDA: <?php echo $_SESSION['score']; ?></h2>

    <table border="1">

        <tr>

            <td>NO</td>

            <td>Jawaban Anda</td>

            <td>Kunci Jawaban</td>

            <td>Status</td>

        </tr>

        <?php

            $i = 0;

            $benar = $salah = 0;

            $sql = mysql_query("select * from t_soal");

            while($key = mysql_fetch_array($sql)){

        ?>

        <tr>

            <td><?php echo $i+1; ?></td>

            <td><?php echo $jawab[$i] ?></td>

            <td><?php echo $key['kunci']; ?></td>

            <td>

                <?php

                    if ($jawab[$i] == $key['kunci']) {

                        echo "Benar";

                        $benar++;

                    }else{

                        echo "Salah";

                        $salah++;

                    }

                 ?>

            </td>

        </tr>

        <?php

                $i++;

            }

         ?>

    </table>

    <h3>Benar: <?php echo $benar; ?><br>

    Salah: <?php echo $salah; ?></h3>

    <a href="index.php">Kembali</a>

</body>

</html>

Dalam program yang kita buat di atas masih belum dapat menerima ketika browser meng-click tombol back.

Semoga bermanfaat.
[PHP] Membuat Soal Ganda dengan Database [PHP] Membuat Soal Ganda dengan Database Reviewed by https://robizidny.blogspot.com/ on 12:11:00 PM Rating: 5

No comments:

(Silahkan tinggalkan Pesan)

Powered by Blogger.