Merhaba,

İnternet Tabanlı Programla dersini alan arkadaşlarımız için Switch-Case kullanarak tek bir sayfanın içerisinde formlarda çalışacağız. Bunun için küçük bir uygulama yapacağız. Öğrencilerin sınav sonuçlarının girileceği ve bu sonuçların hesaplanarak harf notu hesaplattırarak dersten geçme durumunu görüntüleyeceğiz. Veritabanı kullanmadan formdan gönderdiğimiz verileri ekrana yazdırarak ve bu işlemleri tek sayfada yaparak gerçekleştireceğiz.

İstenilenler

  1. Kaç öğrencinin notunun girileceği sorulacak
  2. Yazılan sayıya göre form ekranı açılacak
  3. Formda Ad Soyad, Okul No, Ders, Vize, Final, Değerlendirme bilgileri istenilecek
  4. Okul No 10 haneli rakamlardan oluşacak
  5. Sınav notları 0 ile 100 arasında rakamlardan oluşacak.
  6. Bilgiler girildikten sonra notların öğrencilerin listelendiği ve harf notlarının görüntülendiği tablo gösterilecek
  7. Bütün bu işlemler tek sayfada gösterilecek

Şimdi uygulamamıza başlayalım. “teksayfa.php” isimli dosyamızı oluşturuyoruz. Switch-case kullanarak kişi sayısı girme, not girme ve not görüntüleme ekranlarını ayrı ayrı göstereceğiz. Bunun için GET ile switch case içerisine veri göndereceğiz.

 

<?php
	switch ($_GET["sayfa"]) {
		case 'verigirisi':
			# öğrencilerin tanımlandığı ve notlarının girildiği ekran...
			break;

		case 'notgoruntuleme':
			# öğrenci notlarının hesaplanarak geçme durumunun gösterildiği ekran...
			break;

		default:
			# Kişi sayısının girileceği ekran...
			break;
	}
?>

Şimdi switch yapısında default kısmına kişi saysının girileceği formumuzu yapıp yerleştiriyoruz. Formumuzun action kısmına “?sayfa=verigirisi” yazıyoruz ve post ettiğimiz kişi saysınıda ekrana göstermek için “verigirisi” kısmında echo $_POST[“kisiSayisi”] yazıyoruz.

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
</head>

<body>

<?php
	switch (@$_GET["sayfa"]) {
		case 'verigirisi':
			echo @$_POST["kisiSayisi"];
			break;

		case 'notgoruntuleme':
			# öğrenci notlarının hesaplanarak geçme durumunun gösterildiği ekran...
			break;

		default:
		?>
			<form id="form1" name="form1" method="post" action="?sayfa=verigirisi">
			  <p>
			    <label for="kisiSayisi">Kişi Sayısı</label>
			    <input type="text" name="kisiSayisi" id="kisiSayisi" />
		      </p>
			  <p>
			    <input type="submit" name="button" id="button" value="Gönder" />
			  </p>
			</form>

		<?php
			break;
	}
?>

</body>
</html>

Şimdi sıra geldi öğrenci bilgilerini gireceğimiz formumuzu oluşturmaya. Formumuzu oluşturup Post ettiğimiz kişi sayısı ile for döngüsü oluşturacağız.

case 'verigirisi':
			?>

			<form id="form2" name="form2" method="post" action="?sayfa=notgoruntuleme&kisiSayisi=<?=$_POST["kisiSayisi"]?>">
			
			<?php
			for ($i=0; $i < @$_POST["kisiSayisi"] ; $i++) 
				{ ?>
			<fieldset>
          	<legend><? echo $i+1 ?>. Öğrenci</legend>	
			<p>
				<label for="adSoyad">Ad Soyad</label>
				<input type="text" name="adSoyad<?=$i?>" id="adSoyad" />
			</p>
			<p>
				<label for="okulNo">Okul No</label>
				<input type="text" name="okulNo<?=$i?>" id="okulNo" maxlength="10" minlength="10"/>
			</p>
			<p>
				<label for="ders">Ders</label>
				<select name="ders<?=$i?>" id="ders">
					<option>Seçiniz</option>
					<option value="İnternet Tabanlı Programlama">İnternet Tabanlı Programlama</option>
					<option value="Web Tasarımı">Web Tasarımı</option>
				</select>
			</p>
			<p>
				<label for="vize">Vize</label>
				<input type="text" name="vize<?=$i?>" id="vize" min="0" max="100" />
			</p>
			<p>
				<label for="final">Final</label>
				<input type="text" name="final<?=$i?>" id="final" min="0" max="100"  />
			</p>
			<p>
				<label for="degerlendirme">Değerlendirme</label>
				<input type="text" name="degerlendirme<?=$i?>" id="degerlendirme" min="0" max="100"/>
			</p>
			 </fieldset>
			<?php
				}
			?>
			
			<p>
				<input type="submit" name="hesapla" id="hesapla" value="Hesapla" />
			</p>
			</form>

			<?php
			break;

