JSON | PHP
JSON PHP
بعض المعلومات النظرية:-
- الاستخدام الشائع لـ JSON هو قراءة البيانات من خادم ويب Web server ، وعرض هذه البيانات في صفحة الويب.
- تعلمك لهذا الفصل سيساعدك على فهم كيفية تبادل البيانات فى JSON بين المتصفح ( العميل ) وخادم PHP.
- يحتوي ملف PHP على بعض الوظائف المدمجة للتعامل مع JSON.
- يمكنك تحويل الكائنات الموجودة في PHP إلى JSON باستخدام دالة () json_encode الموجودة فى PHP.
هناك دالتين functions للتعامل مع JSON عن طريق PHP وهما () Json_encode () – json_decode ، سنبدأ بالتعرف عليهما بالتفصيل الأن.
json_encode() -1
تقوم باسترجاع قيم نصية String عند نجاح العملية ، وخطأ False عند فشل العملية.
البنية الأساسية Syntax، كالتالي:
json_encode ( $value, $options = 0, $depth = 512 ) : string
القيم المُمررة بداخل function:
Description | parameters |
---|---|
– القيمة التي يتم ترميزها. – تعمل هذه الوظيفة فقط مع البيانات المشفرة تشفير UTF-8. | “value “Required |
– هذه القيم الاختيارية : [ SON_HEX_QUOT, JSON_HEX_TAG, JSON_HEX_AMP, JSON_HEX_APOS, JSON_NUMERIC_CHECK, JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, JSON_FORCE_OBJECT ]. | “options “Optional |
– ضبط الحد الأقصى للعمق. – يجب أن تكون أكبر من الصفر. | “depth “Optional |
مثال للتوضيح:-
<?php
$arr = array("One", "two", "three", "four", "five");
$myJSON = json_encode($arr);
echo $myJSON;
?>
2. () JSON_decode
- تستخدم وظيفة () json_decode لفك تشفير JSON في PHP.
- يأخذ قيم (string) الخاصة ب JSON المشفرة ويحولها الى متغير PHP.
- هذه الدالة تقوم بإرجاع القيمة التي تم فك تشفيرها من json إلى نوع PHP المناسب.
البنية الأساسية Syntax، كالتالي:
json_decode ( $json (string) , $assoc (Bool) = False, $depth (int) = 512, $options (int) = 0 ) : mixed
القيم المُمررة بداخل function:
Description | parameters |
---|---|
– انها قيم نصية String مشفرة. – يجب أن تكون البيانات مشفرة تشفير( UTF-8 ). | “json “Required |
القيمة الإفتراضية False ، عندما تكون True ، سيتم تحويل الكائنات التي تم إرجاعها إلى مصفوفات مُترابطة. | ( “assoc ( associative – “Optional |
وهو معلمة نوع عدد صحيح Integer الذي يحدد عمق recursion depth. | “depth “Optional |
نوع حرف صحيح لفك شفرة JSOS JSON_BIGINT_AS_STRING مدعوم. | “options “Optional |
مثال للتوضيح:-
<?php
$myJSONArr = '["Java", "Python", "PHP", "Html"]';
$myPHPArr = json_decode($myJSONArr);
var_dump($myPHPArr);
?>
💡 JSON Array
يمكنك أيضا تحويل المصفوفات Arrays الموجودة في PHP إلى JSON عند باستخدام دالة () json_encode كالتالى:-
<?php
$arr = array("One", "two", "three", "four", "five");
$myJSON = json_encode($arr);
echo $myJSON;
?>
مثال: استخدم () JSON.parse لتحويل JSON إلى كائن JavaScript:
xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
obj = JSON.parse(this.responseText);
for (y in obj) {
outputTxt += obj[y].name + "<br>";
}
document.getElementById("demo").innerHTML = outputTxt;
}
};
💡 PHP Database
– PHP هي لغة برمجة جانب الخادم ، يمكنك استخدامها للوصول إلى قاعدة البيانات.
تخيل أن لديك قاعدة بيانات على الخادم الخاص بك ، وتريد إرسال طلب إليها من المستخدم حيث تطلب الصفوف العشرين الأخيرة في جدول يسمى ( users ).
فيجب عليك عمل كائن JSON يصف اسم الجدول ، وأرقام الصفوف التي تريد إرجاعها.
قبل إرسال الطلب إلى الخادم ، قم بتحويل كائن JSON إلى سلسلة string وإرساله كمعلمة parameter إلى عنوان url الخاص بصفحة PHP.
مثال: استخدم () JSON.stringify لتحويل كائن JavaScript إلى JSON:
myObj = { "table":"users", "limit":15 };
dbParam = JSON.stringify(myObj);
xmlHttp = new XMLHttpRequest();
xmlHttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("demo").innerHTML = this.responseText;
}
};
xmlHttp.open("GET", "json_db.php?y=" + dbParam, true);
xmlHttp.send();
شرح المثال:
- تحديد كائن يحتوي على خاصية الجدول وخاصية الحد limit.
- تحويل الكائن إلى سلسلة JSON.
- إرسال طلب إلى ملف PHP ، مع سلسلة JSON كمعلمة.
- انتظر حتى يعود الطلب مع النتيجة (مثل JSON)
- عرض النتيجة المستلمة من ملف PHP.
وهذا ملف PHP:
<?php
header("Content-Type: application/json; charset=UTF-8");
$myObj = json_decode($_POST["y"], false);
$con = new PDO("myServer", "myUsername", "myPass", "options");
$stmt = $con->prepare("SELECT name FROM ? LIMIT ?"); // ( "Your Field", $myObj->tableName, $myObj->yourlimit )
$stmt->execute();
$output = $stmt->fetchAll();
echo json_encode($output);
?>
💡 [ PHP Method [ POST
- عند إرسال البيانات إلى الخادم ، غالبًا ما يكون من الأفضل استخدام طريقة HTTP POST.
- لإرسال طلبات AJAX باستخدام طريقة POST ، حدد (method & header ) الصحيح.
يجب أن تكون البيانات المرسلة إلى الخادم الآن وسيطة لأسلوب () send :
obj = { "table":"users", "limit":15 };
dbParam = JSON.stringify(obj);
xmlHttp = new XMLHttpRequest();
xmlHttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
myObj = JSON.parse(this.responseText);
for (y in myObj) {
outputTxt += myObj[y].name + "<br>";
}
document.getElementById("demo").innerHTML = outputTxt;
}
};
xmlHttp.open("POST", "json_db_post.php", true);
xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlHttp.send("y=" + dbParam);
الفرق الوحيد في ملف PHP هو طريقة الحصول على البيانات المنقولة.
ملف PHP:-
<?php
header("Content-Type: application/json; charset=UTF-8");
$myObj = json_decode($_POST["y"], false);
$con = new PDO("myServer", "myUsername", "myPass", "options");
$stmt = $con->prepare("SELECT name FROM ? LIMIT ?"); // ( "Your Field", $myObj->tableName, $myObj->yourlimit )
$stmt->execute();
$output = $stmt->fetchAll();
echo json_encode($output);
?>
Quote This Lesson:-
“ Computers are good at following instructions, but not at reading your mind. ”
– Donald Knuth
لا تنسي متابعتنا على مواقع التواصل الإجتماعى.
الإبلاغ عن خطأ
×إذا وجد خطأ وتريد الإبلاغ عن هذا الخطأ، أو إذا كنت تريد تقديم اقتراح على شىء معين، فلا تتردد في إرسال بريد إلكتروني إلينا:
info@albashmoparmeg.com
شكرًا لك على مساعدتك لنا!