array() - 배열을 생성함 

array_change_key_case() — 배열 안의 모든 키를 변경
array_chunk() — 배열을 조각으로 나누기
array_combine() — 키를 위한 배열과 값을 위한 배열을 사용하여 배열을 생성
array_count_values() — 배열 값의 수를 셉니다
array_diff_assoc() — 추가적인 인덱스 확인과 함께 배열 차이를 계산
array_diff_key() — 배열을 비교하고 그 차이값을 반환함
array_diff_uassoc() — Computes the difference of arrays with additional index check which is performed by a user supplied callback function
array_diff_ukey() — Computes the difference of arrays using a callback function on the keys for comparison
array_diff() — 배열 차이를 계산
array_fill_keys() — Fill an array with values, specifying keys
array_fill() — 값으로 배열 채우기
array_filter() — 콜백 함수를 사용하여 배열 원소를 필터
array_flip() — 배열 안의 모든 키를 각 키의 연관 값과 교체
array_intersect_assoc() — 인덱스 검사과 함께 배열의 교집합을 계산
array_intersect_key() — Computes the intersection of arrays using keys for comparison
array_intersect_uassoc() — Computes the intersection of arrays with additional index check, compares indexes by a callback function
array_intersect_ukey() — Computes the intersection of arrays using a callback function on the keys for comparison
array_intersect() — 배열의 교집합을 계산
array_key_exists() — 주어진 키와 인덱스가 배열에 존재하는지 확인
array_keys() — 배열의 모든 키를 반환
array_map() — Applies the callback to the elements of the given arrays
array_merge_recursive() — 두개 이상의 배열을 재귀적으로 병합
array_merge() — 하나 이상의 배열을 병합
array_multisort() — 여러 배열이나 다차원 배열 정렬
array_pad() — 지정한 길이만큼 특정 값으로 배열 채우기
array_pop() — 배열의 마지막 원소 빼내기
array_product() — Calculate the product of values in an array
array_push() — 배열의 끝에 하나 이상의 원소를 넣는다
array_rand() — 배열에서 하나 이상의 임의 원소를 가져옴
array_reduce() — 콜백 함수를 사용하여 배열을 반복적으로 단일 값으로 축소
array_replace_recursive() — Replaces elements from passed arrays into the first array recursively
array_replace() — Replaces elements from passed arrays into the first array
array_reverse() — 원소를 역순으로 가지는 배열을 반환
array_search() — 주어진 값으로 배열을 검색하여 성공시 해당하는 키를 반환
array_shift() — 배열의 맨 앞에 있는 원소를 시프트
array_slice() — 배열의 일부를 추출
array_splice() — 배열의 일부를 삭제하고, 그 위치를 다른 내용으로 대체
array_sum() — 배열 값들의 합을 계산
array_udiff_assoc() — Computes the difference of arrays with additional index check, compares data by a callback function
array_udiff_uassoc() — Computes the difference of arrays with additional index check, compares data and indexes by a callback function
array_udiff() — Computes the difference of arrays by using a callback function for data comparison
array_uintersect_assoc() — Computes the intersection of arrays with additional index check, compares data by a callback function
array_uintersect_uassoc() — Computes the intersection of arrays with additional index check, compares data and indexes by a callback functions
array_uintersect() — Computes the intersection of arrays, compares data by a callback function
array_unique() — 배열에서 중복된 값을 제거
array_unshift() — 배열의 맨 앞에 하나 이상의 원소를 첨가
array_values() — 배열의 모든 값을 반환
array_walk_recursive() — Apply a user function recursively to every member of an array
array_walk() — 배열의 각 원소에 대해서 특정 함수를 적용
arsort() — 배열을 내림차순 정렬하고 인덱스의 상관관계를 유지
asort() — 배열을 정렬하고 인덱스 상관 관계를 유지
compact() — 변수와 그 값을 가지는 배열 생성
count() — 배열의 모든 원소나, 객체의 프로퍼티 수를 셉니다
current() — 배열의 현재 원소를 반환
each() — 배열에서 현재 키와 값 쌍을 반환하고 배열 커서를 전진
end() — 배열 내부 포인터가 마지막 원소를 가리키게 설정
extract() — 배열에서 현재 심볼 테이블로 변수를 입력
in_array() — 값이 배열 안에 존재하는지 확인
key() — 배열에서 키를 가져옵니다
krsort() — 키에 의한 배열 역순 정렬
ksort() — 키에 의한 배열 정렬
list() — 배열처럼 변수에 할당
natcasesort() — "자연순" 알고리즘으로 대소문자를 구분하지 않고 배열 정렬
natsort() — "자연순" 알고리즘으로 배열 정렬
next() — 배열의 내부 배열 포인터를 전진
pos() — 별칭: current
prev() — 내부 배열 포인터를 후진
range() — 원소의 범위를 가지는 배열 생성
reset() — 배열의 내부 포인터를 첫 원소로 설정
rsort() — 역순으로 배열 정렬
shuffle() — 배열을 섞습니다
sizeof() — 별칭: count
sort() — 배열 정렬
uasort() — 사용자 정의 비교 함수로 배열을 정렬하고 인덱스 연관성을 유지
uksort() — 사용자 정의 비교 함수를 사용하여 키에 의한 배열 정렬
usort() — 사용자 정의 비교 함수를 사용하여 값에 의한 배열 정렬  

 

영문으로 설명이 들어있는 부분이 있는데 솔직히 저도 실무하면서 사용했던 적이 거의 없던 부분이라 구글링해서 억지로 해석할수도 있겠지만 공부하는 차원에서 직접 해당 함수에 대한 설명을 찾는것도 공부에 도움되지 않을까 생각합니다. 

'PHP > PHP Reference' 카테고리의 다른 글

PHP 5 Array 함수  (0) 2013.07.25
jQuery Event Reference  (0) 2013.05.30
Posted by 진격의 파파

