Android Studioda ki projemize PhpMyAdminde ki verileri çekebilmek için veritabanımızdan neyi göstermek istiyorsak onu json olarak bir sayfaya çıkartmak zorundayız.Projemizde genel olarak bir butona bastığımızda veri ekleyecek, başka bir butona bastığımızda ise veritabanımızda ki verileri göstereceğiz.Bunun için iki tane php dosyası oluşturmamız gerekiyor.
İlk olarak bir veritabanı oluşturalım.isim,soyisim ve dogumtarihi eklemek ve göstermek istiyorum tablo adımı deneme yapıp 4 sütunlu veritabanımı oluşturuyorum.
Şimdi ise veritabanına bağlanmamız için bir dosya oluşturuyoruz diğer iki php dosyamızda bunu include edip kullanacağız.
connection.php
<?php define('hostname', 'localhost'); define('user', 'root'); define('password', 'Şifreniz'); define('databaseName', 'Veritabanıisminiz'); $connect = mysqli_connect(hostname, user, password, databaseName); ?>
Bütün veritabanını çekeceğimiz php dosyamızı oluşturuyoruz.
show.php
<?php if($_SERVER["REQUEST_METHOD"]=="POST"){ include 'connection.php'; show(); } function show() { global $connect; $query = Select * FROM deneme; $result = mysqli_query($connect, $query); $number_of_rows = mysqli_num_rows($result); $temp_array = array(); if($number_of_rows > 0) { while ($row = mysqli_fetch_assoc($result)) { $temp_array[] = $row; } } header('Content-Type: application/json'); echo json_encode(array("showarray"=>$temp_array)); mysqli_close($connect); } ?>;
Şimdi ise insert.php adında ekleme yapmak için kullanacağımız php dosyamızı oluşturuyoruz.
insert.php
<?php if($_SERVER["REQUEST_METHOD"]=="POST"){ require 'connection.php'; create(); } function create() { global $connect; $isim= $_POST["isim"]; $soyisim= $_POST["soyisim"]; $dogum= $_POST["dogum"]; $query = " Insert into deneme(isim,soyisim,dogum) values ('$isim','$soyisim','$dogum')"; mysqli_query($connect, $query) or die (mysqli_error($connect)); mysqli_close($connect); } ?>;
tamamdır php kısmıyla işimiz bitti bunları hostumuzda kullanacaksak hostumuza atıyoruz android projemizde bu dosyalara ulaşıp verileri çekeceğiz şimdi android studio tarafına geçiyoruz.Bir proje oluşturuyoruz.İnternete erişebilmesi için Androidmanifest dosyasına aşağıdaki kodu ekleyerek izin veriyoruz.
<uses-permission android:name="android.permission.INTERNET"/>
Tüm Android manifest dosyası
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.dindars.deneme"> <uses-permission android:name="android.permission.INTERNET"/> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
Birde bu uygulamamızda volley kütüphanesini kullanacağız.Bu yüzden kütüphanemizi projemizde kullanabilmek build.gradle dosyasını açıp dependencies blogunun içine aşağıdaki kodu kullanarak kütüphaneyi çağırıyoruz.
compile 'com.mcxiaoke.volley:library:1.0.18'
Tüm build.gradle dosyası
apply plugin: 'com.android.application' android { compileSdkVersion 23 buildToolsVersion "23.0.2" defaultConfig { applicationId "com.example.dindars.deneme" minSdkVersion 9 targetSdkVersion 23 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:23.2.1' compile 'com.mcxiaoke.volley:library:1.0.18' }
Sayfamızın xml kısmını aşağıda ki gibi düzenliyoruz.
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:id="@+id/main"> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:inputType="textPersonName" android:text="isim" android:ems="10" android:id="@+id/editText" android:layout_alignParentTop="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_alignParentRight="true" android:layout_alignParentEnd="true" /> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:inputType="textPersonName" android:text="soyad" android:ems="10" android:id="@+id/editText2" android:layout_below="@+id/editText" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_alignParentRight="true" android:layout_alignParentEnd="true" /> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:inputType="textPersonName" android:text="doğum tarihi" android:ems="10" android:id="@+id/editText3" android:layout_below="@+id/editText2" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_alignParentRight="true" android:layout_alignParentEnd="true" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="ekle" android:id="@+id/insert" android:layout_below="@+id/editText3" android:layout_centerHorizontal="true" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="göster" android:id="@+id/show" android:layout_alignParentBottom="true" android:layout_alignLeft="@+id/insert" android:layout_alignStart="@+id/insert" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge" android:id="@+id/textView" android:layout_below="@+id/insert" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_above="@+id/showstudents" android:layout_alignParentRight="true" android:layout_alignParentEnd="true" android:gravity="center_horizontal" /> </RelativeLayout>
3 edittext 2 butonumuz geldi şimdi java dosyamızda bileşenleri ve php dosyalarını attığımız yerin adresini tanımlıyoruz. Butonlara tıklandığında ise json veriyi belirttiğimiz adresten çekip kendi uygulamamızda kullanıyoruz.
Tüm java dosyası
package com.example.dindars.jsonsinema; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import com.android.volley.AuthFailureError; import com.android.volley.Request; import com.android.volley.RequestQueue; import com.android.volley.Response; import com.android.volley.VolleyError; import com.android.volley.toolbox.JsonObjectRequest; import com.android.volley.toolbox.StringRequest; import com.android.volley.toolbox.Volley; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.util.HashMap; import java.util.Map; public class MainActivity extends AppCompatActivity { EditText isim, soyisim, dogum; Button insert, show; RequestQueue requestQueue; String insertUrl = "http://benandindar.com/insert.php"; String showUrl = "http://benandindar.com/show.php"; TextView result; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); isim= (EditText) findViewById(R.id.editText); soyisim= (EditText) findViewById(R.id.editText2); dogum= (EditText) findViewById(R.id.editText3); insert = (Button) findViewById(R.id.insert); show = (Button) findViewById(R.id.show); result = (TextView) findViewById(R.id.textView); requestQueue = Volley.newRequestQueue(getApplicationContext()); //////gösterme butonu show.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, showUrl, new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { System.out.println(response.toString()); try { //php dosyamızda oluşturduğumuz array ismini buraya yazıyoruz "showarray" JSONArray getir= response.getJSONArray("showarray"); for (int i = 0; i < showarray.length(); i++) { JSONObject showdata= showarray.getJSONObject(i); ///showarrayimizde ki isim,soyisim ve dogum verilerini cekip string değişkenlere atıyoruz String isim= showdata.getString("isim"); String soyisim= showdata.getString("soyisim"); String dogum= showdata.getString("dogum"); result.append(isim+ " " + soyisim+ " " + dogum+ " \n"); } result.append("===\n"); } catch (JSONException e) { e.printStackTrace(); } } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { System.out.append(error.getMessage()); } }); requestQueue.add(jsonObjectRequest); } }); ////////ekleme butonu insert.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { StringRequest request = new StringRequest(Request.Method.POST, insertUrl, new Response.Listener<String>() { @Override public void onResponse(String response) { System.out.println(response.toString()); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { } }) { @Override protected Map<String, String> getParams() throws AuthFailureError { Map<String,String> parameters = new HashMap<String, String>(); parameters.put("isim",isim.getText().toString()); parameters.put("soyisim",soyisim.getText().toString()); parameters.put("dogum",dogum.getText().toString()); return parameters; } }; requestQueue.add(request); } }); } }
merhaba,
uygulamayı denedim sanırım kodları eklerken ” ve < gibi karakaterler sitenizde farkklı gözüküyor. ayrıca java kodlarımızda getir degiskenini oluşturmuşssunuz fakat farklı bir değişkeni kullanmışssınız ordaki hatayıda düzelttim. Lakin veritabanına ekleme yapılmasına rağmen eklenenleri listeleyemedim. bir yerde bir hata daha var fakat bulamadım. bu kodları siz mi yazdınız yoksa yabancı bir yerden alıntı mı eğer öyleyse kaynağa ulaşabilir miyim?
Kusurabakmayın eklentide bir sorun oluşmuş alttaki fonksiyonu kullanabilirsiniz.
private void fetchMovies() {
String arkadasurl=”json verinizin olduğu urlu yazınız”;
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST,() {
arkadasurl, new Response.Listener
@Override
public void onResponse(JSONObject response) {
try {
JSONArray students = response.getJSONArray(“filmlistesi”);
kisiler.clear();
for (int i = 0; i < students.length(); i++) { JSONObject student = students.getJSONObject(i); //array nesnelerini değişkenlere atıyoruz String title=student.getString("title"); String aciklama=student.getString("troverview"); String poster = student.getString("poster_path"); String vote_average = student.getString("vote_average"); String id = student.getString("id"); kisiler.add(new Kisi(title, poster, vote_average,aciklama,id)); listemiz.setAdapter(adaptorumuz); adaptorumuz.notifyDataSetChanged(); } } catch (JSONException e) { e.printStackTrace(); } } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { System.out.append(error.getMessage()); } }); requestQueue.add(jsonObjectRequest); /////////////////////////////// }
faydanılan kaynak https://www.youtube.com/watch?v=H-SE1m_A-SA&lc=z123sjyb1navfnlix04cgpkptn3dxbpgmfk
E/Volley: [126] BasicNetwork.performRequest: Unexpected response code 405 for ‘url’
hocam bende bu hatayı veriyo sebebi nedir