บทช่วยสอนPHP

PHP HOME แนะนำ PHP การติดตั้ง PHP PHP ไวยากรณ์ ความคิดเห็น PHP ตัวแปร PHP PHP Echo / พิมพ์ ประเภทข้อมูล PHP PHP Strings หมายเลข PHP PHP คณิตศาสตร์ ค่าคงที่ PHP ตัวดำเนินการ PHP PHP If...Else...Elseif PHP Switch PHP Loops ฟังก์ชัน PHP PHP Arrays PHP Superglobals PHP RegEx

แบบฟอร์มPHP

การจัดการแบบฟอร์ม PHP การตรวจสอบแบบฟอร์ม PHP ต้องใช้แบบฟอร์ม PHP URL แบบฟอร์ม PHP/อีเมล แบบฟอร์ม PHP เสร็จสมบูรณ์

PHPขั้นสูง

วันที่และเวลา PHP รวม PHP การจัดการไฟล์ PHP ไฟล์ PHP เปิด/อ่าน สร้าง/เขียนไฟล์ PHP อัพโหลดไฟล์ PHP คุกกี้ PHP PHP Sessions ตัวกรอง PHP ตัวกรอง PHP ขั้นสูง ฟังก์ชันเรียกกลับของ PHP PHP JSON ข้อยกเว้น PHP

PHP OOP

PHP OOP คืออะไร คลาส PHP/วัตถุ ตัวสร้าง PHP PHP Destructor PHP Access Modifiers PHP Inheritance ค่าคงที่ PHP PHP Abstract Classes อินเทอร์เฟซ PHP PHP ลักษณะ PHP Static Methods PHP คุณสมบัติคงที่ PHP เนมสเปซ PHP Iterables

ฐานข้อมูลMySQL

ฐานข้อมูล MySQL MySQL Connect MySQL สร้าง DB MySQL สร้างตาราง MySQL แทรกข้อมูล MySQL รับ ID ล่าสุด MySQL แทรกหลายรายการ MySQL ที่เตรียมไว้ MySQL Select Data MySQL Where MySQL สั่งซื้อโดย MySQL ลบข้อมูล ข้อมูลอัพเดต MySQL MySQL Limit Data

PHP XML

PHP XML Parsers PHP SimpleXML Parser PHP SimpleXML - รับ PHP XML Expat PHP XML DOM

PHP - AJAX

บทนำ AJAX AJAX PHP ฐานข้อมูล AJAX AJAX XML AJAX ค้นหาสด AJAX โพล

ตัวอย่างPHP

ตัวอย่าง PHP PHP คอมไพเลอร์ แบบทดสอบ PHP แบบฝึกหัด PHP ใบรับรอง PHP

ข้อมูลอ้างอิงPHP

ภาพรวม PHP PHP Array ปฏิทิน PHP PHP วันที่ ไดเรกทอรี PHP ข้อผิดพลาด PHP ข้อยกเว้น PHP ระบบไฟล์ PHP ตัวกรอง PHP PHP FTP PHP JSON คีย์เวิร์ด PHP PHP Libxml PHP Mail PHP คณิตศาสตร์ PHP เบ็ดเตล็ด PHP MySQLi เครือข่าย PHP การควบคุมเอาต์พุต PHP PHP RegEx PHP SimpleXML PHP Stream PHP String การจัดการตัวแปร PHP PHP XML Parser PHP Zip เขตเวลา PHP

ตัวอย่าง PHP - AJAX Live Search


สามารถใช้ AJAX เพื่อสร้างการค้นหาที่เป็นมิตรต่อผู้ใช้และโต้ตอบได้มากขึ้น


AJAX ค้นหาสด

ตัวอย่างต่อไปนี้จะสาธิตการค้นหาแบบสด ซึ่งคุณจะได้รับผลการค้นหาในขณะที่คุณพิมพ์

การค้นหาแบบสดมีประโยชน์มากมายเมื่อเทียบกับการค้นหาแบบเดิม:

  • ผลลัพธ์จะแสดงเมื่อคุณพิมพ์
  • ผลลัพธ์จะแคบลงเมื่อคุณพิมพ์ต่อไป
  • หากผลลัพธ์แคบเกินไป ให้ลบอักขระเพื่อดูผลลัพธ์ที่กว้างขึ้น

ค้นหาหน้า W3Schools ในช่องป้อนข้อมูลด้านล่าง:

ผลลัพธ์ในตัวอย่างข้างต้นพบได้ในไฟล์ XML ( links.xml ) เพื่อให้ตัวอย่างนี้มีขนาดเล็กและเรียบง่าย มีผลลัพธ์เพียง 6 รายการเท่านั้น


