Android - PHP / MySQL-Tutorial

In diesem Kapitel werden wir erklären, wie Sie PHP und MySQL mit Ihrem Android-Anwendung zu integrieren. Dies ist sehr nützlich, wenn Sie einen Webserver, und Sie, um die Daten auf Ihrem Android-Anwendung zugreifen möchten.
MySQL als Datenbank auf dem Webserver verwendet und PHP wird verwendet, um Daten aus der Datenbank zu holen. Unsere Anwendung wird mit der PHP-Seite mit den notwendigen Parametern zu kommunizieren und PHP wird sich mit MySQL-Datenbank und das Ergebnis holen, und die Ergebnisse zu uns.

PHP - MYSQL

Erstellen von Datenbank

MySQL-Datenbank kann leicht mit diesem einfachen Skript erstellt werden. DieCREATE DATABASE-Anweisung erstellt die Datenbank.
<?php
$con=mysqli_connect("example.com","username","password");
$sql="CREATE DATABASE my_db";
if (mysqli_query($con,$sql))
{
   echo "Database my_db created successfully";
}
?>

Erstellen von Tabellen

Sobald Datenbank erstellt wird, zu seiner Zeit ein paar Tabellen in der Datenbank zu erstellen. Die CREATE TABLE-Anweisung erstellt die Datenbank.
<?php
$con=mysqli_connect("example.com","username","password","my_db");
$sql="CREATE TABLE table1(Username CHAR(30),Password CHAR(30),Role CHAR(30))";
if (mysqli_query($con,$sql))
{
   echo "Table have been created successfully";
}
?>

Einsetzen Werte in Tabellen

Wenn die Datenbank und die Tabellen erstellt werden. Nun ist es Zeit, einige Daten in die Tabellen einfügen. Die in den Einsatz-Anweisung erstellt die Datenbank.
<?php
$con=mysqli_connect("example.com","username","password","my_db");
$sql="INSERT INTO table1 (FirstName, LastName, Age) VALUES ('admin', 'admin','adminstrator')";
if (mysqli_query($con,$sql))
{
   echo "Values have been inserted successfully";
}
?>

PHP - GET und POST Methoden

PHP wird auch verwendet, um den Datensatz aus der MySQL-Datenbank zu holen, sobald sie erstellt wird. Um Rekord holen müssen einige Informationen zum PHP-Seite in Bezug auf welche Rekord geholt werden weitergegeben.
Die erste Methode, um Informationen weiterzugeben, ist durch GET-Methode, bei der _GET-Befehl verwendet wird. Die Variablen werden in der URL übergeben und der Datensatz abgerufen wird. Die Syntax ist unten angegeben -
<?php
$con=mysqli_connect("example.com","username","password","database name");

if (mysqli_connect_errno($con))
{
   echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$username = $_GET['username'];
$password = $_GET['password'];
$result = mysqli_query($con,"SELECT Role FROM table1 where Username='$username' and Password='$password'");
$row = mysqli_fetch_array($result);
$data = $row[0];

if($data){
echo $data;
}
mysqli_close($con);
?>
Die zweite Methode ist die POST-Methode verwenden. Die einzige Änderung in der obigen Skript ist auf $ _GET ersetzen _POST. In Post-Methode werden die Variablen nicht über URL übergeben.

Android - Connecting MYSQL

Verbindung über Get-Methode

Es gibt zwei Möglichkeiten, um den MySQL über PHP-Seite zu verbinden. Die erste heißt Get-Methode. Wir verwenden HttpGet und Httpclient-Klasse, um zu verbinden. Ihre Syntax ist nachstehend angegeben -
URL url = new URL(link);
HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet();
request.setURI(new URI(link));
Danach müssen Sie rufen ausführen Methode der Httpclient-Klasse und die Lieferung erfolgt in einem Httpresponse-Objekt. Danach müssen Sie Ströme zu öffnen, um die Daten zu empfangen.
HttpResponse response = client.execute(request);
BufferedReader in = new BufferedReader
(new InputStreamReader(response.getEntity().getContent()));

Anschluss über POST-Methode

In der Post-Methode, die URLEncoder, URLConnection wird Klasse verwendet werden. Die URLEncoder werden die Informationen der Übergabe von Variablen zu kodieren. Es Syntax ist unten angegeben -
URL url = new URL(link);
String data  = URLEncoder.encode("username", "UTF-8") 
+ "=" + URLEncoder.encode(username, "UTF-8");
data += "&" + URLEncoder.encode("password", "UTF-8") 
+ "=" + URLEncoder.encode(password, "UTF-8");
URLConnection conn = url.openConnection(); 
Das letzte, was Sie tun müssen, ist, diese Daten, um den Link zu schreiben.Nach dem Schreiben, müssen Sie Stream öffnen, um die reagierten Daten zu empfangen.
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream()); 
wr.write( data ); 
BufferedReader reader = new BufferedReader(new 
InputStreamReader(conn.getInputStream()));   

