Php Aracılığı Web Sayfanızdan Sipariş Formu Alma


Combobox, listbox,radiobutton gibi bileşenleri kullanarak email veya sipariş formu alma yöntemi sık sorulan sorulardan biridir. Bu çalışmanın email gönderme çalışmasından aslında hiçbir farkı yoktur. Bu nedenle asp_php kullanarak email gönderme başlıklı uygulamada kullandığımız fla ve php dosyası biraz düzenlenerek çalışmamızda işlenmiştir.

Php bilgim çok zayıf olmasına rağmen bir php dosyasını editlemek için biraz dikkat yeterlidir.Bunun nasıl yapılacağı aşağıda size anlatılacaktır. Önce çalışmaya bir göz atalım. Dosyamız yine 2 sahneden oluşuyor. İlk sahne preload ikinci sahne sipariş formunu içermektedir.

DOSYAYI İNDİR

Tüm verileri düzgün girdiğinizde önce bir önizleme butonu ile verileri kontrol edebilirsiniz. Önizleme butonuna bastığınızda alttaki gibi bir panel çıkar:

Gönder butonuna bastığınızda mail ilgili kişiye gönderilir. Deneme amaçlı gönderilen bir mailde alttaki gibi bir görüntü ortaya çıkacaktır.

PHP bilginiz yoksa düzenleme yapabilmek için aşağıdaki kurallara uymalısınız:

1- Genel anlamda flash içinde yapılan, gönderilecek değişkenleri oluşturmaktır. Bu nedenle önce fla dosyanızı açın. Buradaki mevcut tüm değişkenleri ve metin kutularına ait instance name ve variable adlarını kaydedin. Bir değişkene değer atamadan php dosyanızı çalıştıramayacağınıza göre tüm dikkatiniz değişkenlerde olmalıdır. Değişkene değer atama doğrudan olabileceği gibi instance name yoluylada yapılabilir.

var kutu="seat toledo"; gibi bir dizi doğrudan değişkene atamadır ve bu veriyi php de kullanabilirsiniz.

Bir input metin kutusunun instance name `i kutu1 variable adı kutu ise:

var kutu=kutu1.text; dolaylı bir atamadır. İnput metin kutusuna girilen değer kutu değişkenine atanarak php dosyasına girer.

Son bir yolda önce bir değişken adı deklare edilir ama bir değer verilmez. Örneğin var kutu; Buna daha sonra değer atanabilir.Çalışmanın uygulaması anlatılırken bahsedilecektir.

Özetlersek önce fla dosyasındaki değişken isimlerine dikkat edilir.

2- Php dosyası açtığınızda fla dosyasında kullanılan değişken isimlerini göreceksiniz. Php de değişken isimleri daima $email gibi bir dolar karakterinden sonra yazılır. Fla dosyanızda siz bir input metin kutusu hazırlamış ve variable alanına email yazmışsanız php dosyasında:

$emailimiz = $_POST["email"]; dizini gönderilen veriyi işlemeye hazırdır.Burada kırmızı ile yazılan isim mutlaka fla dosyasındaki metin kutusunun variable adı olmalıdır. $emailimiz daha sonra kodlarla işleme alınacaktır.Dikkat edilecek en önemli konu budur.

3- Şu andan itibaren yazacaklarım nedeni ile php bilen arkadaşlardan özür dilemek isterim. İfadeler sadece pratik bilgiye yönelik ve php bilgisi hiç olmayanlar içindir. Profesyonel arkadaşların beni mazur göreceklerine inanıyorum.

Bir php (asp,xml vs) küçük bir virgül hatası bile dosyanın çalışmaması ile sonuçlanacaktır. Hiç dokunulmaması gereken alanlar vardır. Bunları deneme yanılma yoluyla kolaylıkla farkedersiniz.Örneğin üstteki çalışmaya ek bir metin kutusu yerleştirmek istiyorsunuz.

Fla dosyanızı açıp örneğin ülke şeklinde bir metin kutusu eklediniz .eMtin kutusunun variable adı ulke olsun.Bunun karşılığı php dosyasına ne gibi eklentiler yapmalısınız?

Elimizdeki php dosyasına bir göz atalım. üzerinde zaten açıklamaları mevcuttur:

<?php

/* Alttaki alana email adresinizi yazınız*/

$sendTo = "lazoid@ttnet.net.tr";

/* Mailin konu kısmında görmek istediğiniz cümleyi yazınız */

$subject = "Flashdersleri`inden Sipariş Formu";

