سؤال : طريقة ربط تطبيق بقواعد البيانات MYSQL

Salimalhajri

Member
Licensed User
Longtime User
السلام عليكم ورحمة الله وبركاته ..
ارجو من الاخوة وضع شرح مبسط لطريقة الاتصال بقواعد البيانات
MYSQL
على سيرفر مدفوع
لقد بحثت في المنتدى ولكن جميع الدروس لم افهما بشكل واضح ..مع العلم انه لدي إلمام في انشاء قواعد بيانات والتعامل مع قواعد البيانات على الانترنت
فقط ..اريد كيفية ربط تطبيق بقواعد بيانات إرسال واستقبال البيانات
مثال :
صفحة لإدخال البيانات
الصفحة الثانية عرض البيانات

فارجو من الشباب الذين لديهم الخبرة وضع شرح مبسط عن الموضوع .. وجزاكم والله خيرا
 

Beja

Expert
Licensed User
Longtime User
عليكم السلام اخينا سالم

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

Nas9

Member
Licensed User
Longtime User
التطبيق لن يتعامل مع
mySql
مباشرة لأن هذا غير آمن
لكن عليك أن تربط قاعدة البيانات بملفات
php
وترسل وتستقبل منها الطلبات في تطبيقك

العملية سهله لكن عليك توضيح ماتريده أكثر
 

Salimalhajri

Member
Licensed User
Longtime User
نعم اعلم الفكرة العامة ..
انا لدي موقع مدفوع ويمكنني ان اعمل فيه قاعدة بيانات ولدي معلومات بسيطة في التعامل مع ملفات
php

..ولكن لا اعلم كيف اربط ملف ال
php
بالتطبيق برمجيا

إذا ممكن درس سريع لربط التطبيق بملف
php

اريد في الدرس فقط
طريقه استقبال البيانات وإرسالها

على سبيل المثال
صفحة تعرض الاسم والعمر من قاعدة البيانات
وصفحة إدخال الاسم والعمر ومن ثم إرسالها إلى قاعدة البيانات
شكرا جزيلا لكي اخي
Nas9
على الرد
وفي انتظار الدرس إذا وقت يسمح
 
Last edited:

Nas9

Member
Licensed User
Longtime User
جميل يعني تستطيع ربط ملف
php
بقاعدة البيانات

لربط البرنامج بملف
php​
دعنا ننشئ الملف أولاً باسم
hello.php
ونضع فيه

PHP:
<?
$name = $_GET["name"];
echo "hello ".$name;
?>

يقوم الملف باستقبال متغير اسمه
name
ويطبع الجمله
hello "name"

وسيكون موجودا على موقعك على الرابط
http://mysite.com/hello.php

انتهينا من جانب السيرفر نأتي على جانب البرنامج​
ستحتاج للمكتبة
HttpUtils2

بعد وضعها تعرف متغيراً جديداً
B4X:
Dim job1 As HttpJob
ونضع زر+مربع نص
بعدها نضع هذا الكود في الزر ليقوم بإرسال اسم الذي تدخله في مربع النص إلى الصفحة
B4X:
job1.Initialize("Send",Me)
        job1.Download2("http://mysite.com/hello.php",Array As String("name",T1.Text))

بعد ذلك نضع الجزء الأخير الخاص باستقبال الرد من الصفحة ويضعه في مربع النص
B4X:
Sub JobDone (Job As HttpJob)
      If Job.Success = True Then
          Select Job.JobName
            Case "Send"
                T1.Text = Job.GetString
          End Select
    End If
End Sub

هناك طريقة أخرى وهي
post
وتختلف قليلاً في كتابة الكود

لاستخراج معلومات معينة أو كبيرة يفضل ان يكون مخرج ملف
php
بطريقة
xml او json

اسف على رداءة الشرح الاكواد مرفقة

http://www.b4x.com/android/forum/threads/httputils2-web-services-are-now-even-simpler.18992/
 

Attachments

  • test1.zip
    394.8 KB · Views: 489

Salimalhajri

Member
Licensed User
Longtime User
مشكور جدا جدا لك اخي
Nas9
على الدرس والنموذج .. بارك الله فيك .. وجزاك الله خيرا كثيرا