ตัวอย่างที่อธิบาย - หน้า HTML

เมื่อผู้ใช้พิมพ์อักขระในช่องป้อนข้อมูลด้านบน ฟังก์ชัน "showResult()" จะถูกดำเนินการ ฟังก์ชั่นถูกทริกเกอร์โดยเหตุการณ์ "onkeyup":

<html>
<head>
<script>
function showResult(str) {
  if (str.length==0) {
    document.getElementById("livesearch").innerHTML="";
    document.getElementById("livesearch").style.border="0px";
    return;
  }
  var xmlhttp=new XMLHttpRequest();
  xmlhttp.onreadystatechange=function() {
    if (this.readyState==4 && this.status==200) {
      document.getElementById("livesearch").innerHTML=this.responseText;
      document.getElementById("livesearch").style.border="1px solid #A5ACB2";
    }
  }
  xmlhttp.open("GET","livesearch.php?q="+str,true);
  xmlhttp.send();
}
</script>
</head>
<body>

<form>
<input type="text" size="30" onkeyup="showResult(this.value)">
<div id="livesearch"></div>
</form>

</body>
</html>

คำอธิบายซอร์สโค้ด:

หากช่องป้อนข้อมูลว่างเปล่า (str.length==0) ฟังก์ชันจะล้างเนื้อหาของตัวยึดตำแหน่ง livesearch และออกจากฟังก์ชัน

หากช่องป้อนข้อมูลไม่ว่างเปล่า ฟังก์ชัน showResult() จะดำเนินการดังต่อไปนี้:

  • สร้างวัตถุ XMLHttpRequest
  • สร้างฟังก์ชันที่จะดำเนินการเมื่อการตอบสนองของเซิร์ฟเวอร์พร้อม
  • ส่งคำขอไปยังไฟล์บนเซิร์ฟเวอร์
  • สังเกตว่ามีการเพิ่มพารามิเตอร์ (q) ลงใน URL (พร้อมเนื้อหาของฟิลด์อินพุต)


ไฟล์ PHP

หน้าบนเซิร์ฟเวอร์ที่เรียกใช้โดย JavaScript ด้านบนเป็นไฟล์ PHP ชื่อ "livesearch.php"

ซอร์สโค้ดใน "livesearch.php" ค้นหาไฟล์ XML สำหรับชื่อที่ตรงกับสตริงการค้นหาและส่งคืนผลลัพธ์:

<?php
$xmlDoc=new DOMDocument();
$xmlDoc->load("links.xml");

$x=$xmlDoc->getElementsByTagName('link');

//get the q parameter from URL
$q=$_GET["q"];

//lookup all links from the xml file if length of q>0
if (strlen($q)>0) {
  $hint="";
  for($i=0; $i<($x->length); $i++) {
    $y=$x->item($i)->getElementsByTagName('title');
    $z=$x->item($i)->getElementsByTagName('url');
    if ($y->item(0)->nodeType==1) {
      //find a link matching the search text
      if (stristr($y->item(0)->childNodes->item(0)->nodeValue,$q)) {
        if ($hint=="") {
          $hint="<a href='" .
          $z->item(0)->childNodes->item(0)->nodeValue .
          "' target='_blank'>" .
          $y->item(0)->childNodes->item(0)->nodeValue . "</a>";
        } else {
          $hint=$hint . "<br /><a href='" .
          $z->item(0)->childNodes->item(0)->nodeValue .
          "' target='_blank'>" .
          $y->item(0)->childNodes->item(0)->nodeValue . "</a>";
        }
      }
    }
  }
}

// Set output to "no suggestion" if no hint was found
// or to the correct values
if ($hint=="") {
  $response="no suggestion";
} else {
  $response=$hint;
}

//output the response
echo $response;
?>

หากมีข้อความใดที่ส่งจาก JavaScript (strlen($q) > 0) สิ่งต่อไปนี้จะเกิดขึ้น:

  • โหลดไฟล์ XML ลงในวัตถุ XML DOM ใหม่
  • วนรอบองค์ประกอบ <title> ทั้งหมดเพื่อค้นหารายการที่ตรงกันจากข้อความที่ส่งจาก JavaScript
  • ตั้งค่า URL และชื่อที่ถูกต้องในตัวแปร "$response" หากพบรายการที่ตรงกันมากกว่าหนึ่งรายการ รายการที่ตรงกันทั้งหมดจะถูกเพิ่มลงในตัวแปร
  • หากไม่พบรายการที่ตรงกัน ตัวแปร $response จะถูกตั้งค่าเป็น "ไม่มีข้อเสนอแนะ"