استفاده از JSON در PHP
استفاده از JSON در PHP: معمولا از JSON برای خواندن داده از یک وب سرور و نمایش آن داده در صفحه وب استفاده میشود. در این مقاله به آموزش تبادل داده JSON میان کلاینت و سرور PHP میپردازیم. اگر آخرین پست از سری مقالات آموزش JSON را مشاهده نکردید اینجا کلیک کنید.
فایل PHP
زبان برنامه نویسی PHP شامل تعدادی توابع توکار برای کار کردن با JSON در آن میباشد. آبجکتها در PHP میتوانند با استفاده از تابع ()json.encode در PHP به فرمت JSON تبدیل شوند. به عنوان مثال:
<?php $myObj->name = "John"; $myObj->age = 30; $myObj->city = "New York"; $myJSON = json_encode($myObj); echo $myJSON; ?>
دیتابیس PHP
PHP یک زبان برنامهنویسی سمت سرور است و باید برای انجام عملیاتی که فقط سمت سرور میتوانند اجرا شوند، بکار برده شود؛ مانند دسترسی به یک دیتابیس. تصور کنید که شما یک دیتابیس روی یک سرور دارید و در آن جداول مشتریان (customers)، محصولات (products) و تامین کنندگان (suppliers) را دارید. اکنون میخواهید از سرور برای دریافت ۱۰ رکورد اول جدول مشتریان را درخواست کنید:
obj = { "table":"customers", "limit":10 }; dbParam = JSON.stringify(obj); xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { document.getElementById("demo").innerHTML = this.responseText; } }; xmlhttp.open("GET", "json_demo_db.php?x=" + dbParam, true); xmlhttp.send();
توضیح مثال بالا:
- یک آبجکت شامل خصوصیات جدول و limit تعریف کردیم.
- آبجکت را به JSON string تبدیل کردیم.
- به فایل PHP درخواست فرستادیم که به عنوان پارامتر شامل JSON string است.
- برای دریافت نتیجه درخواستی که کردیم (با فرمت JSON) صبر کردیم.
- نتایج دریافت شده از فایل PHP را نمایش دادیم.
پیشنهاد شگفت انگیز کدفرند،دسترسی به تمامی دوره های آموزشی کدفرند تنها با ۶۹ هزار تومان
به این فایل PHP نیز توجه کنید:
<?php header("Content-Type: application/json; charset=UTF-8"); $obj = json_decode($_GET["x"], false); $conn = new mysqli("myServer", "myUser", "myPassword", "Northwind"); $stmt = $conn->prepare("SELECT name FROM ? LIMIT ?"); $stmt->bind_param("ss", $obj->table, $obj->limit); $stmt->execute(); $result = $stmt->get_result(); $outp = $result->fetch_all(MYSQLI_ASSOC); echo json_encode($outp); ?>
توضیح مثال بالا:
- با استفاده از تابع ()json_decode در PHP، درخواست را به یک آبجکت تبدیل کردیم.
- یه دیتابیس متصل شدیم و سپس یک آرایه با داده request شده پر کردیم.
- آرایه را به یک آبجکت اضافه کردیم و سپس با استفاده از تابع ()json_decode با فرمت JSON آبجکت را return کردیم.
بررسی نتیجه را با حلقه تکرار
نتیجه دریافت شده از فایل PHP را به آبجکت جاوااسکریپت (یا در این مثال به آرایه جاااسکریپت) تبدیل کنید:
xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { myObj = JSON.parse(this.responseText); for (x in myObj) { txt += myObj[x].name + "<br>"; } document.getElementById("demo").innerHTML = txt; } };
متد POST در PHP
برای ارسال داده به یک سرور، معمولا بهترین راه، استفاده از متد HTTP POST میباشد. برای ارسال درخواست AJAX با استفاده از متد POST، متد را مشخص کرده و هدر را تصحیح کنید. داده ارسال شده ه سرور، اکنون باید یک آرگومان برای متد ()send باشد. به مثال زیر توجه کنید:
obj = { "table":"customers", "limit":10 }; dbParam = JSON.stringify(obj); xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { myObj = JSON.parse(this.responseText); for (x in myObj) { txt += myObj[x].name + "<br>"; } document.getElementById("demo").innerHTML = txt; } }; xmlhttp.open("POST", "json_demo_db_post.php", true); xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xmlhttp.send("x=" + dbParam);
تنها تفاوت در فایل PHP، متدی است که برای دریافت داده از آن استفاده میشود.
<?php header("Content-Type: application/json; charset=UTF-8"); $obj = json_decode($_POST["x"], false); $conn = new mysqli("myServer", "myUser", "myPassword", "Northwind"); $stmt = $conn->prepare("SELECT name FROM ? LIMIT ?"); $stmt->bind_param("ss", $obj->table, $obj->limit); $stmt->execute(); $result = $stmt->get_result(); $outp = $result->fetch_all(MYSQLI_ASSOC); echo json_encode($outp); ?>
در این مقاله به بررسی استفاده از JSON در PHP پرداختیم. این مقاله آخرین قسمت از سری مقالات آموزش JSON در کدفرند میباشد. برای دسترسی به اولین بخش از سری مقالات آموزش JSON در کدفرند، اینجا کلیک کنید.
«
برچسب:codefriend, js, JSON, node, nodeJs, PHP, server, web, آموزش_JSON, آموزش_php, بلاگ, جاوااسکریپت, جیسون, کدفرند