Beispiel

Das folgende Beispiel ist ein komplettes Beispiel für den Anschluss Ihres Android-Anwendung mit MySQL-Datenbank via PHP-Seite. Es schafft eine grundlegende Anwendung, die Sie hier mit GET und POST-Methode ermöglicht.

PHP - MYSQL Teil

In diesem Beispiel eine Datenbank mit dem Name der temporären wurde auf 000webhost.com erstellt. In dieser Datenbank hat eine Tabelle mit dem Namen des table1 erstellt. Diese Tabelle hat drei Felder. (Benutzername, Kennwort, Rolle). Die Tabelle hat nur einen Datensatz, nämlich ("admin", "admin", "Administrator").
Die PHP-Seite gegeben wurde unten, welche Parameter mit der Post-Methode erfolgt.
<?php
$con=mysqli_connect("mysql10.000webhost.com","username","password","db_name");

if (mysqli_connect_errno($con))
{
   echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$username = $_POST['username'];
$password = $_POST['password'];
$result = mysqli_query($con,"SELECT Role FROM table1 where 
Username='$username' and Password='$password'");
$row = mysqli_fetch_array($result);
$data = $row[0];

if($data){
echo $data;
}
mysqli_close($con);
?>

Android Part

Um bei diesem Beispiel zu experimentieren, müssen Sie diese auf einem Gerät, auf dem Wi-Fi Internetverbindung ausgeführt wird.
SchritteBezeichnung
1Sie werden Android-Studio IDE verwenden, um ein Android-Anwendung als PHPMYSQL unter einem Paket com.example.phpmysql erstellen und sie zu nennen. Bei der Erstellung dieses Projekt, stellen Sie sicher SDK Ziel und Kompilieren Sie mit der neuesten Version des Android SDK zu höheren Ebenen der APIs verwenden.
2Ändern src / MainActivity.java Datei an Aktivität Code hinzufügen.
3Erstellen src / SiginActivity.java Datei an PHPMYSQL Code hinzufügen.
4Ändern Sie das Layout XML-Datei res / layout / activity_main.xml jede GUI-Komponente hinzufügen, wenn erforderlich.
5Ändern res file / Werte / string.xml und fügen erforderlichen String-Komponenten.
6Ändern AndroidManifest.xml um erforderlichen Berechtigungen hinzuzufügen.
7Führen Sie die Anwendung, und wählen Sie einen laufenden Android-Gerät und installieren Sie die Anwendung und überprüfen Sie die Ergebnisse.
Hier ist der Inhalt des src / com.example.phpmysql / MainActivity.java.
package com.example.phpmysql;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends Activity {

   private EditText usernameField,passwordField;
   private TextView status,role,method;

   @Override 
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      
      usernameField = (EditText)findViewById(R.id.editText1);
      passwordField = (EditText)findViewById(R.id.editText2);
      
      status = (TextView)findViewById(R.id.textView6);
      role = (TextView)findViewById(R.id.textView7);
      method = (TextView)findViewById(R.id.textView9);
   }
   
   @Override
   public boolean onCreateOptionsMenu(Menu menu) {
      // Inflate the menu; this adds items to the action bar if it is present.
      getMenuInflater().inflate(R.menu.main, menu);
      return true;
   }
   
   public void login(View view){
      String username = usernameField.getText().toString();
      String password = passwordField.getText().toString();
      method.setText("Get Method");
      new SigninActivity(this,status,role,0).execute(username,password);

   }
   
   public void loginPost(View view){
      String username = usernameField.getText().toString();
      String password = passwordField.getText().toString();
      method.setText("Post Method");
      new SigninActivity(this,status,role,1).execute(username,password);
   }
}
Hier ist der Inhalt des src / com.example.phpmysql / SigninActivity.java.
package com.example.phpmysql;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.URI;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;

import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;

import android.content.Context;
import android.os.AsyncTask;
import android.widget.TextView;

public class SigninActivity  extends AsyncTask<String,Void,String>{
   private TextView statusField,roleField;
   private Context context;
   private int byGetOrPost = 0; 
   
   //flag 0 means get and 1 means post.(By default it is get.)
   public SigninActivity(Context context,TextView statusField,TextView roleField,int flag) {
      this.context = context;
      this.statusField = statusField;
      this.roleField = roleField;
      byGetOrPost = flag;
   }
   
   protected void onPreExecute(){

   }
   
   @Override
   protected String doInBackground(String... arg0) {
      if(byGetOrPost == 0){ //means by Get Method
      
      try{
         String username = (String)arg0[0];
         String password = (String)arg0[1];
         String link = "http://myphpmysqlweb.hostei.com/login.php?username="+username+"& password="+password;
         
         URL url = new URL(link);
         HttpClient client = new DefaultHttpClient();
         HttpGet request = new HttpGet();
         request.setURI(new URI(link));
         HttpResponse response = client.execute(request);
         BufferedReader in = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));

           StringBuffer sb = new StringBuffer("");
           String line="";
           
           while ((line = in.readLine()) != null) {
              sb.append(line);
              break;
            }
            in.close();
            return sb.toString();
         }
         
         catch(Exception e){
            return new String("Exception: " + e.getMessage());
         }
      }
      else{
         try{
            String username = (String)arg0[0];
            String password = (String)arg0[1];
            
            String link="http://myphpmysqlweb.hostei.com/loginpost.php";
            String data  = URLEncoder.encode("username", "UTF-8") + "=" + URLEncoder.encode(username, "UTF-8");
            data += "&" + URLEncoder.encode("password", "UTF-8") + "=" + URLEncoder.encode(password, "UTF-8");
            
            URL url = new URL(link);
            URLConnection conn = url.openConnection(); 
            
            conn.setDoOutput(true); 
            OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream()); 
            
            wr.write( data ); 
            wr.flush(); 
            
            BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            
            StringBuilder sb = new StringBuilder();
            String line = null;
            
            // Read Server Response
            while((line = reader.readLine()) != null)
            {
               sb.append(line);
               break;
            }
            return sb.toString();
         }
         catch(Exception e){
            return new String("Exception: " + e.getMessage());
         }
      }
   }
   
   @Override
   protected void onPostExecute(String result){
      this.statusField.setText("Login Successful");
      this.roleField.setText(result);
   }
}
Hier beträgt der Gehalt an activity_main.xml.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:paddingBottom="@dimen/activity_vertical_margin"
   android:paddingLeft="@dimen/activity_horizontal_margin"
   android:paddingRight="@dimen/activity_horizontal_margin"
   android:paddingTop="@dimen/activity_vertical_margin"
   tools:context=".MainActivity" >

   <EditText
      android:id="@+id/editText2"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignRight="@+id/editText1"
      android:layout_below="@+id/editText1"
      android:layout_marginTop="25dp"
      android:ems="10"
      android:inputType="textPassword" >
   </EditText>

   <EditText
      android:id="@+id/editText1"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignParentRight="true"
      android:layout_alignParentTop="true"
      android:layout_marginTop="44dp"
      android:ems="10" >

   <requestFocus android:layout_width="wrap_content" />

   </EditText>

   <TextView
      android:id="@+id/textView1"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignBottom="@+id/editText1"
      android:layout_alignParentLeft="true"
      android:text="@string/Username" />

   <TextView
      android:id="@+id/textView3"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignParentTop="true"
      android:layout_centerHorizontal="true"
      android:text="@string/App"
      android:textAppearance="?android:attr/textAppearanceLarge" />

   <TextView
      android:id="@+id/textView7"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignBottom="@+id/textView5"
      android:layout_alignLeft="@+id/textView6"
      android:text="@string/Role"
      android:textAppearance="?android:attr/textAppearanceMedium"
      android:textSize="10sp" />

   <TextView
      android:id="@+id/textView5"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_below="@+id/textView6"
      android:layout_marginTop="27dp"
      android:layout_toLeftOf="@+id/editText1"
      android:text="@string/LoginRole" />
   <TextView
      android:id="@+id/textView8"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_above="@+id/textView6"
      android:layout_alignLeft="@+id/textView5"
      android:layout_marginBottom="27dp"
      android:text="@string/method" />

   <TextView
      android:id="@+id/textView4"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignLeft="@+id/textView8"
      android:layout_below="@+id/button1"
      android:layout_marginTop="86dp"
      android:text="@string/LoginStatus" />


   <TextView
      android:id="@+id/textView6"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignTop="@+id/textView4"
      android:layout_centerHorizontal="true"
      android:text="@string/Status"
      android:textAppearance="?android:attr/textAppearanceMedium"
      android:textSize="10sp" />

   <TextView
      android:id="@+id/textView9"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignBottom="@+id/textView8"
      android:layout_alignLeft="@+id/textView6"
      android:text="@string/Choose"
      android:textAppearance="?android:attr/textAppearanceMedium"
      android:textSize="10sp" />

   <Button
      android:id="@+id/button2"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_centerVertical="true"
      android:layout_toRightOf="@+id/textView6"
      android:onClick="loginPost"
      android:text="@string/LoginPost" />

   <Button
      android:id="@+id/button1"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignBaseline="@+id/button2"
      android:layout_alignBottom="@+id/button2"
      android:layout_alignLeft="@+id/textView2"
      android:onClick="login"
      android:text="@string/LoginGet" />

   <TextView
      android:id="@+id/textView2"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignBaseline="@+id/editText2"
      android:layout_alignBottom="@+id/editText2"
      android:layout_alignParentLeft="true"
      android:text="@string/Password" />

