Actionscript 3.0 – Php – MySql veri alışverişi
Posted by ismail şimşek | Posted in Actionscript 3.0, Php | Posted on 09-04-2010-05-2008
13
Merhaba arkadaşlar. Bu yazımda Actionscript 3.0 ve php ile veritabanından veri çekmeyi, veritabanına veri göndermeyi anlatacağım. Tabi bunu çok basit düzeyde ve amatörce anlatacağım. Bu şekilde anlatacağım çünkü öncelikle bu kullanımı bilmeliyiz. Daha sonra veri alışverişleri için daha farklı yöntemler sınıflar araçlar kullanabiliriz.
Şimdi anlatıma başlayalım.
Bu örneği bir soru için hazırlamıştım. Aranılan kişinin puanını ekranda gösteren bir uygulama.
Öncelikle aşağıdaki gibi bir sahne oluşturalım.

Burada ilk text kutusunun instance name’i “aramaTxt” butonunkisi “veriGetirBtn” alttaki textarea’nınki ise “sonucTxt”.
Bu işlemden sonra veritabanını oluşturalım. Veritabanı işlemleri için sqlyog programını kullanıyorum. Phpmyadmin den çok daha kullanışlı ve pratik. Şu adresten kendisine ulaşabilirsiniz.


Tablomuzun ismi puantaj. Ve son görüntüsü şu şekilde:

Şimdide flash içinde kodlamaya başlayalım. Kodlarımızı satır satır açıklayacağım.
var yol:String = "http://localhost/veriCek.php";
//nereden veri çekileceğini belirttik. siz isteğinize göre değiştirebilirsiniz bu yolu...
kisileriGetir();
function kisileriGetir():void
{
var adres:URLRequest = new URLRequest(yol);
//önceden belirlediğimiz yoldaki php dosyasına istek göndermak için adres isimli bir URLRequest nesnesi tanımladık.
var veriler:URLVariables = new URLVariables();
//göndereceğimiz veriyi taşıması için bir URLVariables değişkeni tanımladık.
veriler.islem = "hepsi";
//yapılacak işlemi seçmek için birde islem isimli değişken oluşturduk.
adres.method = URLRequestMethod.POST;
//URLRequest nesnemizin hangi yolla verileri göndereceğini belirledik.
adres.data = veriler;
//URLRequest nesnemize verilerimizi ekledik.
sendToURL(adres);
//ve son olarak gönderdik.
var yukle:URLLoader = new URLLoader();
//yukle isimli URLLoader nesnemizi tanımladık. bunla php den dönen verileri alıcaz.
yukle.load(adres);
yukle.addEventListener(Event.COMPLETE, yuklendi);
//yukle isimli URLLoader nesnemiz verileri yüklediğinde yuklendi fonksiyonu çalışacak.
}
veriGetirBtn.addEventListener(MouseEvent.CLICK,veriGetirFnk);
//butona click olayı sonucunda çalıştıracağı fonksiyonu atadık.
function veriGetirFnk(e:MouseEvent):void
{
var adres:URLRequest = new URLRequest(yol);
var veriler:URLVariables = new URLVariables();
veriler.aranan_isim = aramaTxt.text;
veriler.islem = "tektek";
adres.method = URLRequestMethod.POST;
adres.data = veriler;
sendToURL(adres);
var yukle:URLLoader = new URLLoader();
yukle.load(adres);
yukle.addEventListener(Event.COMPLETE, yuklendi);
}
function yuklendi(e:Event):void
{
sonucTxt.text = "";
//sonucların yazılacağı metin alanını temizledik.
var gelenler:URLVariables = new URLVariables(URLLoader(e.target).data);
//gelen verileri almak için URLVariables değişkeni tanımladık ve yüklenen veriyi uygun şekilde ona aktardık.
if (gelenler.sonuc == "yok")
{// eğer gelen bişey yok ise kayıt yok diyecek.
sonucTxt.text = "Böyle bir kayıt yok.";
}
else
{//varsa uygun şekeilde yazacak.
sonucTxt.htmlText = gelenler.sonuc;
}
aramaTxt.text = "";
}
Tüm açıklamaları yukarıda tek tek yazdım. Şimdi php kısmına bir göz atalım. Yukarıdaki veriler objesinde taşınan verilerimiz bizim için çok değerli. Phpde ona uygun şekilde çekmemiz gerekiyor. Şimdi php kodlarını gene açıklamalı olarak yazalım.
<?php
$baglanti = mysql_connect("localhost","root","");
mysql_select_db("asphpiletisim", $baglanti);
//
//Veritabanı bağlantısını kurduk.
$islem = $_POST['islem'];
//flash içinden gönderilen veriyi çektik.
if($islem=="tektek")
{
$isim=$_POST['aranan_isim'];
$sorgu = mysql_query("select * from puantaj where isim='$isim'");
$gelen = mysql_fetch_assoc($sorgu);
//bu veriyi veritabanından sorgulattık.
if($gelen)//dönen bir veri var ise
{
echo "sonuc=".$isim."->".$gelen['puan'];
//sonuc=100 şeklinde yazdırdık.
//flash içinde de gelen verileri gelenler.sonuc şeklinde çekmiştik. buradan ona uygun şekilde gönderdik çünkü.
}
else//herhangi bir kayıt yoksa
{
echo "sonuc=yok";
}
}
elseif($islem=="hepsi")
{
$sorgu = mysql_query("select * from puantaj");
$sonuclar="sonuc=";
while($gelen = mysql_fetch_assoc($sorgu))
{
$sonuclar .= $gelen['isim']."->".$gelen['puan']."<br />";
//her bir satırdaki veriyi altalta gelecek şekilde bir değişkene attık.
}
echo $sonuclar;
//daha sonra bunları ekrana yazdırdık.
}
?>
Php dosyamızda bu şekilde gene açıklamaları direkt olarak altlarına yazdım. Bu işlemler sonucunda arama ve ekrana yazdırma işlemlerini yapabiliyoruz. Olay bundan ibaret ama sizinde gördüğünüz gibi çok karışık. Bunun yerine bir veritabanı sınıfı yada aracı kullanmanız zamanınızı kısaltacak size saç baş yoldurtmayacaktır
Bu yöntemde bir yerde hata çıkması demek hatayı bulana kadar sinir olmak demektir
Bu çalışmanın tüm dosyalarını şuradan indirebilirsiniz.
Kolay gelsin. Takıldığınız noktalarda soru sormaktan çekinmeyin…

