[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/
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.