Cara menggunakan android studio php mysql

Cara menggunakan android studio php mysql

Ilustrasi merancang pelaksanaan Android. Foto: Danial Igdery via Unsplash

Mengetahui cara membuat login di Android Studio dengan database MySQL, maka engkautelah sanggup menciptakan aplikasi pada Android.

Tentunya, engkautelah nir asing lagi menggunakan aplikasi di Android. Tetapi, hampir semua aplikasi masih ada laman login. Bagian ini nir terjadi begitu saja, karena ada proses yang harus dilewati sang pengembang aplikasi.

How To Tekno akan membantu kamu yg ingin menciptakan login di Android studio menggunakan database MySQL. Dalam tutorial ini, kamu bisa mengetahui cara menciptakan aplikasi sederhana.Cara Membuat Login di Android Studio dengan Database MySQL

Berikut ini adalah langkah-langkah cara menciptakan login di Android Studio menggunakan Database MySQL, dikutip berdasarkan page Simplified Coding:1. Membuat Database di MySQL

Langkah awal sebelum menciptakan login di Android Studio merupakan membuat database terlebih dahulu. Lalu, nantinya berfungsi buat menyimpan berbagai data login pengguna aplikasi.

Ada beberapa server yang mampu kamu pakai dalam menciptakan database, misalnya xampp, wamp, & lainnya. Tetapi, yang paling generik dipakai adalah xampp.

Cara Membuat Login pada Android Studio menggunakan Database MySQL

Cara membuat login pada Android Studio dengan database MySQL untuk pemula cukup gampang. Nantinya, kamu mampu menciptakan aplikasi pada Android. Simak caranya pada bawah ini:

1. Buat Database Baru pada PhpMyAdmin

Buat database baru di PhpMyAdmin. Kamu harus memilih apa saja yg akan terekam ketika pengguna melakukan login di aplikasi, seperti username, e-mail, dan password.

dua. Masukkan Kueri atau Skrip yg Dibutuhkan

Setelah itu, tambahkan kueri atau skrip yang dibutuhkan buat membuat tabel database saat kamu menyimpan data pengguna.

Gambar di bawah ini merupakan model database yang dibentuk menggunakan memasukkan kueri:Cara menciptakan login di Android studio menggunakan database MySQL. Foto: Simplefied Coding2. Membuat Koneksi Database

Setelah termin pertama selesai, kamu wajibmembuat koneksi database. Tahap ini cukup krusial, lantaran setiap proses pada PHP bisa dimasukkan ke pada Android Studio.

Pada folder proyek kamu, buat file PHP baru dan namai menggunakan DbConnect.php. File yg akan digunakan buat menghubungkan ke database nantinya wajibdimasukkan kode skrip pada dalamnya.

Membangun layanan web adalah bagian utamanya, lantaran buat 2 operasi, yaitu pendaftaranpengguna dan login pengguna.

Buat file PHP baru dengan nama Api.php yang akan menangani seluruh panggilan API, yaitu registrasi dan login. Kemudian, tulis kode skrip ke pada file Api.php. Lalu, masing-masing buat User Registration & User Login. 4. Membuat Tampilan Login & Registrasi Android

Kini saatnya kita membuat bagian di Android. Bermula berdasarkan sini, seluruh ilham kreatif engkaudiperlukan buat menerima desain di tampilan. Kamu mampu membarui rona, jenis font, & lainnya yg dikombinasikan sinkron gaya & keinginanmu.

Buat proyek Android baru yang berisi 3 layer, yaitu pendaftarandan login. Masukkan kode skrip sinkron desain yg kamu inginkan pada masing-masing layer tersebut. Cara membuat login pada Android studio dengan database MySQL. Foto: Simplefied Codinglima. Tambahkan Izin Internet pada Manifes

Membuat biarinternet pada file AndroidManifest.xml. Sebab, kamu akan melakukan operasi jaringan. Masukkan kode skrip di file tersebut.

Terakhir, coba jalankan pelaksanaan yg telah engkaubuat. Coba menggunakan melakukan registrasi & login. apabila page pendaftaran& login belum sinkron keinginanmu, perbaiki kode skrip yang engkaumasukkan.

Semoga penjelasan cara menciptakan login pada Android Studio menggunakan database MySQL dapat membantumu buat menciptakan pelaksanaan di Android.

Untuk membuat aplikasi android studio agar terhubung dengan database, kita membutuhkan yang namanya REST API (Representional State Transfer). Adalah suatu arsitektur komunikasi data menggunakan protokol HTTP untuk menerima dan merespon (request dan response) data.

Gampangannya, API itu sebagai jembatan yang menghubungkan aplikasi dengan aplikasi lainnya. Nah, pada tutorial kali ini kita akan membuat API menggunakan bahasa PHP. Jadi pada kasus ini kita akan menghubungkan Android dengan PHP sebagai server sidenya,

  • GET
  • POST
  • PUT
  • DELETE

Menyiapkan Database

Sebelum masuk ke dalam tahap pembuatan API server dan Aplikasi Android di android studio. Pertama – tama mari kita siapkan database beserta table yang akan kita gunakan di tutorial kali ini.

Buatlah sebuah database baru dengan nama db_siswa.

Kemudian execute SQL di bawah untuk membuat table baru bernama tb_siswa beserta data2nya.

-- phpMyAdmin SQL Dump
-- version 4.5.2
-- http://www.phpmyadmin.net
--
-- Host: 127.0.0.1
-- Generation Time: Feb 05, 2020 at 04:46 AM
-- Server version: 5.5.64-MariaDB-1ubuntu0.14.04.1
-- PHP Version: 5.6.23
 
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
 
 
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
 
