Yazdır 01 Mayıs 2010 Cumartesi (Hit: 73230)

GET Metodu

<form>...</form> etiketinin action özelliğinde belirtilen sayfada GET metoduyla yani URL'ye eklenerek gönderilen değişkeleri almak için $_GET dizisi kullanılır.

$_GET dizisinde indis olarak değişken adları yada form adları kullanılır.

Örneğin; http://www.phpdefteri.com/index.php?konu=selam&mesaj=Merhaba şeklinde GET ile gönderilen konu ve mesaj bilgilerini şu şekilde alırız.

<?php
$gelen_konu=$_GET["konu"];
$gelen_mesaj=$_GET["mesaj"];
?>

 

Örnek olarak basit bir uygulama yapalım.

Örnek: GET metodu ile gönderilen ad ve soyad bilgilerini alıp ekrana yazdıralım.

<!--index.php-->
<html>
<body>
   <form name="form1" method="get" action="yaz.php">
      Adı: <input type="text" name="adi"><br>
      Soyadı: <input type="text" name="soyadi"><br>
      <input type="submit" name="gönder" value="Gönder">
   </form>
</body>
</html>
<!--yaz.php-->
<html>
<body>
<?php
echo "<b>Adınız:</b> ",$_GET["adi"],"<br>";
echo "<b>Soyadınız:</b> ",$_GET["soyadi"],"<br>";
?>
</body>
</html>

Burada iki sayfamız vardır.

İlk sayfamız olan index.php sayfasında formlarımız var. Bu formlara girilen bilgilerin yaz.php sayfasına gönderileceği action="yaz.php" ile belirtilmiştir. method="get" ifadesiyle bilgilerin GET metodu ile gönderileceği belirtilmiştir. Unutmayınız form yapılarında çoğu zaman POST metodu kullanılır. GET metodu pek kullanılmaz. Burada sadece GET metodu ile bilgi göndermeye ve almaya örnek vermekteyiz.

Bilindiği gibi GET metodu <a>...</a> etiketi ile oluşturulan linkler ile bilgi göndermede kullanılır.

İkinci sayfamız olan yaz.php sayfasında formlardan gelen bilgiler alınıyor. Daha sonra sayfaya yazdırılması için echo fonksiyonuna veriliyor. Bu bilgileri değişkenlere atayarak da işlem yapabilirsiniz.

Not: index.php ile yaz.php sayfalarının aynı dizinde olduğu kabul edilerek action kısmında yaz.php sayfasının yolu belirtilmemiştir. Aksi halde dosyanın tam yolu yada göreceli yolu yazılmalıdır.

 

Örnek: Rastgele üretilen iki sayıyı yaz.php sayfasına bir link ile (GET metodu ile) gönderip ekrana yazdıralım.

<!--index.php-->
<html>
<body>
<?php
$s1=rand(1,100);
$s2=rand(1,100);
echo "<b>Bulunan sayılar:</b><br>";
echo "Sayı 1=$s1<br>Sayı 2=$s2<br>";
echo "<a href='yaz.php?sayi1=$s1&sayi2=$s2'>Bu linke tıklayarak sayıları gönderebilirsiniz</a>";
?>
</body>
</html>
<!--yaz.php-->
<html>
<body>
<?php
echo "<b>Sayı 1:</b> ",$_GET["sayi1"],"<br>";
echo "<b>Sayı 2:</b> ",$_GET["sayi2"],"<br>";
?>
</body>
</html>

 

Bu örnek gerçek bir GET metoduna güzel bir örnektir.

index.php sayfasını yenileyerek her seferinde farklı sayılar gönderebilirsiniz.

 

Örnek: Tablodaki numaralara ve isimlere tıklandığında bu bilgileri yaz.php sayfasına gönderip ekrana yazdıralım.

<!--index.php-->
<html>
<body>
   <table border="1">
      <tr>
         <td>Numarası</td><td>Adı</td>
      </tr>
      <tr>
         <td><a href="yaz.php?no=15">15</a></td>
         <td><a href="yaz.php?ad=Ayşe">Ayşe</a></td>
      </tr>
      <tr>
         <td><a href="yaz.php?no=17">17</a></td>
         <td><a href="yaz.php?ad=Osman">Osman</a></td>
      </tr>
      <tr>
         <td><a href="yaz.php?no=29">29</a></td>
         <td><a href="yaz.php?ad=Mustafa">Mustafa</a></td>
      </tr>
</table>
</body>
</html>
<!--yaz.php-->
<html>
<body>
<?php
echo "<b>Numarası</b>: ",$_GET["no"],"<br>";
echo "<b>Adı</b>: ",$_GET["ad"],"<br>";
?>
</body>
</html>

Burada tıklanan linke göre sadece no yada ad gönderilmektedir. Buna göre yaz.php sayfasında duruma göre sadece gelen bilgiyi ekrana yazdırmak için yaz.php sayfası şu şekilde düzenlenebilir.

<!--yaz.php-->
<html>
<body>
<?php
if(@$_GET["no"]) // eğer no geldi ise
   echo "<b>Numarası</b>: ",$_GET["no"],"<br>";
