ساخت پروژه تماس با ما در آندروید + PHP

سوال : سلام ،استاد میتونید یه آموزش برای ارسال اطلاعات از برنامه آندروید به سرور رو برامون قرار بدید !
میخوام یه فرم تماس با ما درست کنم تا کاربرای اپلیکیشن بتونن نظراتشون رو برای من ارسال کنن و این نظرات در دیتابیس mysql ذخیره بشه .

جواب : پروژه ساده و کاربردی رو برای شما کاربران عزیز اماده کرده ام . در مثال پایین یک فرم تماس با ما با ۴ EditTextساخته شده است .

فایل 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:layout_margin="15dp"
    tools:context="co.tooba.contactus.Main" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_marginRight="17dp"
        android:layout_marginTop="20dp"
        android:text="نام"
        android:textAppearance="?android:attr/textAppearanceSmall" />

    <TextView
        android:id="@+id/TextView01"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignRight="@+id/textView1"
        android:layout_below="@+id/textView1"
        android:layout_marginTop="20dp"
        android:text="ایمیل"
        android:textAppearance="?android:attr/textAppearanceSmall" />

    <TextView
        android:id="@+id/TextView02"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignRight="@+id/TextView01"
        android:layout_below="@+id/TextView01"
        android:layout_marginTop="20dp"
        android:text="شماره تماس"
        android:textAppearance="?android:attr/textAppearanceSmall" />

    <TextView
        android:id="@+id/TextView03"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignRight="@+id/TextView02"
        android:layout_below="@+id/TextView02"
        android:layout_marginTop="20dp"
        android:text="پیام"
        android:textAppearance="?android:attr/textAppearanceSmall" />

    <EditText
        android:id="@+id/editName"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_above="@+id/TextView01"
        android:layout_toLeftOf="@+id/TextView02"
        android:ems="10" >

        <requestFocus />
    </EditText>

    <EditText
        android:id="@+id/editEmail"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/TextView01"
        android:layout_alignLeft="@+id/editName"
        android:layout_toLeftOf="@+id/TextView02"
        android:ems="10" />

    <EditText
        android:id="@+id/editPhone"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/TextView02"
        android:layout_alignRight="@+id/editEmail"
        android:ems="10" />

    <EditText
        android:id="@+id/editMessage"
        android:layout_width="wrap_content"
        android:layout_height="150dp"
        android:layout_alignLeft="@+id/editPhone"
        android:layout_alignRight="@+id/TextView03"
        android:layout_below="@+id/TextView03"
        android:layout_marginTop="18dp"
        android:ems="10"
        android:gravity="top"
        android:inputType="textMultiLine" />

    <Button
        android:id="@+id/btnSend"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/editMessage"
        android:layout_below="@+id/editMessage"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="14dp"
        android:text="ارسال" />

</RelativeLayout>

فایل Main.jav :

package co.tooba.contactus;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class Main extends Activity {

	private EditText name ,email ,phone ,message ;
	private Button send;
	private String url ;
	
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		
		send = (Button)findViewById(R.id.btnSend);
		
		name = (EditText)findViewById(R.id.editName);
		email = (EditText)findViewById(R.id.editEmail);
		phone = (EditText)findViewById(R.id.editPhone);
		message = (EditText)findViewById(R.id.editMessage);
		
		
		send.setOnClickListener(new OnClickListener() {
			public void onClick(View arg0) {

				url = "http://192.168.0.152/contact_us.php?name="+name.getText()+"&email="+email.getText()+"&message="+message.getText()+"&phone="+phone.getText();
				Server db = new Server(Main.this , url);
				db.execute();
				
			}
		});
				
	}

}

فایل Server.jav :

package co.tooba.contactus;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;

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

import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;
import android.widget.Toast;

public class Server extends AsyncTask<String, String, String> {

	private ProgressDialog dialog ;
	private Context myContext;
	private InputStream data = null;
	private String url ;
	private String output = "";
	
    public Server (Context context , String Url){
    	myContext = context;
    	url = Url;
    }
	
	
	@Override
	protected void onPreExecute() {
		super.onPreExecute();
		
		dialog = new ProgressDialog(myContext);
		dialog.setTitle("ارتباط با سرو");
		dialog.setMessage("در حال ارسال اطلاعات ...");
		dialog.setIndeterminate(false);
		dialog.setCancelable(true);
		dialog.show();	
		
	}
	