الحمد لله عرفت الآن طريقة رفع بيانات وحفظها في قاعدة البيانات من خلال مربع إدخال نصوص من التطبيق مباشرة إلى قاعدة البيانات وربطه بملف ال
php
:):)
ولكن طريقة إستيراد وعرض البيانات في قائمة
listview على سبيل المثال

حاولت ولكن لم افلح ..:(

فإذا ممكن تكمل جميلك وتشرح الطريقة بشكل سريع
 

Nas9

Member
Licensed User
Longtime User
تستطيع جعل المخرج لصفحة
php
على شكل
xml او json

هناك دالة جاهزة تقوم بتحويل البيانات إلى
xml
قم بوضعها داخل ملف
php

PHP:
function sqlToXml($queryResult, $rootElementName, $childElementName)
{
    $xmlData = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n";
    $xmlData .= "<" . $rootElementName . ">";
    while($record = mysql_fetch_object($queryResult))
    {
        /* Create the first child element */
        $xmlData .= "<" . $childElementName . ">";
        for ($i = 0; $i < mysql_num_fields($queryResult); $i++)
        {
            $fieldName = mysql_field_name($queryResult, $i);
            /* The child will take the name of the table column */
            $xmlData .= "<" . $fieldName . ">";
            /* We set empty columns with NULL, or you could set
                it to '0' or a blank. */
            if(!empty($record->$fieldName))
                $xmlData .= $record->$fieldName;
            else
                $xmlData .= "null";
            $xmlData .= "</" . $fieldName . ">";
        }
        $xmlData .= "</" . $childElementName . ">";
    }
    $xmlData .= "</" . $rootElementName . ">";
    return $xmlData;
}

بعد ذلك تضع البيانات المراد عرضها
وتضع فقط الحقول المراد عرضها من الجداول
B4X:
$result = mysql_query(/* جملة mysql هنا */);
header("Content-Type: application/xml");
echo sqlToXml($result, "company", "employer");

سيطبع لك الناتج كالتالي على سبيل المثال
PHP:
<?xml version="1.0" encoding="UTF-8"?>
<company>
    <employer>
          <name>Ahmed</name>
          <age>35</age>
    </employer>
</company>

في قسم الاندرويد ستحتاج لنفس متطلبات المثال السابق بالاضافة لمكتبة:
XmlSax

وتعرف المتغير الجديد:
B4X:
    Dim parser As SaxParser

ثم تضع في حالة استقبال الرد من السيرفر ليقوم بتحليل ملف
xml
داحل الدالة الجديدة
Parser111
B4X:
Sub JobDone (Job As HttpJob)
    Dim iStream As InputStream
      If Job.Success = True Then
          Select Job.JobName
            Case "Send"
                iStream = Job.GetInputStream
                parser.Initialize
                parser.Parse(iStream, "Parser111") 
                iStream.Close
          End Select
    End If
End Sub

وفي آخر جزء نقوم بكتابة الجزء الخاص بالتحليل ليقوم باستخراج البيانات داخل لستتين
B4X:
Sub Parser111_StartElement (Uri As String, Name As String, Attributes As Attributes)
End Sub

Sub Parser111_EndElement (Uri As String, Name As String, Text As StringBuilder)
    If parser.Parents.IndexOf("employer") > -1 Then
        If Name = "name" Then
            List1.Add(Text.ToString)
        Else If Name = "age" Then
            List2.Add(Text.ToString)
        End If
    End If
End Sub

لم اجرب الكود أتمنى أن يعمل بشكل جيد
 

Salimalhajri

Member
Licensed User
Longtime User
احسنت .. ما قصرت ..وزادك الله من فضله وعلمه

بجرب الكود وببلغك بالنتائج ان شاء الله:)
 

Salimalhajri

Member
Licensed User
Longtime User
الحمد لله تم تجربه الكود وبشكل جيد .. واجهت بعض الصعوبات في البداية ولكن مع المحاولات المستمرة لأكثر من اسبوعين:D توفقت في النهائية
اشكرك جزيل الشكر اخي العزيز على ما قدمته من معلومات ..


دليل صلالة السياحي
برنامج مرشد سياحي يعلمك بالمناطق السياحية في سلطنة عمان وبالتحديد في محافظة ظفار المنطقة الجنوبية
رابط البرنامج
https://play.google.com/store/apps/details?id=com.itnetoman.SalalahTUR
 
Last edited:
Top