Merhaba arkadaşlar bugün sizlerle Android, PHP ve MySql kullanarak uzak sunucudaki veritabanımıza kullanıcı kaydı yapacağız. Bunun için Android’in Volley kütüphanesini kullanacağız ve bu şekilde kullanıcı adı ve şifre gibi değerleri web servisimize post atacağız. Web servisimiz de bu kullanıcı adına sahip başka bir üyenin olup olmadığına bakacak ve sonrasında bize “Eklendi” yada “Eklenemedi” şeklinde bildirimde bulunacaktır. Bu şekilde bizde dış dünya ve internetle daha içli dışlı bir uygulama geliştirmiş olacağız.
1)Layout Tasarımı
Android Stüdyoyu açıyoruz ve MySQLBaglantisi adlı bir proje oluşturuyoruz. Activity ismine is MainActivity ismini veriyoruz.
Sonrasında ise activity_main.xml dosyasını açıyoruz ve RelativeLayout’ı LinearLayout’a Çeviriyoruz. android:orientation=”vertical” diyoruz.
Sonrasında ise şu satırları LinearLayout tagleri arasına ekliyoruz.
<TextView
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:text=“Username”/><EditText
android:layout_width=“match_parent”
android:layout_height=“50dp”
android:id=“@+id/txtUsername”
android:textColor=”#111111″
android:background=“@android:color/background_light” /><TextView
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:text=“Password”/><EditText
android:layout_width=“match_parent”
android:layout_height=“50dp”
android:id=“@+id/txtPassword”
android:textColor=”#111111″
android:background=“@android:color/background_light” /><Button
android:layout_width=“match_parent”
android:layout_height=“50dp”
android:id=“@+id/btnEkle”
android:textColor=“#000000”
android:text=“Ekle”
android:background=“#d9d9d9”
android:onClick=“ekle” />
2)Kütüphanenin Projeye Eklenmesi ve İzinler
Şimdi sol taraftaki Project sekmesine tıklıyoruz Gradle Scripts başlığının altındaki build.gradle(Module:app) dosyasını açıyoruz ve dependencies bölümünün içine
compile ‘com.android.volley:volley:1.0.0’
ekliyoruz ve gradle.build dosyasında değişiklik yaptığımız için Sync Now butonu geliyor ekrana ve ona tıklıyoruz.
Böylece Volley Kütüphanesini projeye eklemiş olduk.
Sırada bu kütüphaneyi kullanabilmek için internet iznini vermek gerekiyor. Bunun için de AndroidManifest dosyasını açıp <manifest> teginin arasına aşağıdaki izni ekliyoruz.
<uses-permission android:name=“android.permission.INTERNET” />
3)Mobilden alınan değerlerin web servise post edilmesi
MainActivity.java dosyasını açıyoruz. Aşağıdaki fonksiyonu sınıf içine ekliyoruz.
public void ekle(View view) { EditText txtUsername=(EditText)findViewById(R.id.txtUsername); EditText txtPassword=(EditText)findViewById(R.id.txtPassword); final String username=txtUsername.getText().toString(); final String password=txtPassword.getText().toString(); if(username.equals("")==false && password.equals("")==false) { RequestQueue queue = Volley.newRequestQueue(MainActivity.this); String url = "http://DOSYAADRESI/kaydol.php"; // Post atılan adres. StringRequest postRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() { @Override public void onResponse(String response) { Toast.makeText(MainActivity.this,response,Toast.LENGTH_LONG).show(); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { Toast.makeText(MainActivity.this,error.getMessage().toString(),Toast.LENGTH_LONG).show(); } } ) { @Override protected Map<String, String> getParams() { Map<String, String> params = new HashMap<String, String>(); params.put("username", username); params.put("password", password); return params; } }; queue.add(postRequest); } else { Toast.makeText(MainActivity.this,"Lütfen Gerekli Alanları Doldurun",Toast.LENGTH_LONG).show(); } }
4)Veritabanı,Tablo oluşturma ve Web Servisi(kaydol.php) Yazma
böylece İşin mobil uygulama tarafı tamamlanıyor. Artık mobil uygulamadan attığımız post istekleri karşılayacak ve gerektiğinde veritabanına ekleyecek web servisini(yukarıda post attığımız kaydol.php dosyası yani) yazacağız ve bunun için php dilini kullancağız.
Sırada ise veritabanımızı oluşturmaya geldi. MySql Workbench veya PhpMyAdmin(Hangisini kullanıyorsanız) gibi araçların aracılığı ile Veritabanımızı ve tablomuzu oluşturuyoruz.
Veritabanımı oluşturduktan sonra o veritabanına üyeler isimli bir tablo ekliyoruz.
Bu tablo 3 sutundan oluşuyor id(int), username(varchar), password(varchar).
İd sütunu primary key, auto increment ve not null olarak işaretlenmeli.
Ayrıca username ve password sütunları da not null olarak işaretlenmeli.
Ve şimdi kaydol.php diye bir dosya oluşturuyoruz, ardından da aşağıdaki kodları dosyaya ekliyoruz.
kaydol.php
<?php
$username=$_POST["username"];
$password=$_POST["password"];
$servername = "Sunucu Adresin"; // Veritabanı adresi yada ip'si yer almalı
$user = "Veritabanı Kullanıcısı"; // bu alanda ise veritabanının kullanıcı adı yer almalı.
$pass = "Veritabanı kullanıcı şifresi"; // bu alanda veritabanı kullanıcı şifresi yer almalı.
$dbname = "Veritabanı adı"; // bu alanda veritabanı adı yer almalı
$isExist=false;
$conn = new mysqli($servername, $user, $pass, $dbname);
if ($conn->connect_error)
{
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT * FROM uyeler where username='$username'";
$result = $conn->query($sql);
if ($result->num_rows > 0)
{
$isExist=true;
$conn->close();
echo 'Böyle bir kullanıcı zaten mevcut';
}
else
{
$conn->close();
$conn2 = new mysqli($servername, $user, $pass, $dbname);
if ($conn2->connect_error)
{
die("Connection failed: " . $conn2->connect_error);
}
$sql2 = "INSERT INTO uyeler (username, password) VALUES ('$username', '$password')";
if ($conn2->query($sql2) === TRUE)
{
echo "Kullanıcı başarıyla kaydedildi!";
}
else
{
echo "Error: " . $sql2 . "<br>" . $conn2->error;
}
$conn2->close();
}
?>
kaydol.php dosyasını nerde oluşturucağız
Öncelikle button ekledik ve butonu kullanmadık butona bastıktan sonra post atılması gerekmiyormu?
Butonu view olarak xml tarafında oluştururken onun basıldığında çalıştıracağı methodu onclick parametresi olarak verdik. Dolayısıyla butonun bir nesnesini alıp onclick set etmemize gerek kalmadı. İyi günler.
Merhaba button için byid yapılmamış ve onclick de yok nasıl button aktif olmadan php tarafına postlayacak.
Merhaba ekle methodu aldığı View tipi parametre ile xml üzerinde direkt olarak onclick olarak tanımlanabilir. ByID ile buttonun bir nesnesini oluşturmak bu işlem için şart değildir.
size nasıl ulaşabilirim?
Adresinize mail attım.
Bana mail veya telefon numaram üzerinden ulaşabilir misiniz ?
kaydol.php dosyasını nerede oluşturuyoruz ?
Uzak sunucuda yada sizin localhostunuzda çalışan bir php dosyası olabilir.