Test Cevaplarım Yanlış Göstereriliyor

Merhaba arkadaşlar.

Aşğıdaki şekilde sorular.php sayfasından cevapları işaretleyip gönderiyorum. sonuc.php sayfasına değerlerim gidiyor ancak gelen değerler doğru olmasına rağmen başka bir testin cevaplarını göstererek benim gönderdiğim cevapları yanlış kabul ediyor. Yani başka bir testin doğru cevaplarını gösteriyor.

sorular.php

<form id="SoruFormu" action="index.php?git=sonuc" method="post">

<?php
$id = $_GET["id"];
$sec = @mysql_query("SELECT * FROM testler INNER JOIN sorular ON sorular.soru_test_id = testler.test_id WHERE soru_test_id = '$id'");
while($yaz = @mysql_fetch_array($sec)){
?>

<div class="TestBaslik"><h2><?php echo $yaz["test_adi"]; ?></h2></div>
<div class="Sorular">
  <input type="hidden" name="cevap-<?php echo $yaz["soru_no"]; ?>" value="BOŞ" />
   <ul class="SoruIcerik">
	<li class="Soru"><h3><?php echo $yaz["soru_no"].') '.$yaz["soru_metin"]; ?></h3></li>

	<li class="SecenekMetin">
	 <div class="SecenekIsaret">
	  <input type="checkbox" name="cevap-<?php echo $yaz["soru_no"]; ?>" id="<?php echo $yaz["soru_no"]."-"; ?>secenek-a" value="A">
	   <label for="<?php echo $yaz["soru_no"]."-"; ?>secenek-a">A) <?php echo $yaz["soru_secenek_a"]; ?></label>
	 </div>
	</li>

	<li class="SecenekMetin">
	 <div class="SecenekIsaret">
	  <input type="checkbox" name="cevap-<?php echo $yaz["soru_no"]; ?>" id="<?php echo $yaz["soru_no"]."-"; ?>secenek-b" value="B">
	   <label for="<?php echo $yaz["soru_no"]."-"; ?>secenek-b">B) <?php echo $yaz["soru_secenek_b"]; ?></label>
	  </div>
	</li>

	<li class="SecenekMetin">
	 <div class="SecenekIsaret">
	  <input type="checkbox" name="cevap-<?php echo $yaz["soru_no"]; ?>" id="<?php echo $yaz["soru_no"]."-"; ?>secenek-c" value="C">
	   <label for="<?php echo $yaz["soru_no"]."-"; ?>secenek-c">C) <?php echo $yaz["soru_secenek_c"]; ?></label>
	 </div>
	</li>

	<li class="SecenekMetin">
	 <div class="SecenekIsaret">
	  <input type="checkbox" name="cevap-<?php echo $yaz["soru_no"]; ?>" id="<?php echo $yaz["soru_no"]."-"; ?>secenek-d" value="D">
	   <label for="<?php echo $yaz["soru_no"]."-"; ?>secenek-d">D) <?php echo $yaz["soru_secenek_d"]; ?></label>
	 </div>
	</li>

	<li class="SecenekMetin">
	 <div class="SecenekIsaret">
	  <input type="checkbox" name="cevap-<?php echo $yaz["soru_no"]; ?>" id="<?php echo $yaz["soru_no"]."-"; ?>secenek-e" value="E">
	   <label for="<?php echo $yaz["soru_no"]."-"; ?>secenek-e">E) <?php echo $yaz["soru_secenek_e"]; ?></label>
	 </div>
	</li>
   </ul>
</div>
		
<?php
	}
?>
<div class="TestBitir"><input class="TestBitirButon" type="submit" value="Testi Bitir" /></div>
</form>

sonuc.php

<div class="TestBaslik"><h2>DİN KÜLTÜRÜ DENEME TESTİ CEVAP ANAHTARI</h2></div>

<?php
  //$sec = @mysql_query("SELECT * FROM testler INNER JOIN sorular ON sorular.soru_test_id = testler.test_id WHERE soru_test_id = '$id'");
?>

<div class="Sonuclar">
<?php
if( $_POST ){
  $dogru = 0;
  $yanlis = 0;
  $bos = 0;
  $toplam = 0;

  foreach( $_POST as $anahtar => $deger ){
	$sorular = explode('-', $anahtar);
	$soruNo = $sorular[1];

	$sec = @mysql_query("SELECT * FROM sorular WHERE soru_no = $soruNo");
	$yaz = @mysql_fetch_array($sec);

	$sDogru 	= '<font color="green">[ DOĞRU ]</font>';
	$sYanlis 	= '<font color="red">[ YANLIŞ ]</font> <font color="green">[ '.$yaz['soru_dogru_cevap'].' ]</font>';

	$durum = $deger == $yaz["soru_dogru_cevap"] ? $sDogru : $sYanlis;

	if ($deger == "BOŞ")
	{
	  $durum = "";
	  $bos++;
	}
	  else if ($durum == $sDogru)
	{
	  $dogru++;
	}
	else
	{
	  $yanlis++;
	}

	$toplam++;
  
  echo "<ul><li><b>$soruNo.</b> Soruya verilen cevap : <b>$deger</b>" . (!empty($durum) ? " <b>$durum</b> " : " <font color='green'><b>[ ".$yaz['soru_dogru_cevap']." ]</b></font> ")."</li></ul>";
  }
}
?>
</div>