--
-- Database: `db_siswa`
--
 
-- --------------------------------------------------------
 
--
-- Table structure for table `tb_siswa`
--
 
CREATE TABLE `tb_siswa` (
  `noinduk` int(5) NOT NULL,
  `nama` varchar(50) DEFAULT NULL,
  `alamat` varchar(100) DEFAULT NULL,
  `hobi` varchar(50) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
 
--
-- Dumping data for table `tb_siswa`
--
 
INSERT INTO `tb_siswa` (`noinduk`, `nama`, `alamat`, `hobi`) VALUES
(1, 'Alfansyah', 'Jalan Merdeka', 'Bermain Bola'),
(2, 'Wawan Aja', 'Jalan Kebenaran', 'Mancing');
 
--
-- Indexes for dumped tables
--
 
--
-- Indexes for table `tb_siswa`
--
ALTER TABLE `tb_siswa`
  ADD UNIQUE KEY `noinduk` (`noinduk`);
 
--
-- AUTO_INCREMENT for dumped tables
--
 
--
-- AUTO_INCREMENT for table `tb_siswa`
--
ALTER TABLE `tb_siswa`
  MODIFY `noinduk` int(5) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

Kalau sudah, maka table tb_siswa sudah terisi dengan 2 data dan struktur seperti berikut :

Cara menggunakan android studio php mysql

Membuat API Server

Kalau tadi sudah dijelaskan apa itu Restful API. Maka, mari langsung kita buat saja API Servernya. API server merupakan direktori yang diletakkan di web server untuk menaruh endpoint / api yang akan kita buat.

Cara menggunakan android studio php mysql

Disini saya menamai direktori saya api-kompikaleng. Kemudian buat 5 file php dengan nama (sesuai gambar di atas) antara lain :

  • koneksi.php , untuk mengatur koneksi PHP kita ke database MySQL
  • getData.php, berisi API Select data dari database.
  • tambahSiswa.php, berisi API untuk menambahkan data ke database.
  • deleteSiswa.php, berisi API untuk menghapus data dari database.
  • updateSiswa.php, berisi API untuk melakukan update data di database.

Kalau sudah mari kita isi ke-lima file tersebut,

koneksi.php

<?php 

$hostname = '127.0.0.1';

$username = 'root';

$password = '123';

$database = 'db_siswa';

$conn = mysqli_connect($hostname,$username,$password,$database);

if(!$conn){

echo "gagal";

}

?>

Di koneksi.php kita mendeklarasikan hostname,username,password, dan database kita. Sesuaikan dengan konfigurasi phpmyadmin / mysql kalian ya. Tetapi, untuk variabel database tetap diisi db_siswa.

getData.php

<?php 

include('koneksi.php'); //jangan lupa untuk include koneksi.php 

$sql = "SELECT * FROM tb_siswa";

$query = mysqli_query($conn,$sql);

if(mysqli_num_rows($query) > 0){

while($row = mysqli_fetch_object($query)){

$data['status'] = true;

$data['result'][] = $row;

// $data2 = respond(true, $row);

}

}else{

$data['status'] = false;

$data['result'][] = "Data not Found";

}

print_r(json_encode($data));

?>

Di getData.php berfungsi untuk mengambil / select data yang ada di table tb_siswa kemudian encode sebagai json. Bagi kalian yang sudah pernah mencoba query sql dasar seharusnya tidak bingung ya dengan query di atas.

tambahSiswa.php 

<?php

include('koneksi.php');

$nama       = $_POST['nama']; //menangkap nama dari post

$noinduk    = $_POST['noinduk']; //menangkap noinduk dari post

$alamat     = $_POST['alamat'];//menangkap alamat dari post

$hobi       = $_POST['hobi'];//menangkap hobi dari post

if(!empty($nama) &amp;&amp; !empty($noinduk)){

$sqlCheck = "SELECT COUNT(*) FROM tb_siswa WHERE noinduk='$noinduk' AND nama='$nama'";

$queryCheck = mysqli_query($conn,$sqlCheck);

$hasilCheck = mysqli_fetch_array($queryCheck);

if($hasilCheck[0] == 0){

$sql = "INSERT INTO tb_siswa (nama,noinduk,alamat,hobi) VALUES('$nama','$noinduk','$alamat','$hobi')";

$query = mysqli_query($conn,$sql);

if(mysqli_affected_rows($conn) > 0){

$data['status'] = true;

$data['result'] = "Berhasil";

}else{

$data['status'] = false;

$data['result'] = "Gagal";

}

}else{

$data['status'] = false;

$data['result'] = "Gagal, Data Sudah Ada";

}

}

else{

$data['status'] = false;

$data['result'] = "Gagal, Nomor Induk dan Nama tidak boleh kosong!";

}

print_r(json_encode($data));

?>

Sesuai namanya, di api tambahSiswa.php berfungsi untuk menambah data siswa ke database. Data siswa yang diperoleh (noinduk,nama,alamat,dan hobi) berasal dari aplikasi android yang akan kita buat setelah ini.

deleteSiswa.php

<?php

include('koneksi.php');

$noinduk = $_POST['noinduk'];

if(!empty($noinduk)){

$sql = "DELETE FROM tb_siswa WHERE noinduk='$noinduk' ";

$query = mysqli_query($conn,$sql);

$data['status'] = true;

$data['result'] = 'Berhasil';

}else{

$data['status'] = false;

$data['result'] = 'Gagal';

}

print_r(json_encode($data));

?>

Api ini berfungsi untuk menghapus data siswa dari table tb_siswa. 

updateSiswa.php

<?php

include('koneksi.php');

$nama       = $_POST['nama'];

$noinduk    = $_POST['noinduk'];

$alamat     = $_POST['alamat'];

$hobi       = $_POST['hobi'];

if(!empty($nama) &amp;&amp; !empty($noinduk)){

$sql = "UPDATE tb_siswa set nama='$nama', alamat='$alamat', hobi='$hobi' WHERE noinduk='$noinduk' ";

$query = mysqli_query($conn,$sql);

if(mysqli_affected_rows($conn) > 0){

$data['status'] = true;

$data['result'] = "Berhasil";

}else{

$data['status'] = false;

$data['result'] = "Gagal";

}

}else{

$data['status'] = false;

$data['result'] = "Gagal, Nomor Induk dan Nama tidak boleh kosong!";

}

print_r(json_encode($data));

?>

Api ini berfungsi untuk mengupdate / memperbarui data siswa dari table tb_siswa.

Yap, sampai sini ke-lima API kita sudah berhasil dibuat dan artinya API server kita sudah siap!. Artinya juga, kita bisa lanjut masuk ke dalam tahap selanjutnya di android studio. Sekarang, buka android studio kalian.

Buat Projek di android studio

API server sudah siap!.

  1. Buatlah sebuah projek baru di Android Studio.
  2. Beri nama terserah deh.

Siapkan Dependencies / Libraries

Aplikasi android kali ini kita akan menggunakan library untuk berbagai keperluan, antara lain.

  • RecyclerView, sebagai wadah untuk data.
  • CardView, sebagai wadah view recyclerview.
  • Rengwuxian EditText , library untuk mempercantik tampilan EditText.
  • Fast Android Networking, library untuk mengatur segala HTTP request (GET dan POST) yang akan digunakan untuk mengakses API Server yang sudah kita buat tadi .

Masuk ke build.gradle, kemudian masukkan kode di bawah kemudian Sync Now untuk mendownload dependencies ke dalam projek.

implementation 'com.amitshekhar.android:android-networking:1.0.2'

implementation 'com.android.support:cardview-v7:26.+'

implementation 'com.android.support:recyclerview-v7:26.+'

implementation 'com.rengwuxian.materialedittext:library:2.1.4'

Atur AndroidManifest.xml

Di android manifest kita akan menambahkan permission internet pada aplikasi kita.

Tambahkan kode di bawah untuk memberikan permission internet ke aplikasi yang akan kita buat : 

<uses-permission android:name="android.permission.INTERNET" />

Buat Layout Activity Main

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout

xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:app="http://schemas.android.com/apk/res-auto"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context=".Activity_Main">

<android.support.v4.widget.SwipeRefreshLayout

android:id="@+id/srl_main"

android:layout_width="match_parent"

android:layout_height="match_parent">

<android.support.v4.widget.NestedScrollView

android:layout_width="match_parent"

android:layout_height="match_parent">

<android.support.v7.widget.RecyclerView

android:id="@+id/rv_main"

android:layout_width="match_parent"

android:layout_height="match_parent">

</android.support.v7.widget.RecyclerView>

</android.support.v4.widget.NestedScrollView>

</android.support.v4.widget.SwipeRefreshLayout>

</LinearLayout>

Buat Layout untuk RecyclerView

Buat file baru di layout dengan cara Klik Kanan pada Layout -> New -> Layout Resource File.

Baca Juga : Tutorial Integrasi Retrofit dengan RecyclerView

Beri nama template_rv.xml.

Kemudian isi dengan script seperti berikut : 

<?xml version="1.0" encoding="utf-8"?>

<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"

android:layout_height="wrap_content"

xmlns:app="http://schemas.android.com/apk/res-auto"

android:id="@+id/cv_main"

app:cardElevation="5dp"

android:layout_margin="5dp"

android:clickable="true"

android:longClickable="true"

android:foreground="?android:selectableItemBackground">

<LinearLayout

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:orientation="horizontal"

android:layout_margin="5dp">

<ImageView

android:layout_width="100dp"

android:layout_height="100dp"

android:src="@drawable/smile"/>

<LinearLayout

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical"

android:gravity="center_vertical">

<TextView

android:id="@+id/tv_noind"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="Nomor induk"/>

<TextView

android:id="@+id/tv_nama"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="Nama"/>

<TextView

android:id="@+id/tv_alamat"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="Alamat"/>

<TextView

android:id="@+id/tv_hobi"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="Hobi"/>

</LinearLayout>

</LinearLayout>

</android.support.v7.widget.CardView>

Hasil :

Cara menggunakan android studio php mysql


Silahkan berkreasi sesuai selera kalian tetapi perlu diingat untuk menyesuaikan penamaan ID dari TextView dan ImageView yang ada.

Buat RecyclerViewAdapter

Untuk menampilkan data di RecyclerView, kita memerlukan sebuah adapter. Adapter ini berfungsi untuk menghubungkan data yang masuk , ke dalam templaterv.xml yang sudah kita buat tadi.

Data yang ada di adapter ini berasal dari ActivityMain yang didapat dari API yang sudah kita buat.

Cara menggunakan android studio php mysql

import android.app.ProgressDialog;

import android.content.Context;

import android.content.DialogInterface;

import android.content.Intent;

import android.support.v7.app.AlertDialog;

import android.support.v7.widget.CardView;

import android.support.v7.widget.RecyclerView;

import android.util.Log;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.TextView;

import android.widget.Toast;

import com.androidnetworking.AndroidNetworking;

import com.androidnetworking.common.Priority;

import com.androidnetworking.error.ANError;

import com.androidnetworking.interfaces.JSONObjectRequestListener;

import org.json.JSONObject;

import java.util.ArrayList;

import java.util.List;

import java.util.logging.Handler;

public class RecycleViewAdapter extends RecyclerView.Adapter<RecycleViewAdapter.MyViewHolder> {

private Context mContext;

private ArrayList<String> array_noinduk,array_nama,array_alamat,array_hobi;

ProgressDialog progressDialog;

public class MyViewHolder extends RecyclerView.ViewHolder {

public TextView tv_noind,tv_nama,tv_alamat,tv_hobi;

public CardView cv_main;

public MyViewHolder(View view) {

super(view);

cv_main = itemView.findViewById(R.id.cv_main);

tv_noind = itemView.findViewById(R.id.tv_noind);

tv_nama = itemView.findViewById(R.id.tv_nama);

tv_alamat = itemView.findViewById(R.id.tv_alamat);

tv_hobi = itemView.findViewById(R.id.tv_hobi);

progressDialog = new ProgressDialog(mContext);

}

}

public RecycleViewAdapter(Context mContext, ArrayList<String> array_noinduk,ArrayList<String> array_nama,ArrayList<String> array_alamat,ArrayList<String> array_hobi) {

super();

this.mContext = mContext;

this.array_noinduk = array_noinduk;

this.array_nama = array_nama;

this.array_alamat = array_alamat;

this.array_hobi = array_hobi;

}

@Override

public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext());

View itemView = layoutInflater.inflate(R.layout.template_rv,parent,false);

return new RecycleViewAdapter.MyViewHolder(itemView);

}

