Php - xajax ile form değişkenlerini gönderme

Bu dersimizde xajax kütüphansini kullanarak form değişkenlerinin nasıl gönderildiğini ve fonksiyon içerisinde nasıl kullanıldığını öğreneceğiz.

Bu dersimizde form elemanlarının değerlerini xajax kütüphanesini kullanarak nasıl gönderip alacağımızı öğreneceğiz.

İlk dersimizde (10 dakikada Xajax öğrenin) belirttiğim gibi bu örnekleri çalıştırabilmek için xajax kütüphanesini uygulamayla aynı dizine kopyalamanız gerekmektedir eğer bu kütüphaneniz yoksa buradan indirebilirsiniz.

Öncelikle giriş kodlarımızı ekliyor ve fonksiyonumuzun adını xajax'a tanıtıp form_gonder fonksiyounumuzu oluşturuyoruz.


<?php 

require_once("xajax_core/xajax.inc.php");

$xajax = new xajax();



$xajax->registerFunction("form_gonder");

function 
form_gonder($deger)

{

    
extract($deger); // form değişkenlerini dışarı aktarır

    
$icerik "<p>Adı Soyadı : ".$ad_soyad."<p/>";

    
$icerik.= "<p>Cinsiyet : ".$cinsiyet."<p/>";

    

    
$objResponse = new xajaxResponse();

    

    
$objResponse->assign("div_form","innerHTML",$icerik);

    
$objResponse->assign("div_form","style.color","#".$renk);

    

    return 
$objResponse;

}

$xajax->processRequest();

?> ?>



Buraya kadar yaptıklarımızı biraz inceleyelim. Daha önce yapmış olduğumuz örnekten farklı olarak bu fonksiyonumuzda iki ifade dikkatimizi çekmeli; bunlardan birincisi extract(); komutu. Bu komut formdan gönderdiğimiz değişkenleri fonksyon içerisinde aynı değişken adıyla kullanmamızı sağlar.

Örnek olarak; "id" yada "name" özelliği ad_soyad olan bir form elemanının değeri fonksiyon içerisine gönderildiği taktirde, extract(); komutuyla $ad_soyad değişkeni bu form elemanının değerini alır. Aşağıdaki kodlarda form elemanlarının isimleri ile yukarıdaki fonksiyonumuzda kullandığımız isimleri karşılaştırabilirsiniz.

Dikkatimizi çeken ikinci ifade ise $objResponse->assign() fonsiyonunun almış olduğu "innerHTML" ve "style.color" özelliği. Bu özelliklerden ilki; gönderilen verinin bir html içeriği olduğunu ikincisi ise bir stil bilgisi olduğunu belirtir.

Şimdi formumuzu ve form elemanlarımızı oluşturalım


<form id="bilgi_frm">

<p>Adı Soyadı : <input type="text" name="ad_soyad" /></p>

<p>

    Cinsiyetiniz :

    Erkek <input type="radio" name="cinsiyet" value="Erkek"/>

    Kadın <input type="radio" name="cinsiyet" value="Kadın"/>

</p>

<p>

    <label>Uğurlu Renginiz : </label>

    <select name="renk">

        <option value="FF0000">Kırmızı</option>

        <option value="00FF00">Yeşil</option>

        <option value="0000FF">Mavi</option>

        <option value="FFFF00">Sarı</option>

    </select> 

</p>

</form>



Yukarıdaki formumuzda dikkatinizi çekmek istediğim iki nokta var ilki neden form "name" kullanmayıp "id" özelliğini kullandığım bunun sebebi firefox ve benzeri tarayıcılar "name" özelliğini form tagında tanımıyor. İkincisi ise form tagının içerisinde "method" özelliğini kullanmama gerek kalmaması. Onun sebebi ise gönderme işlemini kullandığımız komutun yapmasıdır.


Son olarak javascript kodlarımızı, formumuzu gönderecek butonu ve çağırılan verilerin gösterileceği "div" taglarını oluşturuyoruz.


<?php  $xajax->printJavascript();?>

<input type="button" value="Gönder" onclick="xajax_form_gonder(xajax.getFormValues('bilgi_frm'));" />

<div id="div_form"></div> ?>




