Membuat Soal Pilihan Ganda dengan PHP

Membuat Soal Pilihan Ganda dengan PHP

Hola teman-teman langsung saja ya untuk artikel kali ini, kita akan mencoba membuat soal pilihan ganda dengan menggunakan PHP dan MySQL. Jadi secara teknis user menginputkan jawaban, dari soal yang ada di database yang sudah dibuat sebelumnya, kemudian jawaban akan dicocokan dengan kunci jawaban yang sudah tersedia.

Persiapkan dahulu databasenya

-- phpMyAdmin SQL Dump
-- version 4.7.7
-- https://www.phpmyadmin.net/
--
-- Host: 127.0.0.1
-- Generation Time: Jul 05, 2018 at 03:39 PM
-- Server version: 10.1.13-MariaDB
-- PHP Version: 5.6.23

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_quest`
--

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

--
-- 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', 'Y'),
(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 dari 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', 'Y'),
(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');

--
-- 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=7;
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 */;

Lanjutkan dengan membuat file koneksi.php

<?php
	$server = "localhost";
	$username = "root";
	$pass = "";
	$db = "db_quest";

	$koneksi = mysqli_connect($server,$username,$pass,$db) or die (mysqli_error());
	
?>

Buat file index.php

<!DOCTYPE html>
<html>
<head>
	<title>Soal Pilihan Ganda | YELLOWWEB.ID</title>
</head>
<body>
	<h3>ASSESSMENT TEST</h3>

	<table border="1">
		<tbody>
			<?php
				include "koneksi.php";
				$sql = "SELECT * FROM tbl_soal WHERE aktif='Y' ORDER BY RAND ()";
				$query = mysqli_query($koneksi,$sql) or die (mysqli_error($koneksi));
				$jumlah = mysqli_num_rows($query);
				$no = 0;
				while($data = mysqli_fetch_array($query)){?>
					<form action="kunci.php" method="post">
						<input type="text" name="id[]" value="<?php echo $data['id_soal']; ?>">
						<input type="text" name="jumlah" value="<?php echo $jumlah; ?>">
					
						<tr>
							<td><?php echo $no = $no+1; ?></td>
							<td><?php echo $data['soal'];?></td>
						</tr>

						<?php
							if(!empty($data['gambar'])){
								echo "<tr><td></td><td><img src='foto/$data[gambar]' width='200' height='200'></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></td>
					<td>
						<input type="submit" name="submit" value="Jawab" onclick="return confirm('Apakah Anda yakin dengan jawaban Anda?')">
					</td>
				</tr>

			</form>


		</tbody>
	</table>

</body>
</html>

Jangan lupa untuk membuat kunci jawaban, nama filenya kunci.php

<?php
	include "koneksi.php";

	if(isset($_POST['submit'])){
		$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]; // id nomor soal

			// jika user tidak memilih jawaban
			if(empty($pilihan[$nomor])){
				$kosong++;
			} else {
				// jika memilih
				$jawaban = $pilihan[$nomor];

				// cocokan jawaban dengan yang ada didatabase
				$sql = "SELECT * FROM tbl_soal WHERE id_soal='$nomor' AND kunci='$jawaban'";
				$query = mysqli_query($koneksi,$sql) or die (mysqli_error($koneksi));

				$cek = mysqli_num_rows($query);

				if($cek){
					// jika jawaban cocok (benar)
					$benar++;
				} else {
					// jika salah
					$salah++;
				}

			}
			/*
				----------
				Nilai 100
				----------
				Hasil = 100 / jumlah soal * Jawaban Benar
			*/

			$sql = "SELECT * FROM tbl_soal WHERE aktif='Y'";
			$query = mysqli_query($koneksi,$sql) or die (mysqli_error($koneksi));
			$jumlah_soal = mysqli_num_rows($query);
			$score = 100 / $jumlah_soal * $benar;
			$hasil = number_format($score,1);
		}
	}

	// Simpan kedalam database
	echo "Jumlah Jawaban Benar: $benar"."<br>";
	echo "Jumlah Jawaban Salah: $salah"."<br>";
	echo "Jumlah Jawaban Kosong: $kosong"."<br>";
?>

Untuk DEMO teman-teman bisa klik link dibawah ini:
https://www.yellowweb.id/demo/soalpg

Comments are closed.