@Override

public void onBindViewHolder(MyViewHolder holder, final int position) {

holder.tv_noind.setText(array_noinduk.get(position));

holder.tv_nama.setText(array_nama.get(position));

holder.tv_alamat.setText(array_alamat.get(position));

holder.tv_hobi.setText(array_hobi.get(position));

holder.cv_main.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

Intent i = new Intent(mContext,Activity_Edit.class);

i.putExtra("noinduk",array_noinduk.get(position));

i.putExtra("nama",array_nama.get(position));

i.putExtra("alamat",array_alamat.get(position));

i.putExtra("hobi",array_hobi.get(position));

((Activity_Main)mContext).startActivityForResult(i,2);

}

});

holder.cv_main.setOnLongClickListener(new View.OnLongClickListener() {

@Override

public boolean onLongClick(View v) {

new AlertDialog.Builder((Activity_Main)mContext)

.setMessage("Ingin menghapus nomor induk "+array_noinduk.get(position)+" ?")

.setCancelable(false)

.setPositiveButton("Ya", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

progressDialog.setMessage("Menghapus...");

progressDialog.setCancelable(false);

progressDialog.show();

AndroidNetworking.post("http://192.168.168.11/api-funtechsy/deleteSiswa.php")

.addBodyParameter("noinduk",""+array_noinduk.get(position))

.setPriority(Priority.MEDIUM)

.build()

.getAsJSONObject(new JSONObjectRequestListener() {

@Override

public void onResponse(JSONObject response) {

progressDialog.dismiss();

try {

Boolean status = response.getBoolean("status");

Log.d("statuss",""+status);

String result = response.getString("result");

if(status){

if(mContext instanceof Activity_Main){

((Activity_Main)mContext).scrollRefresh();

}

}else{

Toast.makeText(mContext, ""+result, Toast.LENGTH_SHORT).show();

}

}catch (Exception e){

e.printStackTrace();

}

}

@Override

public void onError(ANError anError) {

anError.printStackTrace();

}

});

}

})

.setNegativeButton("Tidak", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

dialog.cancel();

}

})