Artık php fonksiyonlarımızı sayfa içerisinde çağırırken başına "xajax_" eklememiz gerektiğini anlamışsınızdır.

Son kodumuzda fonksyonumuzu çağırıyor ve içerisine xajax.getFormValues('bilgi_frm') bilgisini gönderiyoruz bu komut xajax sınıfı içerisinde form verilerini göndermede kullanılır ve değişkenler bir dizi içerisinde gönderilir, bu diziyi açmak ve form elemanlarını aynı isimde değişkenlere yerleştirmek için dersimizin başında belirttiğim extract(); komutunu kullanırız.

Ekran çıktısı şekildeki gibidir.



Yukarıda açıkladığımız kodlarımızın tamamı aşağıda verilmiştir.


<?php 

require_once("xajax_core/xajax.inc.php");

$xajax = new xajax();



$xajax->registerFunction("form_gonder");

function 
form_gonder($deger)

{

    
extract($deger); // form değişkenlerini dışarı aktarır

    
$icerik "<p>Adı Soyadı : ".$ad_soyad."<p/>";

    
$icerik.= "<p>Cinsiyet : ".$cinsiyet."<p/>";

    

    
$objResponse = new xajaxResponse();

    

    
$objResponse->assign("div_form","innerHTML",$icerik);

    
$objResponse->assign("div_form","style.color","#".$renk);

    

    return 
$objResponse;

}

$xajax->processRequest();

?>



<form id="bilgi_frm" method="post">

<p>Adı Soyadı : <input type="text" name="ad_soyad" /></p>

<p>

    Cinsiyetiniz :

    Erkek <input type="radio" name="cinsiyet" value="Erkek"/>

    Kadın <input type="radio" name="cinsiyet" value="Kadın"/>

</p>

<p>

    <label>Uğurlu Renginiz : </label>

    <select name="renk">

        <option value="FF0000">Kırmızı</option>

        <option value="00FF00">Yeşil</option>

        <option value="0000FF">Mavi</option>

        <option value="FFFF00">Sarı</option>

    </select> 

</p>

</form>



 $xajax->printJavascript();?>

<input type="button" value="Gönder" onclick="xajax_form_gonder(xajax.getFormValues('bilgi_frm'));" />

<div id="div_form"></div> ?>

  • Etiketler;
Yorum Yaz

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

sağol
güsel bildiri tşkler.
Ekrana form geliyor. Gönder diyorum hiçbirşey olmuyor. Hata mesajı falan da gelmiyor.
hata mesajı göndermiyor evet sorunu kendimiz bulmamız lazım böyle bir dezavantajı var. İlk olarak kontrol etmen gereken şey kod satırının en başında veya $xajax->processRequest(); fonksyonuna kadar olan kısımda boş html satırı varmı yokmu buna bak. olmadı emailime uygulama yaptığın dosyayı gönder bi bakayım.
merhaba anlatım için teşekkür ederim çok yararlı bir anlatım olmuş. sizden bir ricam var formdaki verileri xajax ile veritabanına nasıl kaydettireceğimizide gösterebilir misiniz???
Formdaki veriler en yukarıda yazılan form_gonder($deger) php fonksyonun içine $deger olarak geliyor. Aynı fonksyon içerisinde php ile gelen verileri dbye kaydettiğinizde kaydınız xajax ile yapılmış olacaktır.
Şu sıralar sınavlar işler nedeniyle yoğunum haziranın ortasına doğru dediğiniz örnekleri koyabilirim.
#maviejder bu $icerik değişkenini belirlediğiniz alan zaten php. javascript değil. o yüzden çekiniyorsunuz sanırım. exract($deger); dedikten sonra $ad_soyad, $cinsiyet ve $renk bilgileri artık birer değişkendir. normal <?php MYSQL_QUERY ( " INSERT INTO tablo VALUES ( null, '$ad_soyad', '$cinsiyet', '$renk' ) " ); ?> mysql e bilgi ekleme koduyla ekleyebilir veya aklınıza gelen diğer php komutlarını burada çalıştırabilirsiniz. Kolay gelsin.
:D bi daha düşündüm de bi veritabanına kayıt örneği verseniz güzel olur hocam.

Yukarı Git