본문 바로가기
PHP/PHP and AJAX

PHP AJAX XML 연동

by 진격의 파파 2013. 7. 22.
반응형

 

이번장에서는 PHP AJAX XML 연동에 대해서 알아보겠습니다.  

 

PHP 구문에 AJAX를 이용해서 XML 데이터를 불러들이는 방식입니다. 이전 포스팅에서는  DB를 불러들이는 방식이었는데  DB 대신 XML 데이터를 가지고 온다고 생각하면 되겠습니다.

 

예제를 보면서 설명드리겠습니다. html 파일 1, ajax 파일 1, xml 파일 1 이렇게 총 3개의 파일이 필요합니다.

 

관련예제

HTML 파일

------ html.php ------

<html>
 <head>
 <script>
 function showNAME(str)
 {
 if (str=="")
   {
   document.getElementById("txtHint").innerHTML="";
   return;
   }
 if (window.XMLHttpRequest)
   {
 

   // code for IE7+, Firefox, Chrome, Opera, Safari
   xmlhttp=new XMLHttpRequest();
   }
 else
   {
 

   // code for IE6, IE5
   xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
   }
 xmlhttp.onreadystatechange=function()
   {
   if (xmlhttp.readyState==4 && xmlhttp.status==200)
     {
     document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
     }
   }
 xmlhttp.open("GET","ajax_php.php?q="+str,true);
 xmlhttp.send();
 }
 </script>
 </head>
 <body>
 

 <form>
 Select a CD:
 <select name="cds" onchange="showNAME(this.value)">
 <option value="">Select NAME : </option>
 <option value="Lee Bo Young">Lee Bo Young</option>
 <option value="Um Ji Won">Um Ji Won</option>
 <option value="Lee Min Jeong">Lee Min Jeong</option>
 <option value="O Ji Eun">O Ji Eun</option>
 <option value="Su Ji">Su Ji</option>
 <option value="I U">I U</option>
 </select>
 </form>
<div id="txtHint"><b>Name info will be listed here...</b></div>

 </body>
 </html>

// 이름을 선택하면 이름에 대한 정보가 나옵니다.

 

AJAX 파일

------ ajax.php ------

<?php
 $q=$_GET["q"];

 $xmlDoc = new DOMDocument();
 $xmlDoc->load("xml.xml");

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

 for ($i=0; $i<=$x->length-1; $i++) {
 if ($x->item($i)->nodeType==1)   {
   if ($x->item($i)->childNodes->item(0)->nodeValue == $q) {
     $y=($x->item($i)->parentNode);
     }
   }
 }
 

 

 $cd=($y->childNodes);

 for ($i=0;$i<$cd->length;$i++) { 
 if ($cd->item($i)->nodeType==1)  {
   echo("<b>" . $cd->item($i)->nodeName . ":</b> ");
   echo($cd->item($i)->childNodes->item(0)->nodeValue);
   echo("<br>");
   }
 }
 ?>

//xml.xml 파일을 불러들여서 선택된 $q 값과 xml의 값을 비교하여 같은 정보를 가져옵니다.

 

XML 파일

------ ajax_php.xml ------

<?xml version="1.0" encoding="ISO-8859-1"?>

<!-- Edited by XMLSpy® -->
<CATALOG>
 <CD>
  <JOB>Telent</JOB>
  <ARTIST>Lee Bo Young</ARTIST>
  <HOMETOWN>In Cheon</HOMETOWN>
  <BODY>168cm, 48kg</BODY>
  <BIRTH>1979. 1. 12</BIRTH>
 </CD>
 <CD>
  <JOB>Telent</JOB>
  <ARTIST>Um Ji Won</ARTIST>
  <HOMETOWN>DaeGu</HOMETOWN>
  <BODY>170cm, 48kg</BODY>
  <BIRTH>1977. 12. 25</BIRTH>
 </CD>
 <CD>
  <JOB>Telent</JOB>
  <ARTIST>Lee Min Jeong</ARTIST>
  <HOMETOWN>Seoul</HOMETOWN>
  <BODY>167cm, 49kg</BODY>
  <BIRTH>1982. 2. 16</BIRTH>
 </CD>
 <CD>
  <JOB>Telent</JOB>
  <ARTIST>O Ji Eun</ARTIST>
  <HOMETOWN>Seoul</HOMETOWN>
  <BODY>165cm</BODY>
  <BIRTH>1990</BIRTH>
 </CD>
 <CD>
  <JOB>Singer</JOB>
  <ARTIST>Su Ji</ARTIST>
  <HOMETOWN>GwangJu</HOMETOWN>
  <BODY>168cm, 47kg</BODY>
  <BIRTH>1994. 10. 10</BIRTH>
 </CD>
 <CD>
  <JOB>Singer</JOB>
  <ARTIST>I U</ARTIST>
  <HOMETOWN>Seoul</HOMETOWN>
  <BODY>161.8cm, 44kg</BODY>
  <BIRTH>1993. 5. 16</BIRTH>
 </CD>
</CATALOG>

// 여자연예인 XML 정보입니다. 이렇게 하면 더 쉽게 다가오지 않을까 해서 일부러 여자 연예인을 예로 들어봤습니다.

 

위 3개의 파일이 연동되어 실시간 XML 파일의 정보를 가져옵니다.

 

 

 

 

예제를 직접 코딩해보고 응용을 해보기 바랍니다. 개발자는 계속적인 학습이 없으면 언제든지 도태될 수 있습니다.

 

혹시 오타 또는 오류 발견시 댓글, 쪽지 주시면 바로 수정해놓겠습니다.

 

 

반응형

'PHP > PHP and AJAX' 카테고리의 다른 글

PHP AJAX RSS Reader 구문  (0) 2013.07.24
PHP AJAX Live Search 구문  (0) 2013.07.23
PHP AJAX 데이터베이스 연동  (9) 2013.07.19
PHP AJAX 구문  (0) 2013.07.18