	@Override
	protected String doInBackground(String... arg0) {
		
		try {

			DefaultHttpClient httpClient = new DefaultHttpClient();
			HttpGet httpGet = new HttpGet(url);
			HttpResponse response = httpClient.execute(httpGet);
			HttpEntity entity = response.getEntity();
			data = entity.getContent();

			
		} catch (ClientProtocolException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		
		try {
			BufferedReader reader = new BufferedReader( new InputStreamReader(data , "UTF-8"), 8);
			StringBuilder sb = new StringBuilder();
			String row = null;
			
			while ((row = reader.readLine()) != null) {
				sb.append(row + "\n");
			}
			data.close();
			output = sb.toString();
			
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		return output;
	}
	
	@Override
    protected void onPostExecute(String output) {
            dialog.dismiss();
        try {
            Toast.makeText(myContext, output, Toast.LENGTH_LONG).show();
        } catch (Exception e) {
            e.printStackTrace();
        }
   }

}

فایل PHP :

<?php
$con = mysql_connect('localhost','root','');
mysql_select_db('contact_us',$con);
mysql_query("SET NAMES 'utf8'");

    if(! empty($_GET['name'])){

        if(!filter_var($_GET['email'], FILTER_VALIDATE_EMAIL))
            echo "ایمیل را به صورت صحیح وارد کنید.";
        elseif(empty($_GET['message']))
            echo "فیلد پیام خالی می باشد.";
        else{
                $name = $_GET["name"];
                $email = $_GET["email"];
                $phone = (isset($_GET["phone"])) ? $_GET["phone"] : "";
                $message = $_GET["message"];
                $result = mysql_query("INSERT INTO messages(name, email, phone, message) VALUES ('$name' , '$email' , '$phone' , '$message')");

                if($result)
                    echo "پیام شما با موفقیت ارسال شد.";
        }
    }else{
        echo "فیلدها را به دقت تکمیل کنید.";
    }

?>

 

سعی شده تا به صورت کاملا ساده و بدون هیچ کد اضافه ای این پروژه رو براتون آماده کنیم . لذا حواستون باشه که در قسمت امنیت php کاری انجام نشده است و این پروژه جهت آموزش می باشد .

-در لاین ۳۱ فایل Main.java آدرس قرارگیری فایل PHP را باید مشخص کنید تا اطلاعات و دریافت اطلاعات به صورت صحیح انجام شود .

– ارسال اطلاعات از طریق HttpGet به فایل PHP ارسال میشود و پیام مورد نظر از  طریق Toast در اکتیویتی نمایش داده میشود .

دانلود سورس پروژه

موفق باشید

  1. هنر - 30 سپتامبر 2015

    داداش شرمنده این کتابخانه هم لازم داره؟
    من تو اکلیپس وارد کردم خطا میده البته فقط استایل هاشو ویرایششون کردم درست شد غیر از values-v14

    وقتی تبدیلش میکنم به
    Theme.AppCompat.Light.DarkActionBar
    بازم درست نمیشه

  2. ali - 30 سپتامبر 2015

    سلام
    کتابخونه appcompat_v7 رو براتون اپلود کردم. این کتابخانه را در Eclips ایمپورت کنید ،انشالله مشکلتون حل میشه …
    http://blog.toobaweb.com/wp-content/uploads/2015/09/appcompat_v7.zip

  3. هنر - 30 سپتامبر 2015

    مشکلم حل شد البته قبل اینکه راهنمایی کنید
    هیچ مشکلی ندارم الان به جز یکی
    هم روی هاست پولی تست کردم هم هم رایگان حتا افلاین تو خود محیط ویندوز
    دیتابیس و ارتباط و … همه چی اوکی ولی موقع ارسال هیچی به جدول ارسال نمیشه
    بعد کلیک روی دکمه ی ارسال یه toast خالی نمایش داده میشه
    ( من تخصصم تحت وب اینو گفتم بدونید در رابطه با php و دیتا مشکلی نداره این برنامه )
    سمت اندروید نمیدونم مشکل از کجاست!

  4. ali - 1 اکتبر 2015

    نکاتی که باید چک بشه :
    ۱ – لاین ۳۱ فایل Main.java -> آدرس سرور به درستی وارد شده باشه .
    ۲ – در فایل AndroidManifest.xml دسترسی INTERNET رو گرفته باشید .
    ۳ – دیتابیس رو دانلود و ایمپورت کنید (یوزر نیم + پسورد + نام دیتابیس رو هم به صورت صحیح وارد کنید).
    در صورتی که مشکلتون با رعایت این سه نکته حل نشد . ارور های قسمت logcat رو ارسال کنید تا بررسی کنم …

  5. علی رسالت - 1 اکتبر 2015

    هر سه مورد اول درست کار میکنن
    در مورد لاگ هم لاگ w هستش
    ولی به خاطر یه سری چیزا نمیتونم لاگ و بدم خدمتتون حالا اشکال نداره
    ببخشید علی اقا منبع دیگه ای سراغ دارید با همین موضوع ارتباط با ما ارسال نظر هر چند همشون یکین
    هر چقدر ساده تر واسه کار من بهتر
    هر چند مال شما مشکلی نداره مشکل از منه که زیاد تو اندروید وارد نیستم

  6. مجی - 6 دسامبر 2015

    سلام…خسته نباشید
    ممنون از مطالب و آموزشهای کلیدی ک گذاشتی.
    من میخام به ایمیل خودم پیام ارسال بشه چون سایت ندارم!!!
    کدهاش چی هست ???


همینک دیدگاه خود را برای ما بنویسید!