elseif(@$_GET["ad"]) // eğer ad geldi ise
   echo "<b>Adı</b>: ",$_GET["ad"],"<br>";
?>
</body>
</html>

Burada if(@$_GET["no"]) ifadesi; GET metodu ile gelen no bilgisi varsa anlamına gelmektedir. Başındaki @ işareti ise uyarı mesajına engel olmaktadır. Dikkat ediniz hata değil, uyarı mesajına engel olur. Eğer GET ile no bilgisi gelmiyorsa, gelmeyen yani olmayan bir değişkeni if yapısı kontrol ederken uyarı verir. Bu uyarı mesajını gizlemek için @ işaretini kullanıyoruz.

 

Örnek: Öğrenci bilgilerinin bulunduğu dizideki öğrenci adlarını sayfaya yazdıralım. Daha sonra bu adlara tıklandığında yaz.php sayfasına öğrencinin numarasını gönderip ekrana yazdıralım.

<!--index.php-->
<html>
<body>
<?php
$liste=array(74=>"Onur",64=>"Samet",85=>"Can",16=>"Raşit",80=>"Mert",14=>"Aziz");
foreach($liste as $indis=>$deger)
   echo "$indis <a href='yaz.php?no=$indis'>$deger</a><br>";
?>
</body>
</html>
<!--yaz.php-->
<html>
<body>
<?php
echo "<b>Gelen Numara</b>=",$_GET["no"];
?>
</body>
</html>

 

Örnek: Dizideki kişileri tablo şeklinde ekrana yazdıralım. Tabloda sil ve düzelt şeklinde tanımlanan iki link ile bu kişilerin numaralarını ve işlem adını islem.php sayfasına gönderip ekrana yazdıralım.

<!--index.php-->
<html>
<body>
<?php
$uyeler=array(14=>"Ömer",22=>"Erkin",35=>"Zekiye",41=>"Vildan",85=>"Yalçın",114=>"Rabia");
echo "<table border='1'>";
echo "<tr>";
echo "<td>Numarası</td>";
echo "<td>Adı</td>";
echo "<td colspan='2'>İşlem</td>";
echo "</tr>";
foreach($uyeler as $indis=>$deger){
   echo "<tr>";
   echo "<td>$indis</td>";
   echo "<td>$deger</td>";
   echo "<td><a href='islem.php?no=$indis&islem=duzelt'>Düzelt</a></td>";
   echo "<td><a href='islem.php?no=$indis&islem=sil'>Sil</a></td>";
   echo "</tr>";
}
echo "</table>";
?>
</body>
</html>
<!--islem.php-->
<html>
<body>
<?php
$no=$_GET["no"];
if($_GET["islem"]=="duzelt")
   echo "$no nolu kayıt düzeltilecektir.";
elseif($_GET["islem"]=="sil")
   echo "$no nolu kayıt silinecektir!";
?>
</body>
</html>

 

Örnek: Bu örneğimizde GET metodu ile sayfanın kendisine bilgi göndereceğiz. Bunun için hedef olarak bulunduğunuz sayfanın adını yazacağız.

Örneğimizde ekranda bulunan numaralardan birine tıklandığında buna karşılık gelen resmi ekranda göstereceğiz. Bu resimlerin adları bir dizide saklıdır.

<!--index.php-->
<html>
<body>
Kullanılan resimleri indirmek için <a href="http://docs.google.com/uc?id=0B4VfeLzXn5MgZmU1ZjQ4MjYtMWQ0ZC00MGI3LTkzM2MtNWVjOTQyNzE3ZDI0&export=download&hl=en_US">tıklayınız.</a><br>
<?php
$resimler=array(1=>"gok.jpg","mavi.jpg","park.jpg","sari.jpg","yesil.jpg");
foreach($resimler as $indis=>$deger)
   echo "<a href='index.php?resim_no=$indis'>$indis</a> ";

echo "<br>";
if($_GET){ // GET olayı varsa anlamındadır.
   echo "<img src='resimler/".$resimler[$_GET["resim_no"]]."'>"; // GET olayı varsa ilgili resmi gösterir
   echo "<br><b>".$resimler[$_GET["resim_no"]]."</b>"; // resmin adını yazar
}
else
   echo "<img src='resimler/".$resimler[1]."'>"; // GET olayı yoksa ilk resmi gösterir
   echo "<br><b>".$resimler[1]."</b>"; // ilk resmin adını yazar
?>
</body>
</html>

Burada, sayfa ilk yüklendiğinde GET olayı olmadığından dizideki ilk resim gösteriliyor. Eğer GET olayı varsa GET ile gelen resim_no 'ya göre ilgili resim ve adı erkran gösteriliyor.

Buradaki if($_GET) ifdadesi GET olayı varsa anlamına gelmektedir.


Bu site meslek liselerinde bilişim bölümü web programcılığı dalında okutulan internet programcılığı dersine yardımcı olması için tasarlanmıştır. İletişim için iletisim@phpdefteri.com
Apache PHP MySQL PhpMyAdmin EasyPHP Xampp AppServ Wamp W3School

www.phpdefteri.com © 2010