댓글을 달아 주세요

 

 

이번장에서는 PHP AJAX RSS Reader 구문에 대해서 알아볼텐데요. 보통 뉴스기사, 블로그 등의 내용을 가져와 다른곳에 노출시키고 싶을때 많이들 사용합니다.  정말 재미있고 유용한 구문이며, 아래 나오는 예제를 잘 살펴보길 바랍니다.

 

RSS(Rich Site Summary) 의 사전적 의미  :  포털사이트나 블로그와 같이 컨텐츠 업데이트가 자주 일어나는 웹사이트에서, 업데이트 된 정보를 자동적으로 쉽게 사용자들에게 제공하기 위한 서비스. 사이트가 제공하는 RSS 주소를 소정의 RSS Reader 프로그램에 등록하기만 하면, 업데이트된 정보를 찾기 위해 매번 로그인하거나 방문할 필요 없이 자동적으로 이들을 확인하고 이용할 수 있는 편의성이 있습니다. RSS를 운영자와 사용자의 입장에서 보았을 때, 서비스 운영자는 신규 또는 추천 정보를 고객에게 보다 손쉽게 제공할 수 있으며 사용자는 관심있는 정보를 쉽고 빠르게 조회할 수 있습니다. 

 

 

예제구문

------ rss.html ------

<html>
 <head>
 <script>
 function showRSS(str)
 {
 if (str.length==0)
   {
   document.getElementById("rssOutput").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("rssOutput").innerHTML=xmlhttp.responseText;
     }
   }
 xmlhttp.open("GET","rss.php?q="+str,true);
 xmlhttp.send();
 }
 </script>
 </head>
 <body>

 <form>
 <select onchange="showRSS(this.value)">
 <option value="">RSS-선택하세요:</option>
 <option value="park">Park's blog</option>
 <option value="hani">한겨례 News</option>
 <option value="gyung">경향 News</option>
 <option value="jung">중앙일보 News</option>
 <option value="Google">Google News</option>
 </select>
 </form>
 <br>
 <div id="rssOutput">RSS의 내용이 이곳에 나옵니다.</div>
 </body>
 </html>

//  select  구문에서 블로그 또는 언론사를 선택하면 showRss() 함수를 타며, value 값이 rss.php 로 전달되게 됩니다. 그래서 선택한 rss의 내용이 화면에 나타나게 됩니다.

 

------- rss.php -------

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

 //$q 변수값을 비교하여 해당하는 rss 값을 보여줌
 if($q=="Google") {
  $xml=("
http://news.google.com/news?ned=us&topic=h&output=rss");
 } elseif($q=="hani") {
  $xml=("
http://www.hani.co.kr/rss/");
 } elseif($q=="gyung") {
  $xml=("
http://www.khan.co.kr/rss/rssdata/total_news.xml");
 } elseif($q=="jung") {
  $xml=("
http://rss.joinsmsn.com/joins_news_list.xml");
 } elseif($q=="park") {
  $xml=("
http://blog.rss.naver.com/makand123.xml");
 }

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

 //"<channel>"로 부터 값을 가져옴
 $channel=$xmlDoc->getElementsByTagName('channel')->item(0);
 $channel_title = $channel->getElementsByTagName('title')
 ->item(0)->childNodes->item(0)->nodeValue;
 $channel_link = $channel->getElementsByTagName('link')
 ->item(0)->childNodes->item(0)->nodeValue;
 $channel_desc = $channel->getElementsByTagName('description')
 ->item(0)->childNodes->item(0)->nodeValue;

 //output elements from "<channel>"
 echo("<p><a href='" . $channel_link
   . "'>" . $channel_title . "</a>");
 echo("<br>");
 echo($channel_desc . "</p>");

 //"<item>" 요소를 가져와 출력함
 $x=$xmlDoc->getElementsByTagName('item');
 for ($i=0; $i<=2; $i++)
   {
   $item_title=$x->item($i)->getElementsByTagName('title')
   ->item(0)->childNodes->item(0)->nodeValue;
   $item_link=$x->item($i)->getElementsByTagName('link')
   ->item(0)->childNodes->item(0)->nodeValue;
   $item_desc=$x->item($i)->getElementsByTagName('description')
   ->item(0)->childNodes->item(0)->nodeValue;

   echo ("<p><a href='" . $item_link
   . "'>" . $item_title . "</a>");
   echo ("<br>");
   echo ($item_desc . "</p>");
   }
 ?>

// 위 두개의 구문을 이용하여 블로그 및 뉴스기사의 내용을 RSS로 가져올수 있게됩니다. 소스를 복사해서 테스트 해보거나 직접 코딩하면서 테스트 해보시기 바랍니다~

 

 

 // 위 그림은 제 블로그 rss를 가져온것이고 한겨례, 경향, 중앙 등을 선택하면 그에 해당하는 기사를 가져오게 됩니다.

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

PHP AJAX RSS Reader 구문  (0) 2013.07.24
PHP AJAX Live Search 구문  (0) 2013.07.23
PHP AJAX XML 연동  (0) 2013.07.22
PHP AJAX 데이터베이스 연동  (9) 2013.07.19
PHP AJAX 구문  (0) 2013.07.18
Posted by 진격의 파파

댓글을 달아 주세요

 

 

이번장에서는 PHP 에서 AJAX를 이용하여 Live Search 즉 실시간검색에 대해서 알아보겠습니다.   

 

여러분들이 구글이나 네이버에서  검색어를 치다보면 한글자 아니 자음 하나만 키보드를 두드려도 하단에 관련 검색어들이 뜨는것을 보았을텐데 그러한 구문과 비슷한 구문이라고 생각하면 되겠습니다.

 

 

그림처럼 "a" 라고 치면 a가 해당하는 제목을 불러와 하단에 리스팅합니다.

 

위와 같은 구문을 만들기 위해 우선 3개의 파일이 필요합니다. form 구문이 들어있는 html 또는 php 파일과 xml 파일 그리고 ajax 를 이용한 php 파일이 필요합니다.

 

xml 파일  -------- link.xml --------

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

<!-- Edited by XMLSpy® -->
<pages>
 <link>
  <title>Google</title>
  <url></url>">http://www.google.com</url>
 </link>
 <link>
  <title>Naver</title>
  <url></url>">http://www.naver.com</url>
  </link>
 <link>
  <title>Daum</title>
  <url></url>">http://www.daum.net</url>
 </link>
 <link>
  <title>Nate</title>
  <url></url>">http://www.nate.com</url>
 </link>
 <link>
  <title>Park's blog</title>
  <url></url>">http://blog.naver.com/makand123</url>
 </link>
 <link>
  <title>Zum</title>
  <url></url>">http://www.zum.com/</url>
 </link>
</pages>

// xml 파일은 원하는 내용으로 꾸며보기 바랍니다.

 

 

Form 구문이 있는 html 또는 php 파일 ------- live.html -------

<html>
 <head>
 <script>
 function showResult(str) {
 if (str.length==0) { // 검색글자의 내용이 없으면 검색 박스를 없앱니다.
   document.getElementById("livesearch").innerHTML="";
   document.getElementById("livesearch").style.border="0px";
   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("livesearch").innerHTML=xmlhttp.responseText;
     document.getElementById("livesearch").style.border="1px solid #A5ACB2";
   }
 }
 xmlhttp.open("GET","livesearch.php?q="+str,true);  // ajax 파일연동
 xmlhttp.send();
 }
 </script>
 </head>
 <body>
 

 <form> 

<!-- 텍스트 박스에 마우스 onkeyup 이벤트가 발생시 showResult() 함수로 이동하라 -->


 <input type="text" size="30" onkeyup="showResult(this.value)">
 


 <div id="livesearch"></div>
 </form>
 

 </body>
 </html>

 

 

ajax구문이 들어있는 php 파일 ------- livesearch.php -------

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

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

 // q의 매개변수 값을 가져옴
 $q=$_GET["q"];

 // $q 변수값이 있는지 여부를 체크
 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>";
         }
       }
     }
   }
 }

 // 만약 xml 데이터에 검색값의 내용이 없을 경우 "no suggestion" 을 출력함
 if ($hint=="")  {
   $response="no suggestion";
 } else {
   $response=$hint;
 }

 // $response 값을 출력하라
 echo $response;
 ?>

 