.show();

return false;

}

});

}

@Override

public int getItemCount() {

return array_noinduk.size();

}

}

Sebelumnya, Sesuaikan http://192.168.168.11/api-funtechsy/ dengan direktori API Server kalian. Kode di atas kita mengakses API deleteSiswa.php melalui fungsi onLongClickListener dari CardView. Itu artinya jika kita menekan lama cardview maka akan muncul notif untuk menghapus data / tidak.

Activity_Main.java

Di activity main ini kita akan mengatur hampir sebagian besar komponen yang ada di aplikasi ini.

Di Activity_Main.java kita akan mengakses API getData.php menggunakan Fast Android Networking kemudian mempassing datanya ke adapter untuk ditampilkan. 

import android.app.ProgressDialog;

import android.content.Intent;

import android.os.AsyncTask;

import android.os.Handler;

import android.support.annotation.Nullable;

import android.support.v4.widget.SwipeRefreshLayout;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.support.v7.widget.LinearLayoutManager;

import android.support.v7.widget.RecyclerView;

import android.util.Log;

import android.view.Menu;

import android.view.MenuItem;

import android.widget.Toast;

import com.androidnetworking.AndroidNetworking;

import com.androidnetworking.common.Priority;

import com.androidnetworking.error.ANError;

import com.androidnetworking.interfaces.JSONObjectRequestListener;

import org.json.JSONArray;

import org.json.JSONObject;

import java.util.ArrayList;

public class Activity_Main extends AppCompatActivity {

SwipeRefreshLayout srl_main;

RecyclerView rv_main;

ArrayList<String> array_nama,array_noinduk,array_alamat,array_hobi;

ProgressDialog progressDialog;

RecycleViewAdapter recycleViewAdapter;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity__main);

