Script PHP Membuat Soal Pilihan Ganda
Script PHP membuat soal pilihan ganda yang digunakan untuk ujian berbasis web merupakan tutorial cara input daftar soal beserta kunci jawaban dan langsung sekaligus menampilkan hasil nilai sesuai dengan database mysql. Jadi yang pertama adalah membuat soal pilihan ganda dengan php mysql terlebih dulu sehingga kumpulan soal ujian dan kunci jawabannya tersimpan di dalam database. Kemudian teknis mengikuti ujian nya adalah peserta memilih jawaban dalam bentuk pilihan ganda dari soal yang tampil pada halaman browser, setelah selesai mengerjakan dan klik submit maka jawaban akan dicocokkan dengan kunci jawaban yang sudah tersedia. Script php untuk membuat soal pilihan ganda ini juga dilengkapi dengan nilai hasil ujian secara langsung setelah jawaban dikirim oleh peserta.
Tutorial cara script php membuat soal pilihan ganda ini kami lakukan pada sistem operasi Windows 10 menggunakan web server XAMPP ver 7.3 dengan mysql ekstensi database mysqli. Untuk mengikuti tutorial ini pastikan komputer anda telah terinstall web server XAMPP tersebut dan menggunakan bahasa pemrograman php 7. Oke, sepertinya pembahasan tutorial cara membuat soal pilihan ganda dengan php dan database mysql sehingga dapat digunakan untuk ujian perserta berbasis web secara online dapat segera kita mulai.
Script PHP Membuat Soal Pilihan Ganda
Berikut langkah-langkah tutorial cara script php membuat soal pilihan ganda online berbasis web lengkap dengan kunci jawaban sesuai database dan langsung menampilkan hasil nilai ujian yang dikirim oleh peserta.
1. Membuat Folder Direktori Tutorial.
Silahkan membuat nama folder terserah Anda, karena akan memproses kode php sebaiknya terletak di dalam direktori xampp htdocs atau sesuaikan dengan web server yang digunakan. Contoh nama folder yang kami buat adalah "tutorial", sehingga url folder menjadi c:\xampp\htdocs\tutorial\. Semua file php dan assets lain harus tersimpan di dalam folder direktori ini.
2. Membuat Rancangan Database.
Dalam tutorial cara script php membuat soal pilihan ganda ini kita membutuhkan database mysql dan tabel yaitu tabel soal yang berfungsi untuk menampung data soal ujian dan kunci jawaban. Kemudian tabel tersebut juga didesain memiliki atribut untuk menyimpan direktori image, hal ini bertujuan agar dapat membuat soal yang memerlukan gambar. Dan selain menyimpan jawaban dalam bentuk pilihan ganda, pada tabel ini juga sekaligus menyimpan kunci jawaban.
Untuk lebih jelasnya, perhatikan gambar di bawah ini.
Sebagaimana desain database seperti di atas, tbl_soal soal memiliki atribut secara urut yaitu id_soal sebagai primary key dan AI, soal, a, b, c, d, kunci, gambar, tanggal, dan aktif. Agar tutorial cara membuat soal pilihan ganda dengan php ini dapat teman-teman ikuti dengan lancar, silahkan buat tabel database dengan desain yang sama seperti di atas, atau copas saja kode sql di bawah ini.
-- phpMyAdmin SQL Dump -- version 4.9.0.1 -- https://www.phpmyadmin.net/ -- -- Host: 127.0.0.1 -- Generation Time: Oct 06, 2020 at 09:13 AM -- Server version: 10.4.6-MariaDB -- PHP Version: 7.3.9 SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; SET AUTOCOMMIT = 0; START TRANSACTION; SET time_zone = "+00:00"; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8mb4 */; -- -- Database: `db_tutorial` -- -- -------------------------------------------------------- -- -- Table structure for table `tbl_soal` -- CREATE TABLE `tbl_soal` ( `id_soal` int(11) NOT NULL, `soal` text NOT NULL, `a` varchar(50) NOT NULL, `b` varchar(50) NOT NULL, `c` varchar(50) NOT NULL, `d` varchar(50) NOT NULL, `kunci` varchar(50) NOT NULL, `gambar` varchar(100) NOT NULL, `tanggal` date NOT NULL, `aktif` enum('Y','N') NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- -- Dumping data for table `tbl_soal` -- INSERT INTO `tbl_soal` (`id_soal`, `soal`, `a`, `b`, `c`, `d`, `kunci`, `gambar`, `tanggal`, `aktif`) VALUES (1, 'HTML merupakan singkatan dari ....', 'Home Tool Markup Language', 'Hyperlinks and Text Markup Language', 'Hyper Text Markup Language', 'Hyper Tool Markup Language', 'c', '', '2018-07-02', 'N'), (2, 'Siapa yang mengembangkan Sejarah Web pertama kali?', 'Ruben', 'Thomas Alpha Edison', 'Tim Berners-Lee', 'Albert Einstein', 'c', '', '2018-07-02', 'Y'), (3, 'Profesi dalam pengembangan web, kecuali...', 'Web Developer', 'Web Programer', 'Web Administrator', 'Web Browser', 'd', '', '2018-07-18', 'Y'), (4, 'Browser bawaan OS Windows adalah ?', 'Opera mini', 'Mozila', 'Chrome', 'Internet Explorer', 'd', '', '2018-07-02', 'Y'), (5, 'Apa kepanjangan WWW ?', 'World Wide Web', 'Wide World Web', 'Web Wide World', 'World Web Wide', 'a', '', '2018-07-02', 'N'), (6, 'Multimedia adalah ?', 'Teknologi yg memadukan gambar,video dan suara.', 'teknologi yg memadukan Daftar', 'teknologi yg memadukan Baris dan kolom', 'Teknologi yg memadukan Kelistrikan', 'a', '', '2018-07-02', 'N'), (7, 'Menurut Anda, di bawah ini adalah gambar?', 'Avatar', 'Pelangi', 'Singa Laut', 'Bulan', 'a', 'avatar-1.png', '2020-10-04', 'Y'); -- -- Indexes for dumped tables -- -- -- Indexes for table `tbl_soal` -- ALTER TABLE `tbl_soal` ADD PRIMARY KEY (`id_soal`); -- -- AUTO_INCREMENT for dumped tables -- -- -- AUTO_INCREMENT for table `tbl_soal` -- ALTER TABLE `tbl_soal` MODIFY `id_soal` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=8; COMMIT; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
3. Menampilkan Ujian Soal Pilihan Ganda.
Pada tutorial script php membuat soal pilihan ganda online berbasis web ini, data soal ujian yang ada di database ditampilkan terlebih dulu kemudian baru dikerjakan oleh peserta. Oleh karena itu, pada langkah ini kita akan menampilkan seluruh soal aktif yang ada di database berikut dengan pilihan ganda dalam bentuk radio button. Kemudian ada tombol submit untuk mengirimkan jawaban, tampilan ini juga sekaligus berfungsi sebagai homepage atau halaman index.
Simpan sebagai index.php
<html> <head> <title>Tutorial Membuat Soal Pilihan Ganda dengan Script PHP</title> </head> <body> <h3>KERJAKAN SOAL PILIHAN GANDA DI BAWAH INI!</h3> <table border="0"> <tbody> <?php include "koneksi.php"; $query =mysqli_query($conn, "SELECT * FROM tbl_soal WHERE aktif='Y' ORDER BY id_soal DESC"); $jumlah =mysqli_num_rows($query); $no = 0; while($data = mysqli_fetch_array($query)){ $no++ ?> <form action="jawab.php" method="POST"> <input type="hidden" name="id[]" value="<?php echo $data['id_soal']; ?>"> <input type="hidden" name="jumlah" value="<?php echo $jumlah; ?>"> <tr> <td><?php echo $no?>.</td> <td><?php echo $data['soal'];?></td> </tr> <?php if(!empty($data['gambar'])){ echo "<tr><td></td><td><img src='assets/img/$data[gambar]' width='80' height='80'></td></tr>"; } ?> <tr> <td></td> <td>A. <input name="pilihan[<?php echo $data['id_soal']?>]" type="radio" value="A"><?php echo $data['a'];?></td> </tr> <tr> <td></td> <td>B. <input name="pilihan[<?php echo $data['id_soal']?>]" type="radio" value="B"><?php echo $data['b'];?></td> </tr> <tr> <td></td> <td>C. <input name="pilihan[<?php echo $data['id_soal']?>]" type="radio" value="C"><?php echo $data['c'];?></td> </tr> <tr> <td></td> <td>D. <input name="pilihan[<?php echo $data['id_soal']?>]" type="radio" value="D"><?php echo $data['d'];?></td> </tr> <?php } ?> <tr> <td height="40"></td> <td> <input type="submit" name="submit" value="Jawab" onclick="return confirm('Perhatian! Apakah Anda sudah yakin dengan semua jawaban Anda?')"> <input type="reset" value="Reset"> </td> </tr> </form> </tbody> </table> </body> </html>
Perhatikan script php membuat soal pilihan ganda di atas, baris ke-10 include "koneksi.php" berisi script php untuk membuat koneksi ke database, baris ke-11 adalah query select tabel database yaitu tbl_soal untuk menampilkan soal pilihan ganda aktif. Data soal pilihan ganda aktif ditampilkan dalam array menggunakan perulangan while pada baris ke-14 dan ditampung dalam variabel $data menggunakan fungsi mysqli_fetch_array. Maka untuk menampilkan data cukup dengan memberi nilai atribut pada variabel $data menggunakan echo, misal untuk menampilkan soal pertanyaan maka script nya menjadi <?php echo $data['soal']?> begitu seterusnya untuk atribut yang lain. Perlakuan kusus untuk input pilihan ganda dengan radio button, pastikan input name dengan nama pilihan[], pakai kurung siku sebagai tanda array.
Sampai disini script php membuat soal pilihan ganda selesai pada tahap menampilkan pada halaman browser, selanjutnya adalah melakukan action atau mengirimkan jawaban. Yaitu pada file action jawab.php sebagaimana didefinisikan oleh form action pada baris ke-17 menggunakan method POST, pada file ini seluruh jawaban akan dikoreksi secara otomatis.
Jika file index.php di atas dieksekusi dengan cara akses ke "localhost/tutorial" maka akan menampilkan daftar soal ujian, sebagaimana gambar di bawah ini.
Jika tombol "Jawab" diklik maka akan langsung mengkoreksi jawaban pilihan ganda yang dipilih, sekaligus menampilkan informasi berapa jawaban benar dan salah, berapa soal tidak terjawab, serta nilai skor akhir.
4. Membuat Script PHP Action Koreksi Jawaban
Script PHP ini akan tereksekusi jika tombol "jawab" diklik, yang dilakukan pada script ini adalah eksekusi instruksi untuk mencocokkan jawaban yang dikirim dengan kunci jawaban di database, dan beberapa eksekusi turunan lainnya. Dan inti dari pembahasan tutorial kita kali ini tentang cara script php membuat soal pilihan ganda adalah pada bagian ini, dimana intstruksi dan informasi ditampilkan pada script ini.
Simpan sebagai jawab.php
<?php include "koneksi.php"; if(isset($_POST['submit'])){ if(empty($_POST['pilihan'])){ ?> <script language="JavaScript"> alert('Oops! Serius. Anda tidak mengerjakan soal apapun ...'); document.location='./'; </script> <?php } $pilihan =$_POST["pilihan"]; $id_soal =$_POST["id"]; $jumlah =$_POST["jumlah"]; $score =0; $benar =0; $salah =0; $kosong =0; for($i=0;$i<$jumlah;$i++){ $nomor =$id_soal[$i]; // jika peserta tidak memilih jawaban if(empty($pilihan[$nomor])){ $kosong++; } // jika memilih else { $jawaban =$pilihan[$nomor]; // cocokan kunci jawaban dengan database $query =mysqli_query($conn, "SELECT * FROM tbl_soal WHERE id_soal='$nomor' AND kunci='$jawaban'"); $cek =mysqli_num_rows($query); // jika jawaban benar (cocok dengan database) if($cek){ $benar++; } // jika jawaban salah (tidak cocok dengan database) else { $salah++; } } /* ---------- Nilai 100 ---------- Hasil = 100 / jumlah soal * Jawaban Benar */ // script php membuat soal pilihan ganda // hitung skor $hitung =mysqli_query($conn, "SELECT * FROM tbl_soal WHERE aktif='Y'"); $jumlah_soal =mysqli_num_rows($hitung); $score =100 / $jumlah_soal * $benar; $hasil =number_format($score,2); } } // Tampilkan Hasil Ujian Soal Pilihan Ganda echo" <table border='0'> <tbody> <tr> <td colspan='4'><h4>Nilai Ujian Anda</h4></td> </tr> <tr> <td width='80'><u>Benar ✔</u></td> <td width='80'><u>Salah ✕</u></td> <td width='140'><u>Tidak Terjawab !</u></td> <td width='100'><u>Skor Akhir #</u></td> </tr> <tr> <td align='center'>$benar</td> <td align='center'>$salah</td> <td align='center'>$kosong</td> <td align='right'><b>$hasil</b></td> </tr> </tbody> </table> "; echo "<br /><a href='./'><< kembali</a>"; ?>
Perhatikan juga dengan fokus script php membuat soal pilihan ganda di atas, baris ke-13 script tersebut menampung nilai "pilihan" menggunakan $_POST['pilihan'] yang didapatkan dari setiap soal yang dikerjakan dengan cara pilihan ganda dalam bentuk radio button. Kemudian semua jawaban akan dikoreksi pada script baris ke-34 yaitu SELECT * FROM tbl_soal WHERE id_soal='$nomor' AND kunci='$jawaban', artinya jika jawaban yang dipilih sesuai dengan id_soal dan kunci jawaban maka hasilnya "benar". Jika tidak cocok maka hasilnya salah, jika variabel pilihan tidak memuat nilai maka dianggap tidak menjawab, begitu seterusnya hingga script ini melakukan perhitungan skor. Lebih detailnya silahkan perhatikan script php jawab di atas, gunakan logika dan kondisi serta perhatikan juga note yang kami tuliskan.
Jika script php membuat soal pilihan ganda "jawab.php" di atas dieksekusi maka akan menampilkan informasi berapa jumlah jawaban benar dan jawaban salah, berapa soal tidak terjawab dan nilai skor akhir, sebagaimana pada gambar di bawah ini.
Sampai disini tutorial cara membuat soal pilihan ganda dengan php mysql telah selesai, dan dipastikan script ini dapat menampilkan seluruh daftar soal serta langsung mengkoreksi hasil jawaban peserta ujian. Tentu saja script ini belum sepenuhnya dapat diimplementasikan tanpa customisasi, silahkan teman-teman kembangkan lagi, dan terapkan langsung ke dalam sebuah aplikasi berbasis web, sejenis aplikasi ujian online, CAT, CBT, dan lain sebagainya.
Tutorial Script PHP Membuat Soal Pilihan Ganda
Sekian penjelasan tentang bagaimana cara script php membuat soal pilihan ganda berbasis web untuk peserta ujian online lengkap dengan kunci jawaban sesuai database dan nilai skor. Untuk mendapatkan source code atau script Anda dapat langsung mendownload melalui link di atas, jika link download tidak aktif atau error mohon hubungi kami melalui SMS atau email atau melalui form komentar dan obrolan. Semoga dapat membantu.
Baca juga :
- Script PHP Hitung Umur Berdasarkan Tanggal Lahir
- Membuat Barcode dengan PHP dan MySQL - Tutorial
- Cara Menjumlahkan Nilai dalam Array PHP
- Fungsi Mysql_fetch_object pada PHP
- Cara Menampilkan IP Address dengan PHP
- Membuat CRUD dengan PHP MySQL - Tutorial
Script PHP Membuat Soal Pilihan Ganda
Tags: membuat soal pilihan ganda dengan php mysql, membuat soal pilihan ganda di php, soal pilihan ganda dengan php, pilihan ganda php, script php membuat soal pilihan ganda