AHMADSSB BLOG

مدونة تحتوي على مواضيع متخصصة في تطوير اجهزة الاندرويد ومواضيع متفرقة

(المقدمة) ربط تطبيق أندرويد مع MySQL و PHP و JSON

شارك هذا المقال مع أصدقائك

Facebooktwittergoogle_pluslinkedinmail

السلام عليكم ورحمة الله وبركاته

هذا أول دروس برمجة تطبيقات الأندرويد في مدونتي، ولكن لن أبدأ من الصفر حيث يوجد كثير من الأخوة قاموا بشرح أساسيات برمجة الأندرويد على أكمل وجه. لذلك أحببت أن أقدم درس يهم الجميع وهو كيفية عمل تطبيق أندرويد يكون متصل مع قاعدة بيانات خارجية بحيث لا تحتاج الى إعادة برمجة التطبيق من جديد لإضافة معلومات جديدة.

كل ما عليك هو تحديث البيانات من خلال الإنترنت و سيتم تحديثه تلقائيا و أيضا إرسال البيانات من خلال التطبيق إلى قاعدة البيانات ليتم تحديثها في قاعدة البيانات.

للأسف لا يمكن الاتصال بقاعدة بيانات MySQL أو أي قاعدة بيانات خارجية مباشرة من خلال تطبيق الأندرويد. وللقيام بذلك علينا معرفة مفهوم Web Services.

قمت بعمل رسم توضيحي لطريقة العمل :

لا ترتبك من الصورة بالأعلى فعند معرفتك لمفهوم Web Services و طريقة عملها سوف تسهل عليك العمل على أي نظام تشغيل و أي لغة برمجة أخرى.

سأشرح لكم مفهوم Web Services ببساطة جدا وبدون أي تعمق في الموضوع:

في أي لغة برمجة يوجد ما يسمى بالدالة (Function أو Method)  عمل هذه الدالة هو عمل جزء محدد من البرنامج بمعنى تقسيم المشروع الكبير إلى عدة بريمجات صغيرة.

كمثال في حال كنا نريد عمل برنامج آلة حاسبة فسيكون هناك عمليات كثيرة مثل الجمع والضرب و الطرح و القسمة … الخ، سنقوم بعمل دالة لكل عملية مثلا الجمع (Java):

public int sum(int num1, int num2)

{

int result = 0;

num1 + num2;

return result;

}

 

وعندما نريد استخدام هذه الدالة في أي مكان في الكلاس أو في كلاس آخر نقوم فقط بكتابة اسم الدالة مع إضافة الباراميترز المطلوبة هكذا :

sum(2 , 5);

وسوف نحصل على الناتج (7).

فكرة عمل Web Services  نفس فكرة عمل الدالة  حيث قمنا بعمل الدالة وقمنا بكتابة جميع العمليات المطلوبة بداخل هذه الدالة ووضعنا باراميترز مطلوبة لإنجاز هذه الدالة.

وعندما قمنا بإستخدام الدالة لم نهتم بما تقوم به هذه الدالة فقط أرسلنا الباراميترز المطلوبة و قامت الدالة بعمل كل شي لنا.

الفائدة من Web Services  هو أنك ستقوم بكتابة جميع الدوال المطلوبة للتحكم بقاعدة البيانات أو حتى بالموقع تماما كما ستقوم بكتابتها للتحكم بأي شي عن طريق المتصفح فأنت ستستخدم أحد الطرق POST أو GET  للحصول على البيانات