srl_main    = findViewById(R.id.srl_main);

rv_main     = findViewById(R.id.rv_main);

progressDialog = new ProgressDialog(this);

rv_main.hasFixedSize();

LinearLayoutManager layoutManager = new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false);

rv_main.setLayoutManager(layoutManager);

srl_main.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {

@Override

public void onRefresh() {

scrollRefresh();

srl_main.setRefreshing(false);

}

});

scrollRefresh();

}

public void scrollRefresh(){

progressDialog.setMessage("Mengambil Data.....");

progressDialog.setCancelable(false);

progressDialog.show();

new Handler().postDelayed(new Runnable() {

@Override

public void run() {

getData();

}

},1200);

}

void initializeArray(){

array_noinduk = new ArrayList<>();

array_nama = new ArrayList<>();

array_alamat = new ArrayList<>();

array_hobi = new ArrayList<>();

array_noinduk.clear();

array_nama.clear();

array_alamat.clear();

array_hobi.clear();

}

public void getData(){

initializeArray();

AndroidNetworking.get("http://192.168.168.11/api-funtechsy/getData.php")

.setTag("Get Data")

.setPriority(Priority.MEDIUM)

.build()

.getAsJSONObject(new JSONObjectRequestListener() {

@Override

public void onResponse(JSONObject response) {

progressDialog.dismiss();

try{

Boolean status = response.getBoolean("status");

if(status){

JSONArray ja = response.getJSONArray("result");

Log.d("respon",""+ja);

for(int i = 0 ; i < ja.length() ; i++){

JSONObject jo = ja.getJSONObject(i);

array_noinduk.add(jo.getString("noinduk"));

array_nama.add(jo.getString("nama"));

array_alamat.add(jo.getString("alamat"));

array_hobi.add(jo.getString("hobi"));

}

recycleViewAdapter = new RecycleViewAdapter(Activity_Main.this,array_noinduk,array_nama,array_alamat,array_hobi);

rv_main.setAdapter(recycleViewAdapter);

}else{

Toast.makeText(Activity_Main.this, "Gagal Mengambil Data", Toast.LENGTH_SHORT).show();

recycleViewAdapter = new RecycleViewAdapter(Activity_Main.this,array_noinduk,array_nama,array_alamat,array_hobi);

rv_main.setAdapter(recycleViewAdapter);

}

}

catch (Exception e){

e.printStackTrace();

}

}

@Override

public void onError(ANError anError) {

}

});

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

getMenuInflater().inflate(R.menu.menutambah,menu);

return super.onCreateOptionsMenu(menu);

}

@Override

public boolean onOptionsItemSelected(MenuItem item) {

int id = item.getItemId();

if(id==R.id.menu_add){

Intent i = new Intent(Activity_Main.this,Activity_Add.class);

startActivityForResult(i,1);

}

return super.onOptionsItemSelected(item);

}

@Override

protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {

super.onActivityResult(requestCode, resultCode, data);

if(requestCode==1){

if(resultCode==RESULT_OK){

scrollRefresh();

}else if(resultCode==RESULT_CANCELED){

Toast.makeText(this, "Canceled", Toast.LENGTH_SHORT).show();

}

}

if(requestCode==2){

if(resultCode==RESULT_OK){

scrollRefresh();

}else if(resultCode==RESULT_CANCELED){

Toast.makeText(this, "Canceled", Toast.LENGTH_SHORT).show();

}

}

}

}

Sebelumnya, jangan lupa sesuaikan http://192.168.168.11/api-funtechsy dengan API Server kalian.

Bisa diliat di Activity_Main.java kita mengambil data melalui fungsi getData() yang mengakses API getData.php menggunakan library FAN dan kemudian data arraynya dioper ke adapter untuk ditampilkan.

Buat Activity_Add.java

Buatlah activity baru dengan cara Klik kanan pada nama package -> New ->Activity -> Empty Activity.

Beri nama Activity_Add. 

Cara menggunakan android studio php mysql

Setelah membuat Activity_Add.java, maka akan otomatis terbuat layout baru bernama activity_add.xml.

Layout

Kali ini kita akan buat layoutnya, buka activity_add.xml kemudian isi dengan script seperti berikut :

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout

xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:app="http://schemas.android.com/apk/res-auto"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context=".Activity_Add"

android:orientation="vertical">

<LinearLayout

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_margin="20dp"

android:orientation="vertical">

<TextView

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="Tambah Data Siswa"

android:textAlignment="center"

android:textAppearance="?android:textAppearanceLarge"

android:textColor="#000" />

<LinearLayout

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_marginTop="40dp"

android:orientation="horizontal"

android:weightSum="6">

<ImageView

android:layout_weight="1"

android:layout_width="0dp"

android:padding="10dp"

android:layout_height="match_parent"

android:src="@drawable/ic_local_activity_black_24dp"/>

<com.rengwuxian.materialedittext.MaterialEditText

android:id="@+id/et_noinduk"

android:layout_weight="5"

android:layout_width="0dp"

android:layout_height="wrap_content"

android:hint="Nomor Induk"

app:met_floatingLabel="normal"/>

</LinearLayout>

<LinearLayout

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_marginTop="20dp"

android:orientation="horizontal"

android:weightSum="6">

<ImageView

android:layout_weight="1"

android:layout_width="0dp"

android:padding="10dp"

android:layout_height="match_parent"