Yukarıda case:’verigirisi’ kısmı içine formumuzu oluşturduk. İlk ekranda girilen kişi sayısı kadar for döngüsü ile form oluşturuyoruz. Burada form2’nin action kısmınada “?sayfa=notgoruntuleme&kisiSayisi=<?=$_POST[“kisiSayisi”]?>” yazarak GET metodu ile bir sonra ki case içinde alacağımız veriyi ve önceki formdan Post ettiğimiz kisi sayısını gönderiyoruz. Form elementlerimizin name kısımlarına da name=”adSoyad<?=$i?>” burada ki gibi <?=$i?> ekliyoruz. Bu sayede form döngünün içerisinde her form elementi farklı bir name almış oluyor. Bu şekilde bir sonra ki case te form içerisinde ki verileri post etmiş olacağız.

Gelelim form inputları için istenilen özelliklere

  • Okul No 10 haneli olacak ve rakamlardan oluşacak.

Bunun için input özelliğine pattern=”[0-9]{10}” tanımlıyoruz.  Bu özellik 0-9 arasında ki 10 karakter kullanmasını zorunlu kılıyor.

  • Sınav notları 0 ile 100 arasında rakamlardan oluşacak.

Bunun için Vize, Final ve Değerlendirme inputlarımızın type özelliğini number yapacağız ve min=”0″ max=”100″ özelliklerini ekleyeceğiz. Minumum alacağı değer 0, maximum alacağı değer 100 olacaktır.

Şimdi tablomuzu oluşturalım.

case 'notgoruntuleme':
			?>
		<table width="%100" border="1">
		  <tr>
		    <td>Sıra</td>
		    <td>Ad Soyad</td>
		    <td>Okul No</td>
		    <td>Ders</td>
		    <td>Vize</td>
		    <td>Final</td>
		    <td>Değerlendirme</td>
		    <td>Ortalama</td>
		    <td>Harf Notu</td>
			<td>Başarı Durumu</td>

		  </tr>
		  <?php
		  
		  for ($i=0; $i <@$_GET["kisiSayisi"] ; $i++) 
		  { 
		  ?>
		  	
		<tr>
		    <td><?=$i+1?></td>
		    <td><?=@$_POST["adSoyad".$i]?></td>
		    <td><?=@$_POST["okulNo".$i]?></td>
		    <td><?=@$_POST["ders".$i]?></td>
		    <td><?=@$_POST["vize".$i]?></td>
		    <td><?=@$_POST["final".$i]?></td>
		    <td><?=@$_POST["degerlendirme".$i]?></td>
		    <td><? echo @$ortalama = (($_POST["vize".$i]/100)*40)+(($_POST["final".$i]/100)*50)+(($_POST["degerlendirme"]/100)*10); ?></td>
		    <?php
		    $harfNotu ="" ;
		    if ($ortalama <= 20) {
		    	$harfNotu = "FF";
		    }
		    else if ($ortalama <= 35) {
		    	$harfNotu = "DD";
		    }
		    else if ($ortalama <= 50) {
		    	$harfNotu = "DC";
		    }
		    else if ($ortalama <= 60) {
		    	$harfNotu = "CC";
		    }
		    else if ($ortalama <= 78) {
		    	$harfNotu = "BB";
		    }
		    else if ($ortalama <= 88) {
		    	$harfNotu = "BA";
		    }
		    else if ($ortalama <= 100) {
		    	$harfNotu = "AA";
		    }
		    ?>
		    <td><?=$harfNotu?></td>
		    <?php 
		    if($harfNotu != "FF"){
		    	$basariDurumu = "GEÇTİ";
		    }
		    else {
		    	$basariDurumu = "KALDI";
		    }
		    ?>
		    <td><?=$basariDurumu?></td>
		  </tr>	

		  <?php	
		  }
		  ?>
		  
		</table>


		<?php
			break;

php

Tablomuzu oluşturup veri girişi yapacağımız kısımlarda yine for döngüsü kullanarak post ettiğimiz verilerimizi ekrana yazdıracağız. Şimdi vize, final ve değerlendirme notlarının ortalamasını hesaplayalım.

$ortalama = (($_POST["vize".$i]/100)*40)+(($_POST["final".$i]/100)*50)+(($_POST["degerlendirme"]/100)*10);

Hesapladığımız ortalamaya görede harf notumuzu bulalım. Bunun içinde, if kullanacağız.

$harfNotu ="" ;
		    if ($ortalama <= 20) {
		    	$harfNotu = "FF";
		    }
		    else if ($ortalama <= 35) {
		    	$harfNotu = "DD";
		    }
		    else if ($ortalama <= 50) {
		    	$harfNotu = "DC";
		    }
		    else if ($ortalama <= 60) {
		    	$harfNotu = "CC";
		    }
		    else if ($ortalama <= 78) {
		    	$harfNotu = "BB";
		    }
		    else if ($ortalama <= 88) {
		    	$harfNotu = "BA";
		    }
		    else if ($ortalama <= 100) {
		    	$harfNotu = "AA";
		    }

Harf notuna göre başarı dumunu gösterebilmek içinde if kullnarak kontrol edeceğiz.

<?php 
		    if($harfNotu != "FF"){
		    	$basariDurumu = "GEÇTİ";
		    }
		    else {
		    	$basariDurumu = "KALDI";
		    }
		    ?>

php2

Tüm bu işlemleri tek sayfada gerçekleştirdik. Çalışmamızı buradan indirebilirsiniz. Faydalı olmuştur inşallah.  İyi çalışmalar.