[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.
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
Reviewed by https://robizidny.blogspot.com/
on
12:11:00 PM
Rating:
No comments:
(Silahkan tinggalkan Pesan)