android:src="@drawable/ic_local_activity_black_24dp"/>

<com.rengwuxian.materialedittext.MaterialEditText

android:id="@+id/et_nama"

android:layout_weight="5"

android:layout_width="0dp"

android:layout_height="wrap_content"

android:hint="Nama"

app:met_floatingLabel="normal"/>

</LinearLayout>

<LinearLayout

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_marginTop="20dp"

android:orientation="horizontal"

android:weightSum="6">

<ImageView

android:layout_weight="1"

android:layout_width="0dp"

android:padding="10dp"

android:layout_height="match_parent"

android:src="@drawable/ic_local_activity_black_24dp"/>

<com.rengwuxian.materialedittext.MaterialEditText

android:id="@+id/et_alamat"

android:layout_weight="5"

android:layout_width="0dp"

android:layout_height="wrap_content"

android:hint="Alamat"

app:met_floatingLabel="normal"/>

</LinearLayout>

<LinearLayout

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_marginTop="20dp"

android:orientation="horizontal"

android:weightSum="6">

<ImageView

android:layout_weight="1"

android:layout_width="0dp"

android:padding="10dp"

android:layout_height="match_parent"

android:src="@drawable/ic_local_activity_black_24dp"/>

<com.rengwuxian.materialedittext.MaterialEditText

android:id="@+id/et_hobi"

android:layout_weight="5"

android:layout_width="0dp"

android:layout_height="wrap_content"

android:hint="Hobi"

app:met_floatingLabel="normal"/>

</LinearLayout>

<Button

android:id="@+id/btn_submit"

android:layout_marginTop="20dp"

android:layout_width="120dp"

android:layout_height="50dp"

android:layout_gravity="center"

android:drawableStart="@drawable/ic_present_to_all_black_24dp"

android:text="Submit"

android:textAllCaps="false"/>

</LinearLayout>

</LinearLayout>

Hasil :

Cara menggunakan android studio php mysql

 

Activity_Add akan berfungsi sebagai tampilan dan pemroses tambah data siswa.

Activity_Add.java

Setelah berhasil membuat layoutnya, mari kita lanjut ke javanya.

Buka Activity_Add.java (Sesuai dengan nama activity add kalian),

isikan script berikut :

package com.example.pkl.alfansimplecrud; //sesuai nama package kalian

import android.app.ProgressDialog;

import android.content.DialogInterface;

import android.content.Intent;

import android.os.Handler;

import android.support.v7.app.AlertDialog;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.util.Log;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;

import android.widget.Button;

import android.widget.Toast;

import com.androidnetworking.AndroidNetworking;

import com.androidnetworking.common.Priority;

import com.androidnetworking.error.ANError;

import com.androidnetworking.interfaces.JSONObjectRequestListener;

import org.json.JSONObject;

public class Activity_Add extends AppCompatActivity {

com.rengwuxian.materialedittext.MaterialEditText et_noinduk,et_nama,et_alamat,et_hobi;

String noinduk,nama,alamat,hobi;

Button btn_submit;

ProgressDialog progressDialog;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity__add);

et_noinduk          = findViewById(R.id.et_noinduk);

et_nama             = findViewById(R.id.et_nama);

et_alamat           = findViewById(R.id.et_alamat);

et_hobi             = findViewById(R.id.et_hobi);

btn_submit          = findViewById(R.id.btn_submit);

progressDialog      = new ProgressDialog(this);

btn_submit.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

progressDialog.setMessage("Menambahkan Data...");

progressDialog.setCancelable(false);

progressDialog.show();

noinduk = et_noinduk.getText().toString();

nama = et_nama.getText().toString();

alamat = et_alamat.getText().toString();

hobi = et_hobi.getText().toString();

new Handler().postDelayed(new Runnable() {

@Override

public void run() {

validasiData();

}

},1000);

}

});

}

void validasiData(){

if(noinduk.equals("") || nama.equals("") || alamat.equals("") || hobi.equals("")){

progressDialog.dismiss();

Toast.makeText(Activity_Add.this, "Periksa kembali data yang anda masukkan !", Toast.LENGTH_SHORT).show();

}else {

kirimData();

}

}

void kirimData(){

AndroidNetworking.post("http://192.168.168.11/api-funtechsy/tambahSiswa.php") //sesuaikan dengan api server kalian

.addBodyParameter("noinduk",""+noinduk)

.addBodyParameter("nama",""+nama)

.addBodyParameter("alamat",""+alamat)

.addBodyParameter("hobi",""+hobi)

.setPriority(Priority.MEDIUM)

.setTag("Tambah Data")

.build()

.getAsJSONObject(new JSONObjectRequestListener() {

@Override

public void onResponse(JSONObject response) {

progressDialog.dismiss();

Log.d("cekTambah",""+response);

try {

Boolean status = response.getBoolean("status");

String pesan = response.getString("result");

Toast.makeText(Activity_Add.this, ""+pesan, Toast.LENGTH_SHORT).show();

Log.d("status",""+status);

if(status){

new AlertDialog.Builder(Activity_Add.this)

.setMessage("Berhasil Menambahkan Data !")

.setCancelable(false)

.setPositiveButton("Kembali", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

Intent i = getIntent();

setResult(RESULT_OK,i);

Activity_Add.this.finish();

}

})

.show();

}

else{

new AlertDialog.Builder(Activity_Add.this)

.setMessage("Gagal Menambahkan Data !")

.setPositiveButton("Kembali", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

Intent i = getIntent();

setResult(RESULT_CANCELED,i);

Activity_Add.this.finish();

}

})

.setCancelable(false)

.show();

}

}catch (Exception e){

e.printStackTrace();

}

}