이렇게 3개의 파일이 연동되면 위 그림처럼 실시간 검색의 느낌을 줄 수 있습니다. 구글, 네이버 크게 다를거 없습니다. 많이 응용해보고 멋진 소스를 개발해보기 바랍니다.

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

그럼 오늘도 즐거운 하루 되세요 ^^

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

PHP AJAX RSS Reader 구문  (0) 2013.07.24
PHP AJAX Live Search 구문  (0) 2013.07.23
PHP AJAX XML 연동  (0) 2013.07.22
PHP AJAX 데이터베이스 연동  (9) 2013.07.19
PHP AJAX 구문  (0) 2013.07.18
Posted by 진격의 파파

댓글을 달아 주세요

 

 

이번장에서는 PHP SimpleXML 에 대해서 포스팅 하겠습니다. 

 

SimpleXML 는 PHP5의 새로운 기능입니다.

 

SimpleXML 라는 이름에서 알수 있듯이 XML 요소의 이름과 텍스트를 얻는 가장 간단한 방법입니다.

 

설치라던지 인스톨 작업은 별도로 없고 PHP 5.0 이상이라면 사용가능합니다.

 

우선 간단한 예제를 살펴보겠습니다.

 

------ test.xml ------

<?xml version="1.0" encoding="utf-8"?>
<note>
<to>Park</to>
<from>Kim</from>
<heading> header contents !! </heading>
<body> Body contents !! </body>
</note>

// 위와 같은 xml 파일이 있다고 가정하고(아래 xml.php 와 같은 위치(폴더)에 있어야 함)

 

------ xml.php ------

<?php
 $xml=simplexml_load_file("test.xml");
 print_r($xml);
?>

// 위 xml.php 파일을 실행시켜보면

SimpleXMLElement Object ( [to] => Park [from] => Kim [heading] => header contents !! [body] => Body contents !! )

처럼 출력됩니다. 한줄로 길게나와 보기가 조금 그렇습니다. 그래서 해당 내용만 나오게 변경해보겠습니다.

 

------ xml2.php ------

<?php
 $xml=simplexml_load_file("test.xml");
 echo $xml->to . "<br>";
 echo $xml->from . "<br>";
 echo $xml->heading . "<br>";
 echo $xml->body;
?>

// 출력되는 내용은 아래와 같습니다.

Park
Kim
header contents !!
Body contents !!

 

 

다음 예제는 출력요소의 이름과 그에 해당하는 내용을 같이 보여주는 예제 입니다.

------ xml3.php ------

<?php
 $xml=simplexml_load_file("test.xml");
 echo $xml->getName() . "<br>";

 foreach($xml->children() as $child){
  echo $child->getName() . ": " . $child . "<br>";
 }
?>

// 출력되는 내용은 아래와 같습니다.

note
to: Park
from: Kim
heading: header contents !!
body: Body contents !!

 

사실 예제는 무수히 많이 있는데 일단 간단하고 기본적인 예제를 살펴본 것이라서 아마도 더 많은 예제를 찾아보고 학습해야 자기것으로 만들수 있지 않을까 생각합니다.

 

오타 또는 오류가 발견되면 댓글 또는 쪽지 부탁드립니다. 일단 여기까지해서 XML 관련 포스팅은 마치고, 다음 포스팅에선 PHP 와 AJAX의 연동에 대해서 알아보겠습니다.

