GET و POST بطريقتي PHP بواسطة MYSQL ربط بيسك فور اندرويد مع قاعدة بيانات

alfaiz678

Active Member
Licensed User
السلام عليكم ورحمة الله وبركاته
حياكم الله
GET و POST بطريقتي PHP بواسطة MYSQL ربط بيسك فور اندرويد مع قاعدة بيانات
اولا قبل البدء نوضح الفرق المختصر بين
GET و POST
 
Last edited:

alfaiz678

Active Member
Licensed User
اولا قبل البدء نوضح الفرق المختصر المهم لنا بين
GET و POST
URL واقل امانا لان البيانات تصبح جزءا من عنوان URL محدودة البيانات المرسلة اقصى طول 2048 لانها تستخدم عنوان
POST وهي اسرع من
المحولة الى بايت لخزنها في قاعدة البيانات BLOB غير محدودة البيانات يمكن ارسال عن طريقها حتى الصور من POST
وتعتبر اكثر امانا من
GET
وتبقى خيارا لارسال البيانات الحساسة ككلمات المرور وغيرها
هذا مختصر ذلك والفروق كثيرة تجدها على النت​
 

alfaiz678

Active Member
Licensed User
سنبدأ بالدالة

GET
انشئ ملف الاتصال بقاعدة البيانات وسمه وليكن
con.php
وقم برفعه على السيرفر​
con.php:
<?php
$servername = ""
$username = "";
$password = "";
$dbnamee = "";
$con = new mysqli($servername, $username, $password, $dbnamee);
mysqli_set_charset($con,"utf8");
?>
 

alfaiz678

Active Member
Licensed User
لنفترض ان لدينا جدول واحد باسم
User
فيه الحقول التالية
Id = int auto numbering, Name = varchar, Password= varchar

 

alfaiz678

Active Member
Licensed User
ننشء ملف بي اتش بي نضع فيه اكواد العمليات على الجدول
نسميه مثلا
All.php
اولا : الاضافة
وليكن بالكود التالي​
PHP:
<?php
include ("con.php");

$Name =$con->real_escape_string($_GET["Name"]) ;
$Password =$con->real_escape_string($_GET["Password"]) ;

$action = $_GET['action'];

switch ($action)
{
   Case "InsertUser":
$q = mysqli_query($con," insert into  User(Name,Password) VALUES ('$Name','$Password')");
break;

}
?>
نأتي الان الى جانب
B4A

يتبع ......​
 
Last edited:

alfaiz678

Active Member
Licensed User
نقوم بادراج مكتبة
OkHttpUtils2
الى التطبيق
نظيف زر اضافة ومربعي نص واحد للاسم والاخر للباسوورد

نظيف هذا الكود تحت الزر​
B4X:
ProgressDialogShow2("........جاري تحميل البيانات  ",False)
            Dim InsertUserAs HttpJob
            InsertUser.Initialize("InsertUser", Me)
            InsertUser.download2("http://www.yoursite.com/All.php",  Array As String ("action", "InsertUser","Name",Name.Text,"Password",Password.Text))
            InsertUser.GetRequest.Timeout=15000  ' مهلة الاتصال بالخادم 15000=15 ثانية
 

alfaiz678

Active Member
Licensed User
بعدما يتم الضغط على الزر والاتصال بالخادم لارسال المعطيات
ياتي دور الحدث
Sub JobDone(Job As HttpJob)
وظيفته اضهار نتيجة الارسال اما بنجاح او عدمه
B4X:
Sub JobDone(Job As HttpJob)
    If Job.Success Then
        Dim res As String
        res = Job.GetString
        Log("Response from server: " & res)
        Dim parser As JSONParser
        parser.Initialize(res)
    

        
        If Job.JobName="InsertUser" Then
            ToastMessageShow("تمت عملية الاضافة",True)
        End If


    Else
        ToastMessageShow("لم تتم العملية تأكد من اتصالك بالانترنت",True)
        'Activity.Finish
    End If
    ProgressDialogHide
    
End Sub
 

alfaiz678

Active Member
Licensed User
بالنسبة لعمليتي الحذف والتعديل نفس الكود في
b4a
انما التغيير يكون في كود
php
ننتقل الى الجزء المختلف قليلا وهو الاستعراض
Select
يتبع ان شاء الله​
 

alfaiz678

Active Member
Licensed User
تم اضافة كود استعراض البيانات في
php​
PHP:
<?php
include ("con.php");