@Override

public void onError(ANError anError) {

Log.d("ErrorTambahData",""+anError.getErrorBody());

}

});

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

getMenuInflater().inflate(R.menu.menu_back,menu);

return super.onCreateOptionsMenu(menu);

}

@Override

public boolean onOptionsItemSelected(MenuItem item) {

int id = item.getItemId();

if(id==R.id.menu_back){

this.finish();

}

return super.onOptionsItemSelected(item);

}

}

Pada script di atas kita mengambil nilai nama,noinduk,alamat, dan hobi dari edit text setelah kita melakukan klik pada button submit. Kemudian memanggil fungsi validasi data sebelum dikirim kan ke API lewat fungsi kirimData()

Oh iya, jangan lupa untuk mengubah link API server sesuai dengan API server kalian ya.

Buat Activity_Edit.java

Setelah kita membuat Activity_Add untuk mengatur proses tambah data, saatnya kita membuat activity edit untuk mengatur proses ubah data (Dalam kasus ini data siswa).

New -> Activity -> Empty Activity. 

Cara menggunakan android studio php mysql

.

Layout

Kalau sudah, pertama kita akan buat layoutnya terlebih dahulu.

Buka activity_edit.xml. Salin dan tempelkan.

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout

xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:app="http://schemas.android.com/apk/res-auto"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context=".Activity_Add"

android:orientation="vertical">

<LinearLayout

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_margin="20dp"

android:orientation="vertical">

<TextView

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="Edit Data Siswa"

android:textAlignment="center"

android:textAppearance="?android:textAppearanceLarge"

android:textColor="#000" />

<LinearLayout

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_marginTop="40dp"

android:orientation="horizontal"

android:weightSum="6">

<ImageView

android:layout_weight="1"

android:layout_width="0dp"

android:padding="10dp"

android:layout_height="match_parent"

android:src="@drawable/ic_local_activity_black_24dp"/>

<com.rengwuxian.materialedittext.MaterialEditText

android:id="@+id/et_noinduk"

android:enabled="false"

android:layout_weight="5"

android:layout_width="0dp"

android:layout_height="wrap_content"

android:hint="Nomor Induk"

app:met_floatingLabel="normal"/>

</LinearLayout>

<LinearLayout

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_marginTop="20dp"

android:orientation="horizontal"

android:weightSum="6">

<ImageView

android:layout_weight="1"

android:layout_width="0dp"

android:padding="10dp"

android:layout_height="match_parent"

android:src="@drawable/ic_local_activity_black_24dp"/>

<com.rengwuxian.materialedittext.MaterialEditText

android:id="@+id/et_nama"

android:layout_weight="5"

android:layout_width="0dp"

android:layout_height="wrap_content"

android:hint="Nama"

app:met_floatingLabel="normal"/>

</LinearLayout>

<LinearLayout

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_marginTop="20dp"

android:orientation="horizontal"

android:weightSum="6">

<ImageView

android:layout_weight="1"

android:layout_width="0dp"

android:padding="10dp"

android:layout_height="match_parent"

android:src="@drawable/ic_local_activity_black_24dp"/>

<com.rengwuxian.materialedittext.MaterialEditText

android:id="@+id/et_alamat"

android:layout_weight="5"

android:layout_width="0dp"

android:layout_height="wrap_content"

android:hint="Alamat"

app:met_floatingLabel="normal"/>

</LinearLayout>

<LinearLayout

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_marginTop="20dp"

android:orientation="horizontal"

android:weightSum="6">

<ImageView

android:layout_weight="1"

android:layout_width="0dp"

android:padding="10dp"

android:layout_height="match_parent"

android:src="@drawable/ic_local_activity_black_24dp"/>

<com.rengwuxian.materialedittext.MaterialEditText

android:id="@+id/et_hobi"

android:layout_weight="5"

android:layout_width="0dp"

android:layout_height="wrap_content"

android:hint="Hobi"

app:met_floatingLabel="normal"/>

</LinearLayout>

<Button

android:id="@+id/btn_submit"

android:layout_marginTop="20dp"

android:layout_width="120dp"

android:layout_height="50dp"

android:layout_gravity="center"

android:drawableStart="@drawable/ic_present_to_all_black_24dp"

android:text="Update"

android:textAllCaps="false"/>

</LinearLayout>

</LinearLayout>

Hasil :

Cara menggunakan android studio php mysql

 

Activity_Edit.java

Lanjut ke javanya, salin dan tempelkan kode berikut.

package com.example.pkl.alfansimplecrud;

import android.app.ProgressDialog;

import android.content.DialogInterface;

import android.content.Intent;

import android.os.Handler;

import android.support.v7.app.AlertDialog;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.util.Log;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;

import android.widget.Button;

import android.widget.Toast;

import com.androidnetworking.AndroidNetworking;

import com.androidnetworking.common.Priority;

import com.androidnetworking.error.ANError;

import com.androidnetworking.interfaces.JSONObjectRequestListener;

import org.json.JSONObject;

public class Activity_Edit extends AppCompatActivity {

com.rengwuxian.materialedittext.MaterialEditText et_noinduk,et_nama,et_alamat,et_hobi;

String noinduk,nama,alamat,hobi;

Button btn_submit;

ProgressDialog progressDialog;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity__edit);

et_noinduk          = findViewById(R.id.et_noinduk);

et_nama             = findViewById(R.id.et_nama);