'PHP > PHP XML' 카테고리의 다른 글

PHP SimpleXML 구문  (0) 2013.07.17
PHP XML DOM 구문  (0) 2013.07.16
PHP XML(DOM,SAX) 파싱 구문  (0) 2013.07.15
Posted by 진격의 파파

댓글을 달아 주세요

 

이번장에서는 PHP XML DOM 파싱에 관하여 예제를 보며 포스팅하겠습니다.  

이전 포스팅에서 DOM 과 SAX 파싱에 대해서 간략 설명하였습니다.  이번장을 보기전에 우선 이전 포스팅을 본다면 더 도움이 될듯합니다.

 

DOM 은 Document Object Model 의 약자입니다.

DOM 방식은 트리 구조로 XML 문서를 변환하고 전체 문서를 읽어서 엑세스 하기때문에 메모리를 많이 사용하며 조금 무겁다고 느낄수 있습니다.

- 문서 구조 정보와 컨텐츠를 객체로 이용

- 트리에 기반한 객체를 이용함으로써 XML 문서의 구조적 변경 작업에 적합

- XML 문서를 메모리상에서 공유할수 있다는 장점이 있음

- 메모리상에 구체적인 객체 트리를 생성함

- XML 문서를 다루기 위한 복잡한 응용프로그램(브라우저, 편집기)에 적합

- 메모리 사용량이 큼

// 위 내용은 이전 포스팅에서 설명된 내용을 가져온것입니다.
DOM 의 XML 파싱은 PHP의 부분이기 때문에 어떤 특정한 파일을 설치할 필요가 없습니다.
관련예제
----- test.xml ----- (우선 test.xml 파일을 아래와 같이 생성합니다)
<?xml version="1.0" encoding="euc-kr"?>
<note>
<to>철수</to>
<from>영희</from>
<heading>헤더 부분</heading>
<body>이곳은 내용이 들어가는 부분!</body>
</note>
----- xml.php ----- (xml.php 파일을 아래와 같이 생성합니다)
<?php
 $xmlDoc = new DOMDocument(); // 새로운 객체를 생성함
 $xmlDoc->load("test.xml"); // test.xml 파일을 불러들임
 print $xmlDoc->saveXML(); // DOM Tree를 xml 문서로 변환함
 ?>
// 객체를 선언하고 xml 파일을 불러들인후 내용을 출력하는 구문입니다. 출력되는 내용은
철수 <from>영희</from> <heading>헤더 부분</heading> 이곳은 내용이 들어가는 부분!
입니다.
관련예제 2
----- test.xml -----
<?xml version="1.0" encoding="utf-8"?>
<note>
<to>Park</to>
<from>Kim</from>
<heading> header contents !! </heading>
<body> Body contents !! </body>
</note>
// XML은 utf-8을 사용하는 것이  기본 권고사항 입니다.
----- xml.php -----
<?php
 $xmlDoc = new DOMDocument();
 $xmlDoc->load("test.xml");
 $x = $xmlDoc->documentElement; // 문서의 루트 요소를 가져옴
 foreach ($x->childNodes AS $item) {
  print $item->nodeName . " = " . $item->nodeValue . "<br>";
 }
?>
// documentElement 는 그 트리의 탑-레벨입니다. 이 요소는 하나 또는 그 이상의 자식 노드(childNodes)를 가진다. 이 자식 노드는 그 트리의 가지로 보면 됩니다.

노드 인퍼페이스(Node Interface)는 XML 노드 트리의 각 요소를 읽고 쓰기 위해 사용되며, 각각의 노드를 접근하기 위해 documentElement의 childNodes 속성을 접근할 수 있습니다. 

 

// 출력문은 아래와 같습니다.
#text =
to = Park
#text =
from = Kim
#text =
heading = header contents !!
#text =
body = Body contents !!
#text =
 
// XML 에 해당하는 모든 요소를 출력합니다.
DOMDocument 클래스의 매소드
loadXML() - XML 문서를 불러온다.
saveXML() - 메모리에 올라가 있는 DOM Tree를 XML문서로 변환한다.
load() - 파일로 부터 XML문서를 불러온다.
save() - DOM Tree를 파일로 저장한다.
vaildate() - DTD를 기준으로 XML문서의 유효성을 검증한다.
schemaVaildate() - XML 스키마를 기준으로 XML 문서의 유효성을 검증한다.
schemaVaildateSource() - XML 스키마를 기준으로 XML 문서의 유효성을 검증한다.
createELement() - 새로운 앨리먼트 노드 생성
createTextNode() - 새로운 텍스트 노드 생성
createAttribute() - 새로운 속성 노드 생성
createElementNS() - 네임스페이스 영역을 갖는 앨리먼트 노드 생성
createAttributeNS() - 네임스케이스 영역을 갖는 속성 노드 생성
createComment() - 새로운 주석노드 생성
createCDATASection() - 새로운 CDATA섹션 노드를 생성한다.
getElementsByTagName() - 지정한 태그명을 갖는 앨리먼트의 노드 리스트 출력
getElementsByTagNameNS() - 특정한 네임스페이스 영역에서 지정한 태그명을 갖는 앨리먼트의 노드 리스트를 반환한다.
importNode - XML 문서에 붙일 특정노드를 가져온다.
여기까지 XML DOM 구문에 대한 설명이었으며 다음장에서는 XML SAX 구문에 대해서 알아보겠습니다. 사실 XML에 관련된 설명이 많이 부족할 수 있습니다. 제가 코딩하면서 자주 사용하지 않았기 때문이 아닐까 합니다. 설명중 오타 또는 오류가 발생되면 댓글, 쪽지 주시면 바로 수정해 놓겠습니다.

'PHP > PHP XML' 카테고리의 다른 글