$Name =$con->real_escape_string($_GET["Name"]) ;
$Password =$con->real_escape_string($_GET["Password"]) ;

$action = $_GET['action'];

switch ($action)
{
   Case "InsertUser":
$q = mysqli_query($con," insert into  User(Name,Password) VALUES ('$Name','$Password')");
break;

   Case "SelectUser":
        $q = mysqli_query($con,"SELECT * FROM User where Name like '$Name'  And Password like '$Password' ");
        $rows = array();
        while($r = mysqli_fetch_assoc($q))
        {
            $rows[] = $r;
        }
        print json_encode($rows);
    break;


}
?>

كود
b4a​
B4X:
ProgressDialogShow2("........جاري تحميل البيانات  ",False)

            Dim SelectUser As HttpJob

            SelectUser.Initialize("SelectUser", Me)

            SelectUser.download2("http://www.yoursite.com/All.php",  Array As String ("action", "SelectUser","Name",Name.Text,"Password",Password.Text))

            SelectUser.GetRequest.Timeout=15000  ' مهلة الاتصال بالخادم 15000=15 ثانية

B4X:
Sub JobDone(Job As HttpJob)
    If Job.Success Then
        Dim res As String
        res = Job.GetString
        Log("Response from server: " & res)
        Dim parser As JSONParser
        parser.Initialize(res)
  

      
        If Job.JobName="InsertUser" Then
            ToastMessageShow("تمت عملية الاضافة",True)
        End If


        If Job.JobName="SelectUser" Then
            Dim COUNTRIES As List
            COUNTRIES = parser.NextArray 'returns a list with maps
            If COUNTRIES.Size > 0 Then
                Dim m As Map
                m = COUNTRIES.Get(0)
                Activity.Finish
                StartActivity(M_Login)
                Else
                  
                ToastMessageShow("تأكد من اسم المستخدم  او كلمة المرور",True)
            End If
      
        End If

    Else
        ToastMessageShow("لم تتم العملية تأكد من اتصالك بالانترنت",True)
        'Activity.Finish
    End If
    ProgressDialogHide
  
End Sub
الكود بالاعلى للتحقق من اسم المستخدم وكلمة المرور
يتبع ان شاء الله​
 
Last edited:

alfaiz678

Active Member
Licensed User
استعراض البيانات وعرضها على
CustomListView​
PHP:
<?php
include ("con.php");

$Name =$con->real_escape_string($_GET["Name"]) ;
$Password =$con->real_escape_string($_GET["Password"]) ;

$action =$_GET['action'];

switch ($action)
{
   Case "InsertUser":
$q = mysqli_query($con," insert into  User(Name,Password) VALUES ('$Name','$Password')");
break;

   Case "SelectUser":
        $q = mysqli_query($con,"SELECT * FROM User where Name like '$Name'  And Password like '$Password' ");
        $rows = array();
        while($r = mysqli_fetch_assoc($q))
        {
            $rows[] = $r;
        }
        print json_encode($rows);
    break;
    
        Case "SelectUserِAll":
        $q = mysqli_query($con,"SELECT * FROM User  ");
        $rows = array();
        while($r = mysqli_fetch_assoc($q))
        {
            $rows[] = $r;
        }
        print json_encode($rows);
    break;

}
?>


B4X:
ProgressDialogShow2("........جاري تحميل البيانات  ",False)

            Dim SelectUserAll As HttpJob

            SelectUserAll.Initialize("SelectUserAll", Me)

            SelectUserAll.download2("http://www.yoursite.com/All.php",  Array As String ("action", "SelectUserAll"))

            SelectUserAll.GetRequest.Timeout=15000  ' مهلة الاتصال بالخادم 15000=15 ثانية

B4X:
Sub JobDone(Job As HttpJob)
    If Job.Success Then
        Dim res As String
        res = Job.GetString
        Log("Response from server: " & res)
        Dim parser As JSONParser
        parser.Initialize(res)


  
        If Job.JobName="InsertUser" Then
            ToastMessageShow("تمت عملية الاضافة",True)
        End If


        If Job.JobName="SelectUser" Then
            Dim COUNTRIES As List
            COUNTRIES = parser.NextArray 'returns a list with maps
            If COUNTRIES.Size > 0 Then
                Dim m As Map
                m = COUNTRIES.Get(0)
                Activity.Finish
                StartActivity(M_Login)
                Else
              
                ToastMessageShow("تأكد من اسم المستخدم  او كلمة المرور",True)
            End If
  
        End If

          If Job.JobName="SelectUserAll" Then
            Dim Name,Password  As String
            CustomListView1.Clear
            Dim COUNTRIES As List
            COUNTRIES = parser.NextArray 'returns a list with maps
            For i = 0 To COUNTRIES.Size - 1
        
                Dim m As Map
                m = COUNTRIES.Get(i)
                Name = m.Get("Name")
                Password = m.Get("Password")
               dim id as int = m.Get("id")
                CustomListView1.AddTextItem(Password & " /  " & Name  ,id)
            Next
        End If
    
    Else
        ToastMessageShow("لم تتم العملية تأكد من اتصالك بالانترنت",True)
        'Activity.Finish
    End If
    ProgressDialogHide