ولكن الفرق الوحيد هو أنك لن تقوم بإرجاع البيانات على المتصفح (كصورة و تنسيق…الخ) بل ستعيد الببيانات إما بإستخدام XML كما هو مستخدم في RSS  ، أو أن تستخدم (JavaScript Object Notation (JSON حيث لاحقا من خلال العميل سواء كان Android, IOS, Windows Phone أو حتى برامج سطح المكتب أو حتى تستخدمها لبناء موقعك أو قد تكون خدمات تتيحها للمطورين حيث يستفيدوا من بعض الخدمات التي تقدمها في موقعك (مثل خدمات حالة الطقس). فهم لن يعرفوا ما هو الكود الموجود بداخل الدالة ولكن فقط اسم الدالة و الباراميترز المطلوبة.

الآن لنعد لموضوعنا و الصورة بالأعلى سأشرح طريقة سير العمل وما هو المطلوب :

  1. مقدمة وشرح توضيحي عن Web Services وعن المشروع.
  2. إعداد السيرفر المحلي WAMP و بناء قاعدة بيانات MySQL.
  3. التعامل مع PHP لبناء Web Service  تقوم بعمل Login و Register (مع شرح مبسط عن JSON) .
  4. التعامل مع PHP لبناء Web Service  بجلب بيانات المستخدمين الموجودة بقاعدة البيانات.
  5. بناء مشروع أندرويد  جديد و إعداد واجهة تطبيق الأندرويد.
  6. تطوير كلاسات Register و Login وJSONParser في أندرويد.
  7. تطوير UsersActivity و ListViewAdapter لعمل قائمة المستخدمين بالتنسيق الذي نحتاجه.

قمت ببناء التطبيق كما ترون في الفديو التوضيحي سأقوم برفع جميع الأكواد في الدروس مع توضيح لكل سطر في الكود قدر الإمكان.

بإمكانك تحميل المشروع من خلال GitHub :
https://github.com/ahmadssb/Android-PHP-MySQL-JSON-Tutorial.git

شارك هذا المقال مع أصدقائك

Facebooktwittergoogle_pluslinkedinmail

16 تعليق

Add a Comment
  1. مسا الخير لو سمحت اخوي ممكن تشرح لي هاي اليثود هي ايميلي ياريت تبعت لي الشرح qusailafi@yahoo.com
    public static JSONObject makeHttpRequest(String loginUrl, String method, List params) {
    // making HTTP Request
    try {
    // check for request method
    if(method == “POST”){
    DefaultHttpClient httpClient = new DefaultHttpClient();
    HttpPost httpPost = new HttpPost(loginUrl);
    httpPost.setEntity(new UrlEncodedFormEntity(params));
    HttpResponse httpResponse = httpClient.execute(httpPost);

    HttpEntity httpEntity = httpResponse.getEntity();
    is = httpEntity.getContent();
    }else
    // check for request method
    if(method == “GET”){
    DefaultHttpClient httpClient = new DefaultHttpClient();
    String paramString = URLEncodedUtils.format(params, “utf-8”);
    loginUrl += “?” + paramString;
    HttpGet httpGet = new HttpGet(loginUrl);
    HttpResponse httpResponse = httpClient.execute(httpGet);
    HttpEntity httpEntity = httpResponse.getEntity();
    is = httpEntity.getContent();
    }

    } catch (ClientProtocolException e) {
    e.printStackTrace();
    } catch (UnsupportedEncodingException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    }

    try {
    BufferedReader reader = new BufferedReader(
    new InputStreamReader(is, “iso-8859-1”),8);
    StringBuilder sb = new StringBuilder();
    String line = null;

    while((line = reader.readLine()) != null){
    sb.append(line + “\n”);
    }
    is.close();
    json = sb.toString();
    } catch (IOException e) {
    Log.d(“Buffer Error”,”Error Converting Reesult “+e.toString());
    }

    // try parse the string to JSON Object
    try {
    jObj = new JSONObject(json);

    } catch (JSONException e) {
    Log.e(“JSON Parser”, “Error Parsing data” + e.toString());
    }

    // return JSON String
    return jObj;
    }

    قيم التعليق : Thumb up 0 Thumb down 0

  2. asdasdasdasdasdasdasdasd asf saf asf s af saf

    قيم التعليق : Thumb up 0 Thumb down 0

  3. السلام عليكم
    شكرا جزيلا اخي
    لكن ارجوووووووووووووووك لو تعملها على شكل فيديوهات تكون مبسطة اسهل لأنو لا يوجد هكذا مواضيع بالعربية وان وجد فانه يكون مختصر او سريع
    واعدك اني سأدعو لك بالخير
    انتظر ردك اخي .

    قيم التعليق : Thumb up 0 Thumb down 0

  4. اين انت اخي أكثر من شهر وانا انتظر

    قيم التعليق : Thumb up 0 Thumb down 0

  5. اخي الكريم اقدر اتواصل معك هاتفيا بخصوص عمل تصميم تطبيق اندرويد خاص بالنساط الطلابي او تدلني على احد يعمل ذلك بمقابل.. ولك تحياتي
    الاسم: علي جعامي- السعودية
    جوال/ 0553488017

    قيم التعليق : Thumb up 0 Thumb down 0

    1. صدام عواوده

      تواصل معي ..00962797792443

      قيم التعليق : Thumb up 0 Thumb down 0

  6. السلام عليكم

    اخوي لو سمحت عندي مشروع تخرج جامعي .. احتاج بس اعرف نقطه معينه وابيك تدلني ع كيف اوصل لشروحاتها بالانجلزي او بالعربي لاني عجزت ..

    مشروعي تحضير الطلاب بالجامعه عن طريق الجوال اندرويد .. يعني الدكتور بعد ما يخلص المحاضره يرفع جواله بدال ما يجيب كشف ويحضر الطلاب ويغيبهم .. بس مشكلتي اني ما ابي استخدم قاعده بيانات ابي البرنامج يكون مربوط مع موقع الجامعه وشكرا ..

    قيم التعليق : Thumb up 0 Thumb down 0

  7. مشروع رائع شكراً لك

    قيم التعليق : Thumb up 0 Thumb down 0

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

AHMADSSB BLOG © 2014