PHP SimpleXML 구문  (0) 2013.07.17
PHP XML DOM 구문  (0) 2013.07.16
PHP XML(DOM,SAX) 파싱 구문  (0) 2013.07.15
Posted by 진격의 파파

댓글을 달아 주세요

 

 

이번장에서는 PHP Mysql Delete 구문에 대해서 알아보겠습니다. 

 

delete는 테이블의 데이터를 지울수 있습니다.

 

기본구문

DELETE FROM table WHERE column = 'value'

// 기본적으로 지워야할 레코드값이 어떤것인지 where 조건에 써줍니다. 만약 where 절을 생략을 하고

 

DELETE FROM table

라고 실행을 할 경우 테이블의 모든 값이 사라지게 됩니다.

 

PHP에서 어떻게 실행되는지 알아보겠습니다. mysqli_query 함수를 사용해야 하는것은 알고 계실거라 생각합니다.

 

 user_name

age 

 park

33 

 kim

34 

 song

44 

 

위와 같이 구성된 persons 테이블이 있다고 가정하고 관련예제를 만들어보겠습니다.

 

관련예제

<?php
$conn = mysqli_connect("localhost","user_id","user_pwd","test_db");  // 데이터베이스 연결

if (mysqli_connect_errno())  {
  echo "MySQL 연결 오류 : " . mysqli_connect_error();
}

mysqli_query($conn,"DELETE FROM Persons WHERE user_name = 'song'");

// Persons테이블에서 user_name 이 song의 값을 가진 레코드를 삭제함

mysqli_close($conn);
?>

// 주석으로 설명을 달아놓았듯이 user_name 의 값중에서 song이라는 값을 가진 레코드를 삭제하라는 의미입니다. 만약 kim을 삭제하고 싶을경우 user_name = 'kim' 이라고 명령을 해주면 되겠죠.

 user_name

age 

 park

33 

 kim

34 

// persons 테이블을 살펴보면 위와같이 song의 값이 지워진것을 확인할 수 있습니다.

 

만약 테이블 자체를 삭제하고자 할 경우에는 DROP table persons 를 사용하면 됩니다. 그럼 데이터베이스에서 persons 테이블이 삭제됩니다. 그리고 위에서 설명했듯이 테이블의 내용을 지울때는 delete from persons 라고 명령하면 됩니다.

 

여기까지 PHP Mysql 데이터베이스에 관해서 포스팅을 마치고 다음 포스팅에서는 간단하게 PHP XML에 대해서 알아보겠습니다.

혹시라도 PHP 데이터베이스에 관해서 궁금한 사항이 있으면 댓글,쪽지 남겨주시면 제가 아는 한도내에서 성심껏 답변드리겠습니다.

 

그리고 중간에 오타, 오류가 발생된다면 이것도 댓글, 쪽지 남겨주시면 바로바로 수정해놓겠습니다. ^^

이렇게 미천한 글에 대해서 읽어봐주시는 방문자분들 감사합니다 ^^

 

 

'PHP > PHP Database' 카테고리의 다른 글

PHP Mysql delete 구문  (2) 2013.07.12
PHP Mysql Update 구문  (1) 2013.07.11
PHP MySQL Order By(정열) 구문  (0) 2013.07.10
PHP Mysql Where 구문  (0) 2013.07.09
PHP Mysql Select 구문  (0) 2013.07.08
PHP Mysql insert into 구문  (0) 2013.07.05
Posted by 진격의 파파

댓글을 달아 주세요

  1. 제로 2015.02.19 23:38  댓글주소  수정/삭제  댓글쓰기

    이렇게 친절하고 알기쉽게 알려주시다니...데이터베이스는 처음 건드리는거라 막막했는데...너무 감사합니다!

  2. 진격의 파파 2015.02.25 11:33 신고  댓글주소  수정/삭제  댓글쓰기

    넵 미흡하지만 도움이 되었기를 바랍니다. ^^

 

 

이번장에서는 Mysql 테이블에서 레코드를 필터링 하는 where 구문에 대해서 알아보겠습니다.

 

where 우리나라 말로 '어디' 입니다. 이전포스팅에 적었던 select 에서 사용되는 구문입니다.

 

기본구문은 select * from table where field = '박' 처럼 사용가능합니다.

// table 에서 field가 '박'인것만을 찾아서 보여달라는 의미입니다.

 

PHP 구문에서 위와 같이 데이터베이스의 내용을 가져오기 위해선 이전에도 말했듯이 mysqli_query() 함수를 이용해야 합니다.

관련예제

<?php
$conn = mysqli_connect("localhost","user_id","user_pwd","test_db"); // 데이터베이스 연결

