Lompat ke konten Lompat ke sidebar Lompat ke footer

[Php] Menciptakan Soal Ganda Dengan Database

Untuk pertama kalinya aku akan mencoba mengembangkan dengan memposting artikel yang bekerjasama dengan PHP. Oke pribadi saja kita akan menciptakan Soal Pilihan Ganda dengan Database.

Awalnya mungkin terpikir dalam benak bahwa untuk menciptakan aktivitas ibarat itu kita harus menciptakan file sebanyak jumlah soal. Namun tidak demikian bila kita simpan soal-soal tersebut dalam database. Di sini kita memakai mysql.
Pertama kita buat databasenya. Database yang kita buat berjulukan db_soal, berisikan no, soal, a, b, c, d, kunci. Di bawah ini ialah isinya. Boleh pribadi 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 kependekan 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 ialah malaikat', 'Izroil', 'Jibril', 'Mikail', 'Isrofil', 'Izroil');

Selanjutnya pribadi 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 aktivitas yang kita buat di atas masih belum sanggup mendapatkan dikala browser meng-click tombol back.

Semoga bermanfaat.

Sumber https://robizidny.blogspot.com/