PHP 튜토리얼

PHP 홈 PHP 소개 PHP 설치 PHP 구문 PHP 주석 PHP 변수 PHP 에코 / 인쇄 PHP 데이터 유형 PHP 문자열 PHP 숫자 PHP 수학 PHP 상수 PHP 연산자 PHP If...Else...Elseif PHP 스위치 PHP 루프 PHP 함수 PHP 배열 PHP 슈퍼글로벌 PHP 정규식

PHP 양식

PHP 양식 처리 PHP 양식 유효성 검사 PHP 양식 필요 PHP 양식 URL/이메일 PHP 양식 완성

PHP 고급

PHP 날짜 및 시간 PHP 포함 PHP 파일 처리 PHP 파일 열기/읽기 PHP 파일 생성/쓰기 PHP 파일 업로드 PHP 쿠키 PHP 세션 PHP 필터 PHP 필터 고급 PHP 콜백 함수 PHP JSON PHP 예외

PHP OOP

PHP OOP란? PHP 클래스/객체 PHP 생성자 PHP 소멸자 PHP 액세스 수정자 PHP 상속 PHP 상수 PHP 추상 클래스 PHP 인터페이스 PHP 특성 PHP 정적 메서드 PHP 정적 속성 PHP 네임스페이스 PHP 반복 가능

MySQL 데이터베이스

MySQL 데이터베이스 MySQL 연결 MySQL 생성 DB MySQL 테이블 생성 MySQL 삽입 데이터 MySQL 마지막 ID 가져오기 MySQL은 다중 삽입 MySQL 준비 MySQL 선택 데이터 MySQL 어디 MySQL 주문 기준 MySQL 데이터 삭제 MySQL 업데이트 데이터 MySQL 제한 데이터

PHP XML

PHP XML 파서 PHP SimpleXML 파서 PHP SimpleXML - 가져오기 PHP XML 국외 거주자 PHP XML DOM

PHP - AJAX

AJAX 소개 AJAX PHP AJAX 데이터베이스 AJAX XML AJAX 라이브 검색 AJAX 투표

PHP 예제

PHP 예제 PHP 컴파일러 PHP 퀴즈 PHP 연습 PHP 인증서

PHP 참조

PHP 개요 PHP 배열 PHP 캘린더 PHP 날짜 PHP 디렉토리 PHP 오류 PHP 예외 PHP 파일 시스템 PHP 필터 PHP FTP PHP JSON PHP 키워드 PHP 라이브러리 XML PHP 메일 PHP 수학 PHP 기타 PHP MySQLi PHP 네트워크 PHP 출력 제어 PHP 정규식 PHP SimpleXML PHP 스트림 PHP 문자열 PHP 변수 처리 PHP XML 파서 PHP 우편번호 PHP 시간대

PHP 예제 - AJAX 라이브 검색


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 파일

위 자바스크립트가 호출한 서버의 페이지는 "livesearch.php"라는 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에서 보낸 텍스트에서 일치 항목을 찾습니다.
  • "$response" 변수에 올바른 URL과 제목을 설정합니다. 둘 이상의 일치 항목이 발견되면 모든 일치 항목이 변수에 추가됩니다.
  • 일치하는 항목이 없으면 $response 변수가 "제안 없음"으로 설정됩니다.