if (mysqli_connect_errno()){
 echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$result = mysqli_query($conn,"SELECT * FROM Persons where user_name = 'park'");

// user_name 이 'park' 인 값만을 가져오라

while($row = mysqli_fetch_array($result)){
 echo $row['user_name'] . " / " . $row['age'];
 echo "<br>";
}

mysqli_close($conn);
?>

// where 구문은 주로 "검색"에서 많이 사용됩니다. 위의 구문은 간단하게 user_name 의 값이 park인 사람만 찾았는데 이외에도 사용방법이 많이 있습니다.

 

select * from persons where user_name = 'park' and age = '22'

// where 구문을 사용할때 한가지 이상의 조건을 검색해서 가져오는 경우는 "and" 옵션을 사용합니다. 그래서 위 구문의 내용은 user_name 이 park 이며 age 가 22 인 레코드를 보여주게 됩니다.

 

select * from persons where user_name = 'park' or age = '22'

// 위 구문은 or 를 이용한 방법입니다. 내용은 user_name 이 park 이거나(또는) age 가 22 인 레코드를 보여주게 됩니다.

// and 옵션은 두가지 조건이 모두 만족되어야 하지만 or 옵션은 한가지 조건만 만족되어도 내용을 가져오게 됩니다. 

 

select * from persons where user_name like 'park'

// 위 구문의 틀린점은 "=" 대신 "like" 을 사용하는데 like의 의미는 'park'라는 단어가 들어있는 모든 내용을 가져옵니다. 즉, 'parks','parking','parkland' 등의 내용을 보여줍니다.

 

이처럼 where 구문은 코딩을 하면서 매우 자주 사용하게 되는 항목입니다. 기본적인 설명을 하였으니 이제 응용을 해보시기 바랍니다.

 

내용중 오타 또는 오류가 있으면 댓글 또는 쪽지 부탁드립니다.

 

다음장에서는 Mysql 정렬에 대해서 알아보겠습니다.

 

 

'PHP > PHP Database' 카테고리의 다른 글

PHP Mysql Update 구문  (1) 2013.07.11
PHP MySQL Order By(정열) 구문  (0) 2013.07.10
PHP Mysql Where 구문  (0) 2013.07.09
PHP Mysql Select 구문  (0) 2013.07.08
PHP Mysql insert into 구문  (0) 2013.07.05
PHP 데이터베이스 및 테이블 만들기  (5) 2013.07.04
Posted by 진격의 파파

댓글을 달아 주세요

 

이번장에서는 Mysql 의 Select 구문에 대해서 알아보겠습니다.

 

 

SELECT문은 데이터베이스에서 데이터를 선택하는 데 사용됩니다.

 

 

구본구문

1. "select * from table"

2. "select column_name(s) from table_name"

// 기본적인 select 구문은 위와 같습니다. 1번은 모든 칼럼의 내용을 불러오며, 2번같은 경우는 불러올 칼럼만을 나타내는 방식입니다.

위 Mysql 구문을 실행하기 위해선 PHP 의 mysqli_query () 함수를 사용하여 값을 얻을 수 있습니다.

 

PHP와 연동된 관련예제 구문을 살펴보겠습니다.

<?php
$conn = mysqli_connect("localhost","user_id","user_pwd","test_db"); // 데이터베이스 연결

if (mysqli_connect_errno()) {
echo "MySQL 연결 실패 : " . mysqli_connect_error();
}

$result = mysqli_query($conn,"SELECT * FROM Persons"); //select 구문을 이용해 칼럽값을 가져옴

while($row = mysqli_fetch_array($result)){ // mysqli_fetch_array 함수를 사용하여 값을 가져옴

// mysqli_fetch_array 함수는 한번에 하나씩 데이터를 읽어오며, 배열형태로 저장됩니다.


echo $row['user_name']; // user_name의 값(데이터를 가져올때 $row[]를 사용함
echo "<br>";
}

mysqli_close($conn);
?>

// 기본적으로 데이터를 읽어올 경우 위 구문처럼 사용하여 값을 가져오게 됩니다.

 

 

 

 

PHP, Mysql, HTML 구문과 연동하여 나타내보겠습니다.

<?php
$conn = mysqli_connect("localhost","user_id","user_pwd","test_db"); // Check connection

if (mysqli_connect_errno()){
echo "MySQL 연결 실패 : " . mysqli_connect_error();
}

$result = mysqli_query($conn,"SELECT * FROM Persons");

echo "<table border='1'>
<tr>
<th>No</th>
<th>name</th>
</tr>";

$no = 1; // 리스트 번호를 나타냄
while($row = mysqli_fetch_array($result)){
echo "<tr>";
echo "<td>" . $no . "</td>";
echo "<td>" . $row['user_name'] . "</td>";
echo "</tr>";
$no++; // 리스트 번호를 1씩 증가시킴
}
echo "</table>";

mysqli_close($conn);
?>

// 일반적으로 게시판 같은곳의 리스트를 나타낼때 기본적으로 위구문처럼 사용합니다. 그리고 CSS를 이용하여 좀더 화려하게 꾸밀수도 있는데 CSS 관련된 포스팅은 추후에 해놓겠습니다.

다음장에서는 select 와 연동된 mysql where 구문에 대해서 알아보겠습니다.

설명중에 혹시라도 오타 또는 오류가 있으면 쪽지나 댓글 주시면 감사하겠습니다.

'PHP > PHP Database' 카테고리의 다른 글

PHP MySQL Order By(정열) 구문  (0) 2013.07.10
PHP Mysql Where 구문  (0) 2013.07.09
PHP Mysql Select 구문  (0) 2013.07.08
PHP Mysql insert into 구문  (0) 2013.07.05
PHP 데이터베이스 및 테이블 만들기  (5) 2013.07.04
PHP Mysql Connect(PHP 데이터베이스 연동)  (4) 2013.07.03
Posted by 진격의 파파

댓글을 달아 주세요

 

이번장에서는 PHP 와 Mysql 을 연동한 데이터베이스와 테이블 만들기에 대해서 알아보겠습니다.

우선 이전 포스팅에서 나왔던 mysqli_query 함수를 이용하여 데이터베이스 만들기에 대해서 알아보겠습니다.

지금부터 "test_db" 를 만들겠습니다. test_db를 만들기 위해서 데이터베이스와 연결이 필요하겠죠.

 

 

데이터베이스 만들기

<?php
$conn = mysqli_connect("localhost","user_id","user_pwd"); // DB connection
if (mysqli_connect_errno()){
echo "MySQL 연결 오류: " . mysqli_connect_error();
}

// Create database
$sql = "CREATE DATABASE test_db";
// CREATE DATABASE 데이터베이스를 만들때 사용하는 mysql 명령어 입니다.
if (mysqli_query($conn,$sql)){
echo "성공적으로 test_db 가 만들어졌습니다.";
} else {
echo "데이터베이스 만들기 오류: " . mysqli_error($conn);
}
?>

// 첫번째 $conn 의 내용을 보면 localhost 서버에 사용자 아이디와 비밀번호를 넣고 mysqli_connect 함수를 이용하여 데이터베이스와 연결시킵니다. 그리고 오류가 있으면 mysqli_connect_error() 함수에서 오류를 반환합니다.

// 그리고 mysql 명령어 "create database"를 이용하여 데이터베이스를 생성합니다. 굳이 해석을 안해도 명령어 자체는 이해를 할거라 생각합니다. 만약 우리나라 언어로된 프로그램이라면 어떨까요.. "테스트디비 데이터베이스 생성" 아마도 요렇게 명령을 내리면 "테스트디비"라는 데이터베이스가 생성되지 않을까 합니다. 하지만 프로그램 언어의 대부분은 영문을 사용하기에 약간의 영어공부도 하시면 프로그램 언어공부에 도움이 많이 되지 않을까 생각합니다.

 

위 코딩을 복사해서 붙여넣기 하지 마시고 직접 코딩을 해가며 데이터베이스를 생성해보기를 바랍니다.

 

데이터베이스를 만들었으니 이제 테이블 만드는 작업을 해보겠습니다.

 

 

테이블 만들기

<?php
$conn = mysqli_connect("localhost","user_id","user_pwd"); // DB connection
if (mysqli_connect_errno()){
echo "MySQL 연결 오류: " . mysqli_connect_error();
}

// table 만들기
$sql = "CREATE TABLE Persons(FirstName CHAR(30), LastName CHAR(30), Age INT)";

// 테이블 생성 명령어는 "create table" 입니다. 위 구문을 자세히 보면 Persons 테이블을 생성하는데

// FirstName CHAR(30), LastName CHAR(30), Age INT 이렇게 3개의 필드가 추가된 테이블을 만들라는 의미 입니다.

// 필드관련 함수는 아래 별도 정리되어 있으니 참조바랍니다.

// query 실행
if (mysqli_query($conn,$sql)){
echo "성공적으로 persons 테이블을 만들었습니다.";
} else {
echo "테이블 생성 오류 : " . mysqli_error($conn);
}
?>

// 위 구문은 Persons 라는 테이블을 생성하는 구문입니다.

아직 정확하게 데이터베이스와 테이블이 구분이 안가는 분들을 위해 아파트와 비교하며 설명드리겠습니다.

예를 들어서 한 동의 아파트를 하나 짓는다고 가정해봅니다.

하나의 아파트 안에는 다수의 집이 들어 있습니다.

그리고 그 집 속에는 다수의 방들이 존재합니다.

포괄적으로 아파트 > 집 > 방 이렇게 정의 되는데 데이터베이스를 만드는 과정도 똑같습니다.

아파트(데이터베이스) > 집(테이블) > 방(필드) 어떤 데이터들을 담기 위해 데이터베이스라는 아파트를 만들어야 하고 테이블 이라는 집을 만들고 필드 라는 집을 만들어서 사용한다고 보면 됩니다.

 

 

 

Primary Keys and Auto Increment 테이블 생성

- 테이블을 만들때 보통 기본키값을 가진 필드를 하나 생성해야 합니다.

- 기본키를 가진 필드의 역할은 데이터가 담긴 행에 대하여 고유의 값을 가지게 합니다. 만약 똑같은 값들이 여러게 있으면 무엇이 어떤값인지 모르겠죠. 그래서 그러한것을 식별하고 구분하기 위해서 기본적으로 테이블 생성시 고유의 키값을 만들어서 생성합니다.

- Auto Increment 의 뜻은 '자동증가'라는 의미 입니다. 어떤 필드가 하나 생성이 되고 기본키가 자동증가 옵션이 들어 있다면 기본키값은 자동으로 1씩 증가되어 보여지게 됩니다. 관련예제를 살펴보겠습니다.

관련예제

<?php
$conn = mysqli_connect("localhost","root","./akzpxld","test"); // Check connection
if (mysqli_connect_errno()){
echo "MySQL 연결 오류 : " . mysqli_connect_error();
}

// Create table
$sql = "CREATE TABLE Persons
(
PID INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY(PID),
FirstName CHAR(15),
LastName CHAR(15),
Age INT
)";

// Execute query
if (mysqli_query($conn,$sql)){
echo "성공적으로 persons 테이블을 만들었습니다.";
} else {
echo "테이블 생성 오류 : " . mysqli_error($conn);
}
?>

// 바로 위 테이블 만드는 방법과 유사한데 틀린 부분이 있습니다. PID INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(PID) 두 개의 내용이 추가되었는데 PID라는 필드를 만들고 not null 공백이 안들어간다는 의미 입니다. 무조건 값이 들어가야 된다는 의미겠죠. 그리고 auto_increment 자동증가 하였습니다. 그리고 마지막에 primary key(PID) 기본키값을 pid 값으로 하겠다는 의미 입니다. 테이블 생성시 기본적으로 위와 같이 사용된다고 보면 됩니다.

 

 

필드의 varchar, char, int, text, timestamp 등 많은 종류의 Data Type이 있는데 그 종류에 관해서 PHP Reference 쪽에서 자세히 정리를 해놓겠습니다.

 

 

일단 오늘 포스팅내용에서 중점을 두어야 하는 부분은 데이터베이스와 테이블을 만들때 어떻게 만드는지에 대한 방법입니다. 그 방법이 확실하게 인식이 되었다면 더 복잡한 테이블 만들기에 도전해도 되겠습니다.

 

지금 까지 데이터베이스, 테이블 생성에 관해 알아보았고 다음 포스팅에서는 테이블에 값을 어떻게 넣는지에 대해서 알아보겠습니다.

'PHP > PHP Database' 카테고리의 다른 글

PHP Mysql Where 구문  (0) 2013.07.09
PHP Mysql Select 구문  (0) 2013.07.08
PHP Mysql insert into 구문  (0) 2013.07.05
PHP 데이터베이스 및 테이블 만들기  (5) 2013.07.04
PHP Mysql Connect(PHP 데이터베이스 연동)  (4) 2013.07.03
PHP MySQL 소개  (0) 2013.07.02
Posted by 진격의 파파

댓글을 달아 주세요

  1. young 2017.11.03 18:05  댓글주소  수정/삭제  댓글쓰기

    집에서 localhost구성에 실패해서 카페24결제해서 MySql을 사용하고 있습니다. 그럼 저 localhost에는 데이터베이스 이름을 넣으면 될까요?

  2. 진격의 파파 2017.11.20 17:23 신고  댓글주소  수정/삭제  댓글쓰기

    카페24는 아이디가 데이터베이스 이름이 됩니다 ^^

  3. 마망 2018.03.09 14:25  댓글주소  수정/삭제  댓글쓰기

    모든 if(mysqli_query($conn, $sql)){ 구문에서

    오류가 발생하는데 이유가 뭘까요?

  4. 마망 2018.03.09 14:26  댓글주소  수정/삭제  댓글쓰기

    Warning: mysqli_query() expects parameter 1 to be mysqli, resource given in /host/home1/thebomemin/html/dbTableCreate.php on line 25

    이런 오류가 출력됩니다.

  5. 마망 2018.03.09 15:01  댓글주소  수정/삭제  댓글쓰기

    죄송합니다 오류는 해결되었는데 데이터베이스 생성에 실패하네요

 

PHP 의 데이터베이스 연결방식은 기존방식(mysql_connect)과 PHP 5 버전의 신규방식(mysqli_connect) 이렇게 두 가지로 나뉘어 집니다.

 

 

저는 사실 기존방식으로 지금까지 코딩을 해왔는데 신규연결방식이 훨씬더 안정적이고, 빠르며, 보안이 더 잘되어 있습니다.

 

 

그래서 PHP 5 업그레이드 이후로 새로나오는 PHP 책들을 살펴보면 신규방식인 mysqli_connect 함수를 사용하여 데이터베이스를 연결하는걸 볼 수 있을 겁니다.

 

 

PHP 5 업그레이드 중에서 가장 중요한 점이 MySQLi (MySQL Improved Extension) 이 아닐까 생각합니다.

 

 

일단 기존연결 방식과 신규연결 방식 둘다 설명하겠습니다. 하지만 이제부터 PHP 를 시작하는 분들 그리고 PHP 5를 이용하는 분들 이라면 Mysqli_connect 함수를 이용하길 추천합니다.

 

 

기존연결 방식

<?
$db_host = "localhost"; // 호스트네임(IP 값으로도 가능)
$db_user = "root"; // 사용자 아이디값(root는 최상위 아이디 이며, 데이터베이스마다 별도 설정 가능합니다)
$db_passwd = "test1234"; // 사용자 비밀번호
$db_name = "test"; // 사용할 데이터베이스 이름

$conn = mysql_connect($db_host,$db_user,$db_passwd) or die ("데이터베이스 연결에 실패하였습니다!");

mysql_select_db($db_name, $conn); // DB 선택

// 데이터베이스를 연결합니다.
?>

// 보다시피 기존연결 방식은 mysql_connect를 사용합니다.

 

 

 

PHP 5 신규연결 방식

<?php
$db_host = "localhost";
$db_user = "root";
$db_passwd = "test1234";
$db_name = "test";
$conn = mysqli_connect($db_host,$db_user,$db_passwd,$db_name);

if (mysqli_connect_errno($conn)) {
echo "데이터베이스 연결 실패: " . mysqli_connect_error();
} else {
echo "성공~!!!";
}
?>

// 별다른 차이점은 없습니다. 단지 mysql_connect 함수를 쓰느냐 mysqli_connect 함수를 쓰느냐 인데 위에서 설명했듯이 속도, 보안적인 측면에서 mysqli 함수가 한수 위라 볼수 있습니다. mysqli 는 mysql에 비해 속도가 작게는 2배에서 크게는 40배까지 차이가 납니다. 그래서 PHP 5가 지원되는 플랫폼이라면 당연히 mysqli를 사용하는게 효율적이겠죠.

 

 

이번장에서는 간단하게 데이터베이스 연결에 관해서 알아보았는데, 다음장에선 PHP 코딩으로 데이터베이스 생성 및 테이블 생성에 관해 포스팅 하겠습니다.

 

 

요즘 정신이 없어서 제가 오타나 실수가 나올수 있는데 너그럽게 양해해 주시고 바로 댓글, 쪽지 주면 수정해놓겠습니다.

'PHP > PHP Database' 카테고리의 다른 글

PHP Mysql Where 구문  (0) 2013.07.09
PHP Mysql Select 구문  (0) 2013.07.08
PHP Mysql insert into 구문  (0) 2013.07.05
PHP 데이터베이스 및 테이블 만들기  (5) 2013.07.04
PHP Mysql Connect(PHP 데이터베이스 연동)  (4) 2013.07.03
PHP MySQL 소개  (0) 2013.07.02
Posted by 진격의 파파

댓글을 달아 주세요

  1. 인절미 2016.03.10 22:08  댓글주소  수정/삭제  댓글쓰기

    정말 감사합니다 ^^

  2. 인절미 2016.03.10 22:08  댓글주소  수정/삭제  댓글쓰기

    정말 감사합니다 ^^

  3. 초롱초롱 2016.08.29 06:59  댓글주소  수정/삭제  댓글쓰기

    감사합니다 한참을 몇시간째 헤메다 이제 막 성공했네요 ^^

  4. 오해윤 2016.11.02 03:22  댓글주소  수정/삭제  댓글쓰기

    핵심을 알려주시어 감사드립니다.