</RelativeLayout>
Hier beträgt der Gehalt an strings.xml.
<?xml version="1.0" encoding="utf-8"?>
<resources>

   <string name="app_name">PHPMYSQL</string>
   <string name="action_settings">Settings</string>
   <string name="hello_world">Hello world!</string>
   <string name="Username">Username</string>
   <string name="Password">Password</string>
   <string name="LoginGet">Login - Get</string>
   <string name="LoginPost">Login - Post</string>
   <string name="App">Login Application</string>
   <string name="LoginStatus">Login Status</string>
   <string name="LoginRole">Login Role</string>
   <string name="Status">Not login</string>
   <string name="Role">Not assigned</string>
   <string name="method">Login Method</string>
   <string name="Choose">Choose Method</string>
 
</resources>
Hier beträgt der Gehalt an AndroidManifest.xml.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.phpmysql"
   android:versionCode="1"
   android:versionName="1.0" >

   <uses-sdk
      android:minSdkVersion="8"
      android:targetSdkVersion="17" />
      <uses-permission android:name="android.permission.INTERNET"/>
      <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
      
   <application
      android:allowBackup="true"
      android:icon="@drawable/ic_launcher"
      android:label="@string/app_name"
      android:theme="@style/AppTheme" >
      
      <activity
         android:name="com.example.phpmysql.MainActivity"
         android:label="@string/app_name" >
         
         <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
         
      </activity>
      
   </application>
