PHP এবং AJAX responseXML ইনস্ট্যান্স

AJAX 可用于以 XML 返回数据库信息。

AJAX Database 转 XML 实例 (测试说明:该实例功能未实现)

নিচের AJAX উদাহরণে, আমরা প্রমাণ করব যে একটি নেটওয়ার্ক কাজের মাধ্যমে একটি MySQL ডাটাবেস থেকে তথ্য কিভাবে পড়া যায়, তা একটি XML ডকুমেন্টে রূপান্তরিত হয়, এবং এই ডকুমেন্টটিকে বিভিন্ন স্থানে দেখানো যায়。

এই উদাহরণটি "PHP AJAX Database" নামক পূর্ববর্তী শিক্ষণমূলক উদাহরণের সাথে খুবই সমান, কিন্তু একটি বড় পার্থক্য আছে: এই উদাহরণে, আমরা PHP পাতাটি থেকে responseXML ফাংশন ব্যবহার করে XML ফর্মের ডাটা পাই。

XML ডকুমেন্টটিকে প্রতিক্রিয়া হিসাবে গ্রহণ করতে আমরা পারি, যার ফলে আমরা পৃষ্ঠার বিভিন্ন স্থানগুলিতে তথ্য অপদাত্ত করতে পারি, না তার মধ্যেই একটি PHP আউটপুট গ্রহণ করে তা দেখানো হবে。

এই উদাহরণে, আমরা ডাটাবেস থেকে পাওয়া তথ্য ব্যবহার করে বহুবচন টেক্সট ইউনিটগুলি অপদাত্ত করব

ড্রপডাউন লিস্টে একটি নাম নির্বাচন করুন

একজন ব্যবহারকারী বাছাই করুন:

 

এই সারিটি চারটি উপাদান দ্বারা গঠিত:

  • MySQL ডাটাবেস
  • সহজ HTML ফর্ম
  • JavaScript
  • PHP পৃষ্ঠা

ডাটাবেস

এই উদাহরণে ব্যবহৃত ডাটাবেস এইরকম দেখায়:

id প্রথম নাম পরিবারের নাম বয়স বাড়িতে চাকরি
1 Peter Griffin 41 Quahog Brewery
2 Lois Griffin 40 Newport পিয়ানো শিক্ষক
3 Joseph Swanson 39 Quahog পুলিশ অফিসার
4 Glenn Quagmire 41 Quahog Pilot

HTML ফর্ম

উপরোক্ত উদাহরণটি একটি সহজ HTML ফর্ম এবং JavaScript-এর লিঙ্কটি অন্তর্ভুক্ত করে:

<html>
<head>
<script src="responsexml.js"></script>
</head>
<body>
<form> 
একজন ব্যবহারকারী নির্বাচন করুন:
<select name="users" onchange="showUser(this.value)">
<option value="1">Peter Griffin</option>
<option value="2">Lois Griffin</option>
<option value="3">Glenn Quagmire</option>
<option value="4">Joseph Swanson</option>
</select>
</form>
<h2>
<span id="firstname"></span> <span id="lastname"></span>
</h2>
<span id="job"></span>
<div style="text-align: right">
<span id="age_text"></span>
<span id="age"></span>
<span id="hometown_text"></span>
<span id="hometown"></span>
</div>
</body>
</html>

উদাহরণ ব্যাখ্যা - HTML ফর্ম

  • HTML ফর্ম একটি ড্রপডাউন লিস্ট, যার name অ্যাট্রিবিউটের মান "users" এবং অপশনের মান ডাটাবেসের id ফিল্ডের সাথে মান মিলেছে
  • ফর্মের নিচে কয়েকটি <span> ইলাকা আছে, যা আমরা প্রাপ্ত বিভিন্ন মানের প্রতিস্থাপক হিসাবে ব্যবহার করি
  • যখন ব্যবহারকারী নির্দিষ্ট অপশন চিহ্নিত করে, function "showUser()" কার্যকর হয়। এই ফাংশনের কার্যকরীতা "onchange" ইভেন্ট দ্বারা স্পুর্ত করা হয়

অর্থাৎ, যখন ব্যবহারকারী ড্রপডাউন লিস্টের মান পরিবর্তন করে, function showUser() কার্যকর হয় এবং নির্দিষ্ট <span> ইলাকায় ফলাফল প্রদর্শন করে。

JavaScript

এটা ফাইল "responsexml.js"-এ সংরক্ষিত JavaScript কোড:

var xmlHttp
function showUser(str)
 { 
 xmlHttp=GetXmlHttpObject()
 if (xmlHttp==null)
  {
  alert ("Browser does not support HTTP Request")
  return
  } 
 var url="responsexml.php"
 url=url+"?q="+str
 url=url+"&sid="+Math.random()
 xmlHttp.onreadystatechange=stateChanged 
 xmlHttp.open("GET",url,true)
 xmlHttp.send(null)
 }