<div class="TestSonuc">
  <div class="Dogrular"><span class="Sonuc">Doğru Cevap: <strong><?php echo $dogru; ?></strong></span></div>
  <div class="Yanlislar"><span class="Sonuc">Yanlış Cevap: <strong><?php echo $yanlis; ?></strong></span></div>
  <div class="BosCevap"><span class="Sonuc">Boş Bırakılan: <strong><?php echo $bos; ?></strong></span></div>
  <div class="ToplamSoru"><span class="Sonuc">Toplam Soru: <strong><?php echo $toplam; ?></strong></span></div>
  <div class="Cevaplanan"><span class="Sonuc">Cevaplanan: <strong><?php echo $toplam - $bos; ?></strong></span></div>
  <div class="Clean"></div>
</div>

Testler Tablosu

Testler Tablosu İçeriği

Sorular Tablosu

Sorular Tablosu İçeriği

sonuc.php

<div class="TestBaslik"><h2>DİN KÜLTÜRÜ DENEME TESTİ CEVAP ANAHTARI</h2></div>

<div class="Sonuclar">
<?php
if( $_POST ){
  $dogru = 0;
  $yanlis = 0;
  $bos = 0;
  $toplam = 0;

  foreach( $_POST as $anahtar => $deger ){
	$sorular = explode('-', $anahtar);
	$soruNo = $sorular[1];

	$sec = @mysql_query("SELECT * FROM testler INNER JOIN sorular ON sorular.soru_test_id = testler.test_id WHERE soru_test_id = '$id'");
	$yaz = @mysql_fetch_array($sec);

	$sDogru 	= '<font color="green">[ DOĞRU ]</font>';
	$sYanlis 	= '<font color="red">[ YANLIŞ ]</font> <font color="green">[ '.$yaz['soru_dogru_cevap'].' ]</font>';

	$durum = $deger == $yaz["soru_dogru_cevap"] ? $sDogru : $sYanlis;

	if ($deger == "BOŞ")
	{
	  $durum = "";
	  $bos++;
	}
	  else if ($durum == $sDogru)
	{
	  $dogru++;
	}
	else
	{
	  $yanlis++;
	}

	$toplam++;
  
  echo "<ul><li><b>$soruNo.</b> Soruya verilen cevap : <b>$deger</b>" . (!empty($durum) ? " <b>$durum</b> " : " <font color='green'><b>[ ".$yaz['soru_dogru_cevap']." ]</b></font> ")."</li></ul>";
  }
}
?>
</div>

<div class="TestSonuc">
  <div class="Dogrular"><span class="Sonuc">Doğru Cevap: <strong><?php echo $dogru; ?></strong></span></div>
  <div class="Yanlislar"><span class="Sonuc">Yanlış Cevap: <strong><?php echo $yanlis; ?></strong></span></div>
  <div class="BosCevap"><span class="Sonuc">Boş Bırakılan: <strong><?php echo $bos; ?></strong></span></div>
  <div class="ToplamSoru"><span class="Sonuc">Toplam Soru: <strong><?php echo $toplam; ?></strong></span></div>
  <div class="Cevaplanan"><span class="Sonuc">Cevaplanan: <strong><?php echo $toplam - $bos; ?></strong></span></div>
  <div class="Clean"></div>
</div>

 

Maalesef sorun devam ediyor. Sorular kısmındaki inputların name'leri ve label for verilerinin düzenlenmesi mi gerekiyor acaba. Çünkü her test soru no'suan göre 1 den başlıyor. Sonuç php de soru nosu'na göre gösteriyor ama ilk testin nolarına göre cevap gösteriyor sanırım.

Önizlemeyi görmek için tıklayın.

SQL sorgusunda hata var.

$sec = @mysql_query("SELECT * FROM testler INNER JOIN sorular ON sorular.soru_test_id = testler.test_id WHERE soru_test_id = $id");

'$id' değil $id şeklinde olacak.

Dediğiniz değişikliği yaptım ama yine aynı maalesef.

Cevap Yaz

Cevap yazabilmek için üye girişi yapmanız gerekiyor!

Yukarı Git