كيفاش تصاوب إختبار بإستعمال PHP الجزء الأول
فهاد الدرس غادي نشوفو كيفاش نديرو نصاوبو واحد الإختبار بسيط هاد الإختبار غادي يطرح الاسئلة على المستخدم المستخدم غادي يجاوب منبعد غادي يعرضلو النتيجة النهائية ديال الأجوبة لي جاوبها صحيحة درس بسيط للمبتدئين فلغة ل php.
نظرة سريعة بالفيديو
- إنشاء قاعدة البيانات
أول حاجة غادي ندير غادي نزيد قاعدة بيانات جديدة ف phpmyadmin غادي نسميها quiz من بعد غادي نزيد فيها جوج ديال الجداول واحد questions والثاني choices الأول غادي تكون فيه الأسئلة والثاني الأجوبة ديال كل سؤال الكود ديالهم هو :
//questions table
CREATE TABLE IF NOT EXISTS `questions` (
`question_number` int(11) NOT NULL,
`text` text CHARACTER SET utf8 NOT NULL,
PRIMARY KEY (`question_number`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
//choices table
CREATE TABLE IF NOT EXISTS `choices` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`question_number` int(11) NOT NULL,
`is_correct` tinyint(4) NOT NULL,
`text` text CHARACTER SET utf8 NOT NULL,
PRIMARY KEY (`id`),
KEY `question_number` (`question_number`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=18 ;
- ربط الإتصال بقاعدة البيانات
أول حاجة غادي تمشي ل wamp/www وغادي تزيد مجلد جديد تسميه php-quizzer من بعد تزيد فيه مجلد واحد تسميه cssغادي تقوم بتحميل bootstrap وغادي تزيد الملف bootstrap.min.css ف css من بعد غادي تزيد ملف تسميه header.php و آخر تسميه footer.php و تزيد ملف تسميه index.php فالآخرغادي تزيد ملف تسميه database.php لي غادي يمكنا من الإتصال بقاعدة البيانات الكود ديالو هو :
<?php
$db_host = 'localhost';
$db_database = 'quiz';
$db_user = 'root';
$db_pass='';
$mysqli = new mysqli($db_host,$db_user,$db_pass,$db_database);
if($mysqli->connect_error){
printf("connexion echouée : %s\n",$mysqli->connect_error);
exit();
}
mysqli_query($mysqli,"SET NAMES 'utf8'");
- الملف add.php
من بعد غادي نزيد ملف نسميه add.php هو لي غادي يمكني من إضافة الأسئلة فقاعدة البيانات غادي يتحقق من الحقول لي كاينة فلForm من بعد غادي يرسل المعلومات الخاصة بالسؤال والاجوبة ديالو لقاعدة البيانات الكود ديالو :
<?php
include('database.php');
//get the total of questions
$query = "SELECT * FROM `questions`";
$result = $mysqli->query($query);
$total = $result->num_rows;
if(isset($_POST['submit'])){
$choices = array();
$number = $_POST['qnumber'];
$question = $_POST['question'];
$choices['1'] = $_POST['choice1'];
$choices['2'] = $_POST['choice2'];
$choices['3'] = $_POST['choice3'];
$choices['4'] = $_POST['choice4'];
$choices['5'] = $_POST['choice5'];
$correct = $_POST['correct'];
//run query
$query = "INSERT INTO `questions` (question_number,text) VALUES('$number','$question')";
$inserted = $mysqli->query($query);
if($inserted){
foreach($choices as $choice => $value){
if($value != ''){
if($correct == $choice){
$is_correct = 1;
}else{
$is_correct = 0;
}
$query = "INSERT INTO `choices` (question_number,is_correct,text) VALUES('$number','$is_correct','$value')";
$inserted = $mysqli->query($query);
if($inserted){
continue;
} else{
die('Erreur !'.$mysqli->error);
}
}
}
$msg = "<div class='alert alert-success'>السؤال أضيف بنجاح</div>";
}else{
die('Erreur !'.$mysqli->error);
}
}
?>
<?php
include('header.php');
?>
<div class="container">
<div class="row">
<div class="col-md-6 col-md-offset-3">
<div class="panel panel-default">
<h1 class="text-center text-primary">إختبار قصير فالثقافة العامة</h1>
<hr>
<h3 class="text-danger title">إضافة سؤال</h3>
<hr>
<?php if(isset($msg)){ echo $msg;}?>
<section class="questions-box row">
<div class="col-md-8 col-md-offset-2">
<form action="add.php" method="post">
<div class="form-group">
<label for="qnumber">رقم السؤال</label>
<input type="number" name="qnumber" value="<?php echo $total+1;?>" class="form-control">
</div>
<div class="form-group">
<label for="question">السؤال</label>
<input type="text" name="question" class="form-control">
</div>
<div class="form-group">
<label for="choice1">الإختيار الأول</label>
<input type="text" name="choice1" class="form-control">
</div>
<div class="form-group">
<label for="choice2">الإختيار الثاني</label>
<input type="text" name="choice2" class="form-control">
</div>
<div class="form-group">
<label for="choice3">الإختيار الثالت</label>
<input type="text" name="choice3" class="form-control">
</div>
<div class="form-group">
<label for="choice4">الإختيار الرابع</label>
<input type="text" name="choice4" class="form-control">
</div>
<div class="form-group">
<label for="choice5">الإختيار الخامس</label>
<input type="text" name="choice5" class="form-control">
</div>
<div class="form-group">
<label for="correct"> رقم الإختيار الصحيح</label>
<input type="text" name="correct" class="form-control">
</div>
<div class="form-group">
<button type="submit" name="submit" class="btn btn-success">أضف</button>
</div>
</form>
</div>
</section>
</div>
</div>
</div>
</div>
<?php include('footer.php');?>
- الصفحة الرئيسية
الملف index.php هو لي غادي يمكني من عرض الاسئلة للمستخدم مع الوقت المحدد للإجابة عليها بالإضافة للزر ديال بدأ الإختبارهاد الملف غادي يكون عندو جوج ملفات آخرين كيعتمد عليهم الأول header.php الكود ديالو :
<!DOCTYPE html>
<html lang="fr" dir="rtl">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
<title>Simple Php Quiz</title>
<!-- Bootstrap -->
<link href="css/bootstrap.min.css" rel="stylesheet">
<link href="css/styles.css" rel="stylesheet">
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body>
- الملف footer.php
الملف الثاني لي غادي تعتمد عليه الصفحة الرئيسية هو footer.php الكود ديالو :
<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<!-- Include all compiled plugins (below), or include individual files as needed -->
<script src="js/bootstrap.min.js"></script>
<script src="js/script.js"></script>
</body>
</html>