function stateChanged() 
{ 
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
{
 xmlDoc=xmlHttp.responseXML;
 document.getElementById("firstname").innerHTML=
 xmlDoc.getElementsByTagName("firstname")[0].childNodes[0].nodeValue;
 document.getElementById("lastname").innerHTML=
 xmlDoc.getElementsByTagName("lastname")[0].childNodes[0].nodeValue;
 document.getElementById("job").innerHTML=
 xmlDoc.getElementsByTagName("job")[0].childNodes[0].nodeValue;
 document.getElementById("age_text").innerHTML="Age: ";
 document.getElementById("age").innerHTML=
 xmlDoc.getElementsByTagName("age")[0].childNodes[0].nodeValue;
 document.getElementById("hometown_text").innerHTML="<br/>From: ";
 document.getElementById("hometown").innerHTML=
 xmlDoc.getElementsByTagName("hometown")[0].childNodes[0].nodeValue;
 }
}
function GetXmlHttpObject()
 { 
 var objXMLHttp = null
 if (window.XMLHttpRequest)
  {
  objXMLHttp = new XMLHttpRequest()
  }
 else if (window.ActiveXObject)
  {
  objXMLHttp = new ActiveXObject("Microsoft.XMLHTTP")
  }
 return objXMLHttp
 }

উদাহরণ ব্যাখ্যা:

showUser() এবং GetXmlHttpObject ফাংশন এবং PHP এবং AJAX MySQL ডাটাবেস ইনস্ট্যান্স এই ধাপটির উদাহরণটি একই। আপনি তার সংশ্লিষ্ট ব্যাখ্যা পড়তে পারেন。

stateChanged() ফাংশন

যদি ড্রপডাউন লিস্টের নির্বাচিত আইটেম থাকে, তবে এই ফাংশন চালাব:

  1. responseXML ফাংশন ব্যবহার করে, "xmlDoc" বদলে একটি XML নথিকে নির্দিষ্ট করুন
  2. এই XML নথিটি থেকে ডাটা নিয়ে এবং তা সঠিক "span" ইলেমেন্টে রাখুন

PHP পৃষ্ঠা

এই জাভাস্ক্রিপ্ট-এর মাধ্যমে বুলটিন করা সার্ভার পৃষ্ঠা, "responsexml.php" নামক একটি সাধারণ PHP ফাইল।

এই পৃষ্ঠা PHP-এ লেখা এবং MySQL ডাটাবেস ব্যবহার করে।

কোডটি একটি এসকিউএল (SQL) কোডকে চালাব এবং ফলাফলকে XML নথিতে ফিরিয়ে দেবে:

<?php
header('Content-Type: text/xml');
header("Cache-Control: no-cache, must-revalidate");
//A date in the past
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
$q = $_GET["q"];
$con = mysql_connect('localhost', 'peter', 'abc123');
if (!$con)
 {
 die('Could not connect: ' . mysql_error());
 }
mysql_select_db("ajax_demo", $con);
sql="SELECT * FROM user WHERE id = ".$q."";
$result = mysql_query($sql);
echo '<?xml version="1.0" encoding="ISO-8859-1"?>
<person>';
while($row = mysql_fetch_array($result))
 {
 echo "<firstname>" . $row['FirstName'] . "</firstname>";
 echo "<lastname>" . $row['LastName'] . "</lastname>";
 echo "<age>" . $row['Age'] . "</age>";
 echo "<hometown>" . $row['Hometown'] . "</hometown>";
 echo "<job>" . $row['Job'] . "</job>";
 }
echo "</person>";
mysql_close($con);
?>

উদাহরণ ব্যাখ্যা:

জাভাস্ক্রিপ্ট দ্বারা PHP পৃষ্ঠার কোনও কোড প্রেরণ করা হলে ঘটবে:

  • PHP ডকুমেন্টের content-type 'text/xml' হিসাবে সংজ্ঞায়িত করা হয়
  • PHP ডকুমেন্টটি 'no-cache' হিসাবে সংজ্ঞায়িত করা হয়, যাতে ক্যাশ প্রতিরোধ করা যায়
  • HTML পৃষ্ঠা দ্বারা পাঠানো ডাটা দ্বারা $q বদলীর সংযোজন
  • PHP দ্বারা MySQL সার্ভারের সাথে সংযোগ খোলুন
  • নির্দিষ্ট id-র সঙ্গে 'user' খুঁজুন
  • ডাটা XML ডকুমেন্ট হিসাবে আউটপুট