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.

phpjson2

 

phpjson

 

Ş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);
            }

        });


    }

}

About the author

Benan DİNDAR

4 Comments

  • 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); /////////////////////////////// }

  • E/Volley: [126] BasicNetwork.performRequest: Unexpected response code 405 for ‘url’

    hocam bende bu hatayı veriyo sebebi nedir

Leave a Comment

Powered by themekiller.com anime4online.com animextoon.com