et_alamat           = findViewById(R.id.et_alamat);

et_hobi             = findViewById(R.id.et_hobi);

btn_submit          = findViewById(R.id.btn_submit);

progressDialog      = new ProgressDialog(this);

getDataIntent();

btn_submit.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

progressDialog.setMessage("Menambahkan Data...");

progressDialog.setCancelable(false);

progressDialog.show();

noinduk = et_noinduk.getText().toString();

nama = et_nama.getText().toString();

alamat = et_alamat.getText().toString();

hobi = et_hobi.getText().toString();

new Handler().postDelayed(new Runnable() {

@Override

public void run() {

validasiData();

}

},1000);

}

});

}

void getDataIntent(){

Bundle bundle = getIntent().getExtras();

if(bundle!=null){

et_noinduk.setText(bundle.getString("noinduk"));

et_nama.setText(bundle.getString("nama"));

et_alamat.setText(bundle.getString("alamat"));

et_hobi.setText(bundle.getString("hobi"));

}else{

et_noinduk.setText("");

et_nama.setText("");

et_alamat.setText("");

et_hobi.setText("");

}

}

void validasiData(){

if(noinduk.equals("") || nama.equals("") || alamat.equals("") || hobi.equals("")){

progressDialog.dismiss();

Toast.makeText(Activity_Edit.this, "Periksa kembali data yang anda masukkan !", Toast.LENGTH_SHORT).show();

}else {

updateData();

}

}

void updateData(){

AndroidNetworking.post("http://example.com/updateSiswa.php")

.addBodyParameter("noinduk",""+noinduk)

.addBodyParameter("nama",""+nama)

.addBodyParameter("alamat",""+alamat)

.addBodyParameter("hobi",""+hobi)

.setTag("Update Data")

.setPriority(Priority.MEDIUM)

.build()

.getAsJSONObject(new JSONObjectRequestListener() {

@Override

public void onResponse(JSONObject response) {

progressDialog.dismiss();

Log.d("responEdit",""+response);

try{

Boolean status = response.getBoolean("status");

if(status){

new AlertDialog.Builder(Activity_Edit.this)

.setMessage("Berhasil Mengupdate Data")

.setCancelable(false)

.setPositiveButton("Kembali", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

Intent i = getIntent();

setResult(RESULT_OK,i);

Activity_Edit.this.finish();

}

})

.show();

}else{

new AlertDialog.Builder(Activity_Edit.this)

.setMessage("Gagal Mengupdate Data")

.setCancelable(false)

.setPositiveButton("Kembali", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

Intent i = getIntent();

setResult(RESULT_CANCELED,i);

Activity_Edit.this.finish();

}

})

.show();

}

}catch (Exception e){

e.printStackTrace();

}

}

@Override

public void onError(ANError anError) {

}

});

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

getMenuInflater().inflate(R.menu.menu_back,menu);

return super.onCreateOptionsMenu(menu);

}

@Override

public boolean onOptionsItemSelected(MenuItem item) {

int id = item.getItemId();

if(id==R.id.menu_back){

this.finish();

}

return super.onOptionsItemSelected(item);

}

}

Hampir sama seperti tambah data, kita menangkap nilai dari nama,noinduk,alamat,dan hobi setelah kita melakukan klik pada button submit yang kemudian dilanjutkan dengan fungsi validasi data sebelum dipost ke API.

Sampai sini, aplikasi kita sudah selesai. Silahkan build dan Run Aplikasi.

Hasil Aplikasi :

Bagi kalian kaum rebahan yang suka jalan instan, saya sudah siapkan source code lengkapnya kok, tenang.

Source Code : https://github.com/alfansyahgg/BasicCRUDAndroidAlfan

Bagaimana? Apa aplikasi kalian berjalan semestinya?. Kalau kalian merasa artikel ini bermanfaat, jangan lupa tinggalkan komentar ya :).

Sekian dulu deh artikel membuat aplikasi crud android dengan mysql database kali ini. Semoga kalian semua berhasil ya.

Terimakasih.

Apakah PHP bisa membuat aplikasi?

Mengenal Bahasa Pemrograman PHP Karena berjalan pada sisi server, PHP kemudian bisa menangani berbagai tugas seperti: mengumpulkan data, mengupdate data, memodifikasi database, mengelola file di server, dll. Kemampuan inilah yang membuat PHP bisa membuat aplikasi web jadi dinamis.

Android Studio menggunakan bahasa pemrograman apa?

Pada dasarnya, dalam pengembangan aplikasi berbasis Android menggunakan bahasa pemrograman Java. Lalu muncullah Kotlin yang dikembangkan oleh JetBrains. JetBrains merupakan perusahaan pengembangan software yang juga pengembang IDE (Integrated Development Environment) IntelliJ.

Bagaimana cara menghubungkan android dengan database MySQL?

Cara Menghubungkan Aplikasi Android ke Database MySQL.
Pastikan Windows-nya sudah terinstal Java..
Silakan download RDC Server-nya di sini. Kemudian ekstrak ke mana saja boleh..
Buka config.properties. Lalu sesuaikan config database-nya, seperti JdbcUrl, User, Password. Untuk lainnya (sementara) abaikan saja..

Bagaimana cara membuat aplikasi android?

Cara Membuat Aplikasi Android di Android Studio.
Download JDK (Java Development Kit). ... .
Install JDK dengan cara klik 2 kali intstallernya dan klik next..
Download Andoid Studio..
Install Android Studio. ... .
Install Android SDK (Software Development Kit) ... .
Selesai..