الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

اريد التحقق من مدخلات مثل الاختبارات

بدأه man in dark في 8 أغسطس 2011 · 5 رد · 512 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

اخواني اريد عمل صفحه تظهر الاسئله التي في قاعدة البيانات ومع كل سؤال اربع اختيارات

ويتحقق من الاجابات ويخزن الدرجة النهائيه

قاعدة البيانات

CREATE TABLE `qquiz` (
  `id` int(50) NOT NULL auto_increment,
  `question` varchar(50) NOT NULL,
  `idtitle` varchar(50) NOT NULL,
  `answer1` varchar(50) NOT NULL default '0',
  `answer2` varchar(50) NOT NULL default '0',
  `answer3` varchar(50) NOT NULL default '0',
  `answer4` varchar(50) NOT NULL default '0',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1256 AUTO_INCREMENT=5 ;

-- 
-- إرجاع أو إستيراد بيانات الجدول `qquiz`
-- 

INSERT INTO `qquiz` (`id`, `question`, `idtitle`, `answer1`, `answer2`, `answer3`, `answer4`) VALUES 
(1, 'السؤال 1', '1', '25', '0', '0', '0'),
(2, 'السؤال 2', '1', '0', '25', '0', '0'),
(3, 'السؤال 3', '1', '0', '0', '0', '25'),
(4, 'السؤال 4', '1', '0', '0', '25', '0');

لو تلاحظون ان السؤال الاول في حقل question يحتوي على اربع خيارات في حقل answer1 و answer2 و answer3 و answer4

ولقد عملت صفحه لاظهار الاسئله وكل االخيارات الاربع تحت كل سؤال

<?php
include('config.php');


if($_GET['action']=="quiz"){


$id= $_POST['id'];
$sum=$_POST['sum'];
$timespan=time();



$sql="INSERT INTO rusult (id, sum, datatime) VALUES ('', '$sum','$timespan')";
$result=mysql_query($sql);

if($result){
echo "<META HTTP-EQUIV='refresh' CONTENT='0; URL=messages.php'>";
}
else {
echo 'error';
}
}



$id=$_GET['id'];

$sql2="SELECT * FROM qquiz WHERE qquiz.idtitle='$id' ";
$result2=mysql_query($sql2);
while($row= mysql_fetch_array($result2)){
?>
<td><form name="quiz" method="post" action="quiz.php?action=quiz"></td>

<div class="qheader" ><font size="4"><?php echo $row['question']; ?></font></div>

<div class="qheader" ><font size="4"><input type="radio" name="answer" value="<?php echo $row['answer1']; ?>"  ><?php echo $row['answer1']; ?></font></div>
<div class="qheader" ><font size="4"><input type="radio" name="answer" value="<?php echo $row['answer2']; ?>"  ><?php echo $row['answer2']; ?></font></div>
<div class="qheader" ><font size="4"><input type="radio" name="answer" value="<?php echo $row['answer3']; ?>"  ><?php echo $row['answer3']; ?></font></div>
<div class="qheader" ><font size="4"><input type="radio" name="answer" value="<?php echo $row['answer4']; ?>"  ><?php echo $row['answer4']; ?></font></div>


<?php



   }  ?>

<td><input type="submit" name="Submit" value=" ارسال الاجابات " ></td>
<br><br><br>

تظهر الاسئله والخيارات تحت كل سؤال 100%

بس المشكله عند ظهور الاربع الاسئله والاربع خيارات تحت كل سؤال لا استطيع الا ان اختار خيار واحد فقط لكل الاسئله

ومن المفترض ان اختار احد الخيارات من السؤال الاول وووو اختار احد الخيارات من السؤال الثاني .... وهكذا

اريد ان اجمع نتائج جميع الاسئله الاربعه وتخزينها في حقل sum لادخاله الى قاعدة البيانات

اتمنى المساعدة

#2

وعليكم السلام ورحمة الله

صديقي مشكلتك أنك تستخدم ذات الاسم لجميع الـ Radio بالتالي تعتبر جميع الأجوبة ضمن مجموعة واحدة لا يمكنك اختيار إلا عنصر واحد منها

لحل المشكلة عليك اختيار اسم مختلف لكل مجموعة اجوبة ضمن سؤال واحد كالتالي مثلا :

<form name="quiz" method="post" action="quiz.php?action=quiz">
<?php
include('config.php');


if($_GET['action']=="quiz"){


//$id= $_POST['id'];
//$sum=$_POST['sum'];
$sum =0;
for($j=0;$j<=$_POST['cnt'];$j++)
	$sum += $_POST["answer-q$j"];

$timespan=time();



$sql="INSERT INTO rusult (id, sum, datatime) VALUES ('', '$sum','$timespan')";
$result=mysql_query($sql);

if($result){
echo "<META HTTP-EQUIV='refresh' CONTENT='0; URL=messages.php'>";
}
else {
echo 'error';
}
}



$id=$_GET['id'];

$sql2="SELECT * FROM qquiz WHERE qquiz.idtitle='$id' ";
$result2=mysql_query($sql2);

$i =0;
while($row= mysql_fetch_array($result2)){
?>

<div class="qheader" ><font size="4"><?php echo $row['question']; ?></font></div>

<div class="qheader" ><font size="4"><input type="radio" name="answer-q<?=$i?>" value="<?php echo $row['answer1']; ?>"  ><?php echo $row['answer1']; ?></font></div>
<div class="qheader" ><font size="4"><input type="radio" name="answer-q<?=$i?>" value="<?php echo $row['answer2']; ?>"  ><?php echo $row['answer2']; ?></font></div>
<div class="qheader" ><font size="4"><input type="radio" name="answer-q<?=$i?>" value="<?php echo $row['answer3']; ?>"  ><?php echo $row['answer3']; ?></font></div>
<div class="qheader" ><font size="4"><input type="radio" name="answer-q<?=$i?>" value="<?php echo $row['answer4']; ?>"  ><?php echo $row['answer4']; ?></font></div>
<input type="hidden" name="cnt" value="<?=$i?>">


<?php
$i++;


   }  ?>

<td><input type="submit" name="Submit" value=" ارسال الاجابات " ></td>
</form>
<br><br><br>

- لقد عدلت أيضاً مكان الـ Form tag ﻷنك بهذه الطريقة تجعل كل سؤال ضمن Form منفصل فلن تتمكن بذلك من ارسال جميع الأجوبة من خلال الضغط على Submit كما أنك نسيت أن تغلق الـ Form

- لا أدري ما هي $_POST['id'] الموجودة ولكن لا وجود لها في كود الإرسال لذلك قمت بتهميشها, أنت لا تقوم بحساب الـ Sum أيضا ﻷن $_POST['sum'] غير موجودة ضمن المرسلات, قمت بتعديل هذه النقطة أيضاً

جرب الآن وأخبرنا بالنتيجة

بتوفيق الله...

تم تعديل هذه المشاركة بواسطة MoHaMMaD Pro في 8 أغسطس 2011 في 07:10

1

Everything will be fine when we TALK LESS, DO MORE


#3

الف شكر اخي MoHaMMaD Pro

الكود الان يعمل 100%

اخي لو اضفنا حقل آخر ويكون اسمه mis

ويكون الي يتخزن في الحقل الاسئله التي اخطيت فيها

يعني مثلا يوجد ثلاث اسئله ولقد اجبت بصح عن السؤال الاول والثالث -- والسؤال الثاني خطاء

اريد ان يتخزن في حقل mis رقم 2 يعني ان السؤال الثاني هو خطاء وهكذا....

تم تعديل هذه المشاركة بواسطة man in dark في 8 أغسطس 2011 في 11:43

#4

هل تقصد حقل في قاعدة البيانات؟

نعم حقل جديد واسمه mis

بكل الأحوال ماذا ستفعل في حال أخطأ بأكثر من سؤال؟

يتخزن رقم السؤال يعني لو اخطاء

في السؤال الاول يخزن رقم 1

السؤال الثاني يخزن رقم 2

وتكون هكذا في قاعدة البيانات 1-2

وهل يوجد في قاعدة البيانات ما يحدد الإجابة الصحيحة من بين الإجابات ﻷني لم أرى ما يدل على الإجابة الصحيحة؟

لو تلاحظ في حقل answer1 و answer2 و answer3 و answer4

ان واحد من حقول الـanswer يحتوي على رقم 25 والثلاث الاخرى تحتوي على رقم 0 بحيث ان 25 صحيح والـ 0 هو خطاء

انظر الى قاعدة البيانات

CREATE TABLE `qquiz` (
  `id` int(50) NOT NULL auto_increment,
  `question` varchar(50) NOT NULL,
  `idtitle` varchar(50) NOT NULL,
  `answer1` varchar(50) NOT NULL default '0',
  `answer2` varchar(50) NOT NULL default '0',
  `answer3` varchar(50) NOT NULL default '0',
  `answer4` varchar(50) NOT NULL default '0',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1256 AUTO_INCREMENT=5 ;

-- 
-- إرجاع أو إستيراد بيانات الجدول `qquiz`
-- 

INSERT INTO `qquiz` (`id`, `question`, `idtitle`, `answer1`, `answer2`, `answer3`, `answer4`) VALUES 
(1, 'السؤال 1', '1', '25', '0', '0', '0'),
(2, 'السؤال 2', '1', '0', '25', '0', '0'),
(3, 'السؤال 3', '1', '0', '0', '0', '25'),
(4, 'السؤال 4', '1', '0', '0', '25', '0');
#5

حسناً, بحسب ما فهمت من شرحك

جرب هذا :

<form name="quiz" method="post" action="quiz.php?action=quiz">
<?php
include('config.php');


if($_GET['action']=="quiz"){


//$id= $_POST['id'];
//$sum=$_POST['sum'];
$sum = 0;
$mis = "";
for($j=0;$j<=$_POST['cnt'];$j++) {
    	$sum += $_POST["answer-q$j"];
	if($_POST["answer-q$j"] != 25)
		$mis .= ",".$j;
}


$timespan=time();



$sql="INSERT INTO rusult (id, sum, mis, datatime) VALUES ( '',  '$sum', '$mis', '$timespan')";
$result=mysql_query($sql);

if($result){
echo "<META HTTP-EQUIV='refresh' CONTENT='0; URL=messages.php'>";
}
else {
echo 'error';
}
}



$id=$_GET['id'];

$sql2="SELECT * FROM qquiz WHERE qquiz.idtitle='$id' ";
$result2=mysql_query($sql2);

$i =0;
while($row= mysql_fetch_array($result2)){
?>

<div class="qheader" ><font size="4"><?php echo $row['question']; ?></font></div>

<div class="qheader" ><font size="4"><input type="radio" name="answer-q<?=$i?>" value="<?php echo $row['answer1']; ?>"  ><?php echo $row['answer1']; ?></font></div>
<div class="qheader" ><font size="4"><input type="radio" name="answer-q<?=$i?>" value="<?php echo $row['answer2']; ?>"  ><?php echo $row['answer2']; ?></font></div>
<div class="qheader" ><font size="4"><input type="radio" name="answer-q<?=$i?>" value="<?php echo $row['answer3']; ?>"  ><?php echo $row['answer3']; ?></font></div>
<div class="qheader" ><font size="4"><input type="radio" name="answer-q<?=$i?>" value="<?php echo $row['answer4']; ?>"  ><?php echo $row['answer4']; ?></font></div>
<input type="hidden" name="cnt" value="<?=$i?>">


<?php
$i++;


   }  ?>

<td><input type="submit" name="Submit" value=" ارسال الاجابات " ></td>
</form>
<br><br><br>

كما تلاحظ قمت بإضافة الحقل mis في الجدول result بعد الحقل sum ويجب أن يكون الحقل من نوع varchar

جرب و أخبرنا بالنتيجة

1

Everything will be fine when we TALK LESS, DO MORE


#6

الله يعطيك العافيه اخي MoHaMMaD Pro

مواضيع مشابهة