/* Alttaki dizinlere dokunmayınız. Flash dosyasndaki email input metin kutusunun variable alanına mutlaka email yazınız */

$headers = "From: " . $_POST["firstName"] ." ". $_POST["lastname"] . "<" . $_POST["email"] .">\r\n";
$headers .= "Reply-To: " . $_POST["email"] . "\r\n";
$headers .= "Return-path: " . $_POST["email"];
$email = $_POST["email"];

/* Alta istediğiniz kadar değişken ekleyebilirsiniz.Dizin alttakinin aynısı olmalıdır.Yani:
$degisken = $_POST["degisken"];
şeklinde .Şayet değişkene ait dönen değer Türkçe karakter içerecekse bir alttaki dizini mutlaka eklemelisiniz:
$degisken = mb_convert_encoding($degisken ,"iso-8859-9","utf-8");
Burada dikkat edeceğiniz tek konu flash dosyasındaki değişken adı ile burada kullanılan değişken adı aynı olmalıdır */

$isim = $_POST["isim"];
$isim = mb_convert_encoding($isim ,"iso-8859-9","utf-8");
$telefon = $_POST["telefon"];
$adres = $_POST["adres"];
$adres = mb_convert_encoding($adres ,"iso-8859-9","utf-8");
$marka = $_POST["marka"];
$marka = mb_convert_encoding($marka ,"iso-8859-9","utf-8");
$renk = $_POST["renk"];
$renk = mb_convert_encoding($renk ,"iso-8859-9","utf-8");
$fiyat = $_POST["fiyat"];

$ulke = $_POST["ulke"];
$ulke = mb_convert_encoding($ulke ,"iso-8859-9","utf-8");

/* Body alanına eklediğiniz değişkenin ismini mutlaka yerleştirmelisiniz.Eklenti için alttaki formatı kullanmalısınız
mail($sendTo, $subject, $body, $headers); bu dizine ise dokunmayınız */

$body = " İsim: $isim\n Email: $email\n Ülke: $ulke\n Tel: $telefon\n Adres: $adres\n Marka: $marka\n Renk: $renk\n Fiyat: $fiyat";
mail($sendTo, $subject, $body, $headers);

?>

Kırmızı renkte yazılan 3 alana dikkat ediniz. İlk dizin flashtan gelen ulke değişkeninin değerini yine php deki ulke değişkenine atar(bu farklı bir isimde olabilir) Bir alttaki dizin bu değer Türkçe karakter içeriyorsa gereklidir.Değilse yazmanıza gerek yoktur. 3 dizinde bu değer body değişkenine eklenmektedir. En alttaki mail($sendTo, $subject, $body, $headers); dizini ile veriler body değişkeni içinde mail ile gönderilir. Her eklenen değişken için bu işlemler hatası yapılmalıdır.

4- Bu iş tabii ki bu kadar basit değildir.Anlatmaya çalıştıklarım sadece bu php dosyası içindir.Vurgulamaya çalıştığım şey php ve fla dosyasındaki değişken isimlerine dikkat ederek hatasız girmek kaydı ile her php dosyasında bazı eklentilerin bilgi eksikliği olmasına rağmen yapılabileceğidir. Eğer konu ile ilgili iseniz bıkmadan deneme yapmaktan çekinmeyecekseniz bu editlemeler sırasında neyin önemli olduğunu kavrayabilirsiniz. Bundan sonrası size kalmıştır.Ya bu noktada kalırsınız ya da php ile ilgili kitaplardan ve web sayfalarından faydalanarak doğru bilgiye ve kodu kendiniz yapmaya doğru ilerleyebilirsiniz.

Şimdi fla dosyasına dönüp bir combobox , radiobutton veya listbox verilerini nasıl değişken olarak atayabileceğiniz konusuna gelelim:

Fla dosyasını açtığınızda 2 sahne göreceksiniz.İntro sahnesinden bahsetmeyeceğim, bilinen klasik bir preload sahnesidir.Form sahnesine geldiğinizde tüm kodların kodlar layerında 1, 8, 18, 27. karelerde olduğunu göreceksiniz.27. karede sadec bir stop() komutu vardır.

Önce metin kutularının instance name ve varaibe isimlerini not ediniz. 1.kareye baktığımızda:

stop ();

//telefon alanına sadece rakam girişi yapılabilir
telefon1.restrict = "0-9";

//Php dosyasına göndermek için 3 adet değişken hazırlanıyor
marka=0;
renk=0;
fiyat=0;

//radioGroup genel isimli 3 adet radiobuttona ait seçimin değeri renk değişkenine atanıyor
var _listener:Object = new Object();
_listener.click = function(evt_obj:Object){
renk=radioGroup.selection.label;
trace(renk)
}
radioGroup.addEventListener("click", _listener);

// Combobox label değeri marka değişkenine ve aynı seçimin data değeri fiyat değişkenine atanıyor.
var _listener1:Object = new Object();
_listener1.change = function(event_obj:Object) {
marka=event_obj.target.selectedItem.label;
trace(marka)
fiyat=event_obj.target.selectedItem.data;
trace(fiyat)
};
combo.addEventListener("change", _listener1);

//Dinamik metin kutularına ait veriler siliniyor
sil.onRelease=function(){
isim1.text ="";
email1.text ="";
adres1.text ="";
telefon1.text=""
fiyat1.text=0
}

onizleme_bt.onRelease=function(){
//Verilerin düzgün girilip girilmediği kontrol ediliyor
if (isim1.text != "" && telefon1.text != "" && adres1.text != ""&& fiyat != 0 && _root.renk!=0&& _root.marka!=0) {
// Emailde @ karakter ve yeri kontrol ediliyor.Uygunsa çalışma devam ediyor değilse hata karesine gidiliyor
i = "0";
deger = 0;
while (Number(i)<=Number(length(email))) {
if (substring(email, i, 1) == "@") {
deger = 1;
}
i = Number(i)+1;
}
if (Number(deger) == 0) {
gotoAndStop("hata");
} else {
gotoAndStop("hazir");
}
} else {
gotoAndStop("hata");
}
}

kodlarını görürsünüz.Açıklamalar üstlerine eklenmiştir. Önce radiobuttondan bahsedelim. Sahneye component panelinden 3 tane radiobutton çekip yerleştirdiğinizde flash bunları otomatik olarak gruplayacaktır. Gruptan kasdedilen 3 butonu birbiri ile ilişkilendirir ve bunlara bir grup ismi atar.Gruplandırılmış radiobuttonlar siz izin vermediğiniz sürece tek bir şeçim yapmanızı ve uygulanan kodların bu gruba hitap etmesini sağlar.

Sahnedeki bir radiobuttonu seçip properties paneline bakarsanız(parameters alanından) her üç elemana da groupname alanında aynı ismin verildiğini görürsünüz.

Şayet siz bu üç gruptan bağımsız başka elemanlar eklemek isterseniz yine properties panelinden groupname kısmındaki ismi değiştirmeniz gerekir.Aynı grup isimli her radiobutton grubu birbirinden bağımsız hareket edebilecektir. Kodlara bakarsak:

var _listener:Object = new Object();
_listener.click = function(evt_obj:Object){
renk=radioGroup.selection.label;
trace(renk)
}
radioGroup.addEventListener("click", _listener);

Buarada hangi butonu işaretlerseniz daha önce var renk; şeklinde deklare ettiğiniz değişkene o butonun ismi atanır. Bunu sağlayan radioGroup.selection.label; kodudur. Dikkat ederseniz üç butonun grup ismi olan radioGroup ismi atanmıştır.Yani 3 butonda ortak ve ilişkili hareket eder ve hangisini tıklarsanız onun label adı renk değişkenine atanır.

Combobox ta ise değişken atamasını sağlayan komut:

var _listener1:Object = new Object();
_listener1.change = function(event_obj:Object) {
marka=event_obj.target.selectedItem.label;
trace(marka)
fiyat=event_obj.target.selectedItem.data;
trace(fiyat)
};
combo.addEventListener("change", _listener1);

komutlarıdır.Sahneye bir combobox eklediğinizde properties panelinden parameters alanına gözatın:

.

üstteki gibi bir görüntü ortaya çıkar.Buarada labels alanının önündeki boşluğa çift tıklayarak buton adını değiştirirsiniz.

Önce boş açılanan panelde artı işaretine tıklayarak bir isim atarsınız.Tekrar atama için yeniden artı tuşuna basmalısınız. Bu labellara birer data değeri atamak için:

üstetki data alanının önündeki boşluğa çift tıklayın:

yine bir üstte anlatılan yöntemle artı tuşuna basarak değer atayabilirsiniz. Burada tek dikkat edeceğiniz sıralamadır.Sıfır alanındaki labelın data değeri yine sıfır alanında olmalıdır. Resimlerde de gördüğünüz gibi Bir otomobil markası seçin labelına herhengi bir değer atanmamıştır.Çünkü bu label sadece bilgi vermek amcını güder. Bu bilgilerden sonra comboboxda tıkladığınız alanının ismi:

marka=event_obj.target.selectedItem.label; komutu ile daha önce var marka; şeklinde deklare edilen değişkene atanmıştır. Bu labelın data değeri ise yine önceden var fiyat; şeklinde deklare edilen değişkene:

fiyat=event_obj.target.selectedItem.data; komutu ile atanmaktadır.

Combobox yerine listbox kullanabilirsiniz.Kodlarda hiçbir değişikliğe gerek yoktur.

Şimdi gönder butonuna bastığınızda bu marka ve fiyat değişkenleri php dosyasına gönderilecek ve oradaki:

$marka = $_POST["marka"];
$fiyat = $_POST["fiyat"];

kodlarla ilişkilendirilerek işleme sokulabilecektir. Burada dikkat edilece konular daha önce anlatıldı.

Diğer kodların ne işe yaradığı hemen üstünde not edilmiştir.

8.karedeki kodlar:

stop ();

/*Hatalı giriş yapıldığında forma geri dönülür bu arada
bazı değişkenlerin değeri yeniden doldurulması için sıfırlanır*/
geri1.onRelease=function(){
gotoAndStop ("form");
_root.fiyat==0;
_root.fiyat1.text="";
_root.marka==0;
_root.renk==0
}

1.karedeki kodlarla hatalı giriş yapılmışsa hata label değerine sahip kareye gelinir.Buradaki geri butonuna basıldığında sahne yine ilk kareye geçer ve girilen bazı değerler iptal edilir.

18.karedeki kodlar:

// HTML özelliği verilerek onizleme metin kutusuna yaptığınız tüm girişler kontrol amaçlı yazdırılıyor
onizleme.html=true
onizleme.multiline=true
onizleme.htmlText = "<b>Merhaba " + isim + " !</b>" + "<br><br><font color='#ff0000'>Göndermeden önce lütfen mesajınızı kontrol ediniz:</font>" + "<br><br><b>Telefon numaranız:</b> <br>" + telefon + "<br><b>Emailiniz:</b> <br>"+ email+ "<br><b>Adresiniz:</b> <br>"+ adres+ "<br><b>Otomobil modeli:</b> <br>"+ marka+ "<br><b>Renk:</b> <br>"+ renk+ "<br><b>Fiyat:</b> <br>"+ fiyat;
stop();

//Önizlemede hata varsa geriye dönüşü sağlar
geri2.onRelease=function(){
gotoAndStop("form");
}

//Verileri kontrol ettikten sonra php dosyasına gönderiliyor
gonder.onRelease=function(){
loadVariablesNum("email.php",0,"POST");
play();
}

//Veri kontrol metnini yukarı kaydırma için
ust.onPress=function(){
onizleme.scroll--;;
}

//Veri kontrol metnini aşğı kaydırma için
alt.onPress=function(){
onizleme.scroll++;
}

Bu alana tüm verileri girdikten sonra önizleme butonuna basılarak ulaşılır.Amaç girilen verileri kontrol etmektir.Hata görürseniz geri butonuna basarak 1.kareye yeniden geri dönebilirsiniz.Bu alanda 4 buton ve instance name`i onizleme olan bir dinamik metin kutusu vardır.

Onizleme metin kutusuna html özelliği verilerek 1.karede yazılan veriler atanır.Sağdaki ust ve alt butonları verilere scroll özelliği vererek incelememizi sağlamak içindir. Verieri kontrol ettikten sonra sorun yoksa gönder butonuna basarak:

gonder.onRelease=function(){
loadVariablesNum("email.php",0,"POST");
play();
}

üstteki kodlarla tüm değişken ve değerlerini işlemesi için php dosyasına gönderebilirsiniz.Başta da anlatıldığı gibi php dosyasında tüm değikenleri doğru ilişkilendirmişseniz sorunsuz veriler mail ile size ulaşacaktır.