selamlar.farzedinki flash dosyamızda iki ayrı text kutusu var ve bu iki ayrı text kutsundaki isimlerin puanlarını çekecez.(sonuctxt1 ve sonuctxt2 adlarında)
şöyle yaptım olmadı
var yol:String=”veriCek.php”;
var adres:URLRequest = new URLRequest(yol);
var veriler:URLVariables = new URLVariables();
veriler.aranan_isim=sonuc1txt.text;
adres.method=URLRequestMethod.POST;
adres.data=veriler;
sendToURL(adres);
var yukle:URLLoader = new URLLoader();
yukle.load(adres);
yukle.addEventListener(Event.COMPLETE, yuklendi);
function yuklendi(e:Event):void{
var gelenler:URLVariables = new URLVariables(URLLoader(e.target).data);
sonuc1txt.text=sonuc1txt.text+” “+gelenler.sonuc;
sonuc2txt.text=sonuc2txt.text+” “+gelenler.sonuc
}
sonuctxt1 ve sonuctxt2 adlarında demişsiniz ama gönderdiğiniz veri buna uygun değil veriler.aranan_isim=sonuc1txt.text; yazmışsınız.
yani “veriler.aranan_isim = sonuctxt1.text” olmalı isimlerde hata var.
hocam, flash dosyamın içinde bir adet text kutusu var ve adı sonuctxt1
bu yazı kutusundaki isimin puanı aşağıdaki kodlarla çekiliyor.burada bir sıkıntı yok. ama bir text kutusu daha var ve adı sonuctxt2. istediğim bu kutu içinde yazan isminde puanını aynı anda çekmek. işte sıkıntı burada başlıyor .bir kutudan veri çekildiği halde ikincisinden çekemiyorum.
var yol:String=”veriCek.php”;
var adres:URLRequest = new URLRequest(yol);
var veriler:URLVariables = new URLVariables();
veriler.aranan_isim=sonuc1txt.text;
adres.method=URLRequestMethod.POST;
adres.data=veriler;
sendToURL(adres);
var yukle:URLLoader = new URLLoader();
yukle.load(adres);
yukle.addEventListener(Event.COMPLETE, yuklendi);
function yuklendi(e:Event):void{
var gelenler:URLVariables = new URLVariables(URLLoader(e.target).data);
sonuc1txt.text=sonuc1txt.text+” “+gelenler.sonuc;
isimleri düzeltiyorum.özür dilerim
sonuctxt1 ve sonuctxt2 olacak. buraya yanlış yazmışım sorunun bununla alakası yok
veriler.aranan_isim=sonuctxt1.text; den sonra birde veriler.aranan_isim2=sonuctxt2.text; eklemelisiniz. yani diğer textteki veriyide göndermelisiniz php ye. daha sonra php tarafında buna göre işlem yapıp göndermelisiniz.
php tarafında da:
$isim2= $_POST['aranan_isim2']; demeniz yeterli olacaktır.
hocam kısac şöyle açıklayayım.farzedinki iki adet flashta text kutusu bu textin içinde isimler yazılı ve o isimlerin puanları(bunlar daha önce vt ye kaydedilmiştir)bulup puanlarını flasha çekmek.
yani sizin örnekte gönderdiğiniz çalışmanın bu sefer iki text kutulusunu düşünün.iki ayrı text kutusunda yazılmış isimlerin puanlarını aynı anda flasha balmalıyım
özür dileirm aynı anda yazmışız cevabınızı okuyamadım.dediğiniz şeyi zaten yaptım.onu denedim
veriler.aranan_isim=sonuc1txt.text;
veriler.aranan_isim=sonuc2txt.text;
iknci veride undefined çıktısı alıyorum
veriler.aranan_isim=sonuc1txt.text;
veriler.aranan_isim2=sonuc2txt.text;
şeklinde olmalı
denedim.sonuç değişmedi
$isim2= $_POST['aranan_isim2'];
şeklinde de php den çekeceksiniz. daha sonra her bir isim için ayrı ayrı sorgulama yapmalısınız. bence önce php de iki farklı isim ile deneyin. veritabanından iki farklı ismin puanlarını çekebiliyorsanız sorunsuzca bunları flasha göndermek için sadece kurallı şekilde ekrana yazdırmak gerekiyor. önce sadece php ile deneyin derim.
php kodunda ikinci bir post tanıttık diyelim.ve böyle oldu peki sorguda nasıl bir değişiklik yapmamız lazım o zaman burada da bir değişiklik yapmamız gerekir
$sorgu = mysql_query(“select * from tablo where ilkad=’$isim’”);
$baglanti = mysql_connect(“localhost”,”root”,”");
mysql_select_db(“updatee”, $baglanti);
//
//Veritabanı bağlantısını kurduk.
$isim = $_POST['aranan_isim'];
$isim 2= $_POST['aranan_isim2'];
//flash içinden gönderilen veriyi çektik.
$sorgu = mysql_query(“select * from tablo where ilkad=’$isim’”);
$gelen = mysql_fetch_assoc($sorgu);
//bu veriyi veritabanından sorgulattık.
if($gelen)//dönen bir veri var ise
{
echo “sonuc=”.$gelen['yas'];
}
else //herhangi bir kayıt yoksa
{
echo “sonuc=böyle bir kayıt yoktur”;
}
sorgulama işlemini ikinci isim içinde yapıp farklı bir değişkene atmanız lazım.
daha sonra bu verileri birleştirip flash içinde tekrardan çözümlemeniz gerekecek. yada tüm verileri xml şeklinde yazdırabilirsiniz. bu şekilde flash içerisinde xml kullanır gibi verileri alabilirsiniz.