End Sub
 
Last edited:

alfaiz678

Active Member
Licensed User
واما عن عمليتي التعديل والحذف فهما نفس الاضافة بالنسبة للكود في
B4A
يتم ارسال عمود
id
B4X:
'التعديل
ProgressDialogShow2("........جاري تحميل البيانات  ",False)

            Dim UpdateUser As HttpJob

            UpdateUser.Initialize("UpdateUser", Me)

            UpdateUser.download2("http://www.yoursite.com/All.php",  Array As String ("action", " UpdateUser","Name",Name.Text,"Password",Password.Text,"id",id.Text))

            UpdateUser.GetRequest.Timeout=15000  ' مهلة الاتصال بالخادم 15000=15 ثانية



'الحذف
ProgressDialogShow2("........جاري تحميل البيانات  ",False)

            Dim DeleteUser As HttpJob

            DeleteUser.Initialize("UpdateUser", Me)

            DeleteUser.download2("http://www.yoursite.com/All.php",  Array As String ("action", " DeleteUser","id",id.Text))

            DeleteUser.GetRequest.Timeout=15000  ' مهلة الاتصال بالخادم 15000=15 ثانية


اما في
php
فيكون الكود التالي​
PHP:
<?php
include ("con.php");

$Name =$con->real_escape_string($_GET["Name"]) ;
$Password =$con->real_escape_string($_GET["Password"]) ;

$action =$_GET['action'];
$id = $_GET['id'];

switch ($action)
{
   Case "InsertUser":
$q = mysqli_query($con," insert into  User(Name,Password) VALUES ('$Name','$Password')");
break;

   Case "SelectUser":
        $q = mysqli_query($con,"SELECT * FROM User where Name like '$Name'  And Password like '$Password' ");
        $rows = array();
        while($r = mysqli_fetch_assoc($q))
        {
            $rows[] = $r;
        }
        print json_encode($rows);
    break;
    
        Case "SelectUserِAll":
        $q = mysqli_query($con,"SELECT * FROM User  ");
        $rows = array();
        while($r = mysqli_fetch_assoc($q))
        {
            $rows[] = $r;
        }
        print json_encode($rows);
    break;

Case "UpdateUser":
       $q = mysqli_query($con," update User  set Name='$Name',Password = '$Password' where id=$id  ");
      
    break;

Case "DeleteUser":
       $q = mysqli_query($con," Delete From User  where id=$id  ");
      
    break;

}
?>
 
Last edited:

alfaiz678

Active Member
Licensed User
PHP:
*/المثال سيكون على الاضافة
Insert
php*/


<?php
include ("con.php");

$Name =$con->real_escape_string($_POST["Name"]) ;
$Password =$con->real_escape_string($_POST["Password"]) ;

$action = $_POST['action'];

switch ($action)
{
   Case "InsertUser":
$q = mysqli_query($con," insert into  User(Name,Password) VALUES ('$Name','$Password')");
break;

}
?>
 

alfaiz678

Active Member
Licensed User
B4X:
'وفي جانب
'B4a
'كون الكود

ProgressDialogShow2("........جاري تحميل البيانات  ",False)
            Dim InsertUserAs HttpJob
            InsertUser.Initialize("InsertUser", Me)
            InsertUser.PostString("http://www.yoursite.com/All.php", "action="&"InsertUser"&"&Name="&Name.Text&"&Password="&Password.Text))
InsertUser.GetRequest.Timeout=15000  ' مهلة الاتصال بالخادم 15000=15 ثانية

وحدث
Sub JobDone(Job As HttpJob)
يبقى كما هو
وبالنسبة للدالة هذا مثال عنها وباقي العمليات على نفس المنوال
هذا والله اعلم
والسلام عليكم ورحمة الله وبركاته​
 
Top