</manifest>
Lassen Sie uns versuchen, um Ihre PHPMYSQL Anwendung auszuführen. Ich nehme an, Sie Ihre aktuelle Android-Gerät mit dem Computer verbunden haben. Um die App vom Android-Studio, öffnen Sie eine der Aktivität Dateien Ihres Projekt auszuführen, und klicken Sie auf Eclipse-Run IconAusführen-Symbol in der Werkzeugleiste. Vor dem Start der Anwendung wird Android Studio Display folgende Fenster, um eine Option, wo Sie Ihre Android-Anwendung ausgeführt werden soll.

Wählen Sie Ihr Mobilgerät als Option und prüfen Sie dann Ihr mobiles Gerät die folgenden Bildschirm anzuzeigen wird -
Anroid PHP / MySQL-Tutorial
Jetzt geben Sie einfach Ihren Benutzernamen und Ihr Passwort ein. In meinem Fall bin ich der Eingabe admin als Benutzernamen und Passwort. Es ist in der Figur dargestellt -
Anroid PHP / MySQL-Tutorial
Jetzt drücken Sie die Get-Taste und warten Sie einige Sekunden und Antwort wird heruntergeladen werden und wird Ihnen angezeigt. In diesem Fall ist die Antwort, die Rolle, die abgerufen bei admin als Benutzernamen und password.It ist in der nachfolgenden Abbildung gezeigt -
Anroid PHP / MySQL-Tutorial
Nun drücken Sie erneut die POST-Button und gleiche Ergebnis scheint. Es ist in der folgenden Abbildung dargestellt:
Anroid PHP / MySQL-Tutorial

Share on Google Plus

About ptjqatar

This is a short description in the author block about the author. You edit it by entering text in the "Biographical Info" field in the user admin panel.

0 التعليقات:

Kommentar veröffentlichen