مشخصات مقاله
-
2504
-
0.0
-
14358
-
0
-
0
آموزش PHP/MYSQL در اندروید
آموزش PHP-MYSQL اندروید
در این فصل قد داریم توضیح دهیم که چطور می توانید PHP و MYSQL را در برنامه ی اندروید خود جا دهید. زمانی که شما یک وب سرور دارید و تمایل دارید به داده ی آن روی برنامه ی اندروید خود دسترسی داشته باشید، این برنامه بسیار مفید خواهد بود.
MYSQL به عنوان یک پایگاه داده در وب سرور استفاده می شود و PHP برای گرفتن داده ز این پایگاه استفاده می شود. برنامه ی ما با پارامترهای ضروری صفحه ی PHP ارتباط برقرار خواهد کرد و PHP با پایگاه داده ی MYSQL تماس برقرار می کند و نتایج را به ما گزارش خواهد داد.
در اندرویدایجاد پایگاه داده
پایگاه داده MYSQL می تواند به راحتی و با استفاده از این نسخه ی ساده ایجاد شود. وضعیت CREATE DATABASE پایگاه داده را ایجاد می کند.
در اندرویدایجاد جدول ها
پس از ایجاد پایگاه داده، زمان ایجاد جدول ها در پایگاه داده می باشد. وضعیت CREATE DATABASE پایگاه داده را ایجاد می کند.
در اندرویدوارد کردن مقادیر در جدول ها
وقتی که پایگاه داده و جول ها ایجاد شدند، زمان آن است که برخی داده ها را وارد جدول ها کنیم. حالت Insert Into پایگاه داده را ایجاد می کند.
در اندرویدPHP – GET و روش های پست
PHP همچنین برای آوردن رکورد از پایگاه داده mysql پس از ایجاد شدنش، استفاده می شود. برای آوردن رکورد برخی اطلاعات، با توجه به اینکه چه رکوردی آورده می شود، باید به صفحه ی PHP منتقل شوند.
اولین روش برای انتقال اطلاعات استفاده از روش GET می باشد که دستور $_GET استفاده می شود. متغیرها به url منتقل می شوند و رکورد آورده می شود. ترکیب آن را می توانید در زیر ببینید.
دومین راه استفاده از روش POST می باشد. تنها تغییر درنوشته ی بالا جایگزین کردن $_GET با $_POST می باشد. در روش POST متغیرها از طریق URL منتقل نمی شوند.
اتصال MYSQL به اندروید
اتصال از طریق روش GET
دو راه برای اتصال به MYSQL از طریق صفحه ی PHP می باشد. اولین روش، روش GET نامیده می شود. ما از گروه های HttpGet و HttpClient برای اتصال استفاده می کنیم. ترکیب آنها در زیر ارائه شده است.
URL url = new URL(link);
HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet();
request.setURI(new URI(link));
پس از آن لازم است که شما روش execute را از گروه HttpClient فرابخوانید و آن را در یک آبجکت HttpResponse دریافت کنید. سپس لازم است جریان ها را باز کنید تا داده را دریافت کنید.
HttpResponse response = client.execute(request);
BufferedReader in = new BufferedReader
(new InputStreamReader(response.getEntity().getContent()));
استفاده از روش POST
در روش POST گروه های URLEncoder و URLConnection استفاده خواهند شد. Urlencoder اطلاعات متغیرهای در حال انتقال را کد گذاری می کند. ترکیب آن را در زیر می بینید.
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();
آخرین کاری که باید انجام دهید، نوشتن این داده روی لینک می باشد. پس از نوشتن لازم است جریان را برای دریافت داده های پاسخ باز کنید.
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
wr.write( data );
BufferedReader reader = new BufferedReader(new
InputStreamReader(conn.getInputStream()));
مثال:
مثال زیر یک مثال کامل می باشد از چگونگی اتصال برنامه ی اندروید با پایگاه داده ی MYSQL از طریق صفحه ی PHP. این مثال یک برنامه ی پایه ایجاد می کند که به شما اجازه می دهد تا با استفاده از روش GET و POST وارد شوید.
بخش PHP – MYSQL
در این مثال یک پایگاه داده با نام temp در 000webhost.com ایجاد شده است. در این پایگاه داده جدولی با نام table1 ایجاد شده است. این جدول دارای سه فیلد می باشد، نام کاربری، رمز عبور، نقش (Username, Password, Role) و جدول دارای تنها یک رکورد می باشد که عبارت است از ("admin","admin","adminstrator").
صفحه ی php ارائه شده در زیر پارامتر ها با روش post می گیرد.
بخش اندروید
این مثال را باید روی دستگاهی اجرا کنید که اینترنت Wi-Fi متصل باشد.
در اینجا محتوای 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);
}
}
در اینجا محتوای 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{
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);
}
}
در ادامه محتوای activity_main.xml را مشاهده می کنید.
Here is the content of Strings.xml. PHPMYSQL Settings Hello world! Username Password Login - Get Login - Post Login Application Login Status Login Role Not login Not assigned Login Method Choose Method
در اینجا محتوای AndroidManifest.xml می باشد.
اجازه بدهید برنامه ی PHPMYSQL شما را اجرا کنیم. فرض می کنیم که دستگاه موبایل اندروید خود را به کامپیوتر متصل کرده اید. برای اجرای برنامه از Eclipse، یکی ازفایل های فعالیت پروژه را باز کرده و روی آیکن Run از تولبار کلیک کنید. قبل از شروع برنامه ی شما، Eclipse پنجره ی زیر را برای انتخاب گزینه ی محل اجرای برنامه ی اندرویدتان، نمایش خواهد داد.
دستگاه موبایل خود را به عنوان یک گزینه انتخاب کرده و سپس آن را چک کنید که صفحه زیر را نمایش می دهد.
حالا نام کاربری و رمز عبور خود را تایپ کنید. من هر دو را با عنوان admin تایپ می کنم، که می توانید در تصویر زیر ببینید.
اکنون دکمه ی Get را فشار داده و چند ثانیه منتظر بمانید. پاسخ دانلود شده و به شما نشان داده خواهد شد. در این مورد پاسخ ROLE می باشد که در مورد admin بودن نام کاربری و رمز عبور، آورده شده است. در تصویر زیر می توانید ببینید.
اکنون روی دکمه ی Post فشار دهید که همان نتیجه ظاهر خواهد شد، که در تصویر زیر می توانید ببینید.