웹마스터 팁

http://nzeo.com/bbs/zboard.php?id=p_study&page=1&no=374&_____________설명:中편입니다...다 읽은 후에 클릭하세여!오랜만에 글을 올립니다..그동안 게을러져서;;...(잘 아네;;)

이번에 올릴 거는 사이트 내에서의 검색(DB 사용)소스를 가지고 PHP의 가초를 학습하는 겁니다. 앞으로도 예제를 가지고 간단한 기본문법과 DB사용, 파일 다루기를 배울 수 있는 자료를 올리겠습니다.(갑자기 떠오르는 <作心三日>;;)

먼저 풀 소스부터 봅시다.


<?
global $dbid, $dbpw, $dbname

$dbid = "디비 아디";
$dbpw="비번";
$dbname = "디비 이름";

function mics_msg($mics_msg_message) {
    //에러메시지
    echo("<script>window.alert('$mics_msg_messagennjukiyo.net');history.back();</script>");
    exit;
}

function mics_dbconn() {
/* 디비에
    접속
        합니다~
    */
    global $connect;
    if(!$connect) {
        $connect = mysql_connect("localhost",$dbid,$dbpw) or mics_msg("MySQL 접속 실패");
        @mysql_select_db($dbname,$connect);
    }
}

if(!$keyword) echo("검색할 자료를 입력해주십시오 : <form name='find' method='get' action='$PHP_SELF'><input type='text' name='keyword' size='20' maxlenght='20'> <input type='submit'+ ' value=' -> '><br> - 와일드 카드 검색: %와 _를 사용할 수 있습니다.(% : 모든 문자열, _ : 1개의 문자)</form><a href='http://jukiyo.net/sitemap.php'>사이트맵</a></center>");
elseif(eregi("GO ",$keyword)) {
    eregi_replace("GO ","",$keyword);
    echo "<meta http-equiv='refresh' content='0;url=go.php?keyword=${keyword}'>";
} else {
    $keyword = strtolower($keyword);
    mics_dbconn();
    $result = mysql_query("select * from mics_find where keyword like '%$keyword%'");
    if(!mysql_num_rows($result)) {
        echo("키워드 ${keyword}에 대한 자료가 없습니다. 검색할 자료를 입력해주십시오 : <form name='find' method='get' action='$PHP_SELF'><input type='text' name='keyword' size='20' maxlenght='20'> <input type='submit' value=' -> '><br> - 와일드 카드 검색: %와 _를 사용할 수 있습니다.(% : 모든 문자열, _ : 1개의 문자)</form><a href='http://jukiyo.net/sitemap.php'>사이트맵</a>");
    } else {
        $total = mysql_num_rows($result);
        echo("키워드 ${keyword}에 대한 자료가 ${total}개 검색되었습니다.<p> <p>");
        for($i = 0;$i < $total;$i++) {
            $vno = $i + 1;
            $keyword = mysql_result($result,$i,1);
            $title = mysql_result($result,$i,2);
            $url = mysql_result($result,$i,3);
            echo("<b> [$vno] <a href='$url'>$title</a></b><br>   키워드: $keyword<br>");
        }
        echo("<p><form name='find' method='get' action='$PHP_SELF'>다른 자료 검색: <input type='text' name='keyword' size='20' maxlenght='20'> <input type='submit' value=' -> '></form><p><a href='http://jukiyo.net/sitemap.php'>사이트맵</a>");
    }
}
?>

*어떤"분"(;;)이 제 PHP코딩을 가지고 의아해하시더군여..코딩속도를 단축시키는 문법(한줄 if문이나 나만 쓰는 echo(" ") 따위..
저는 이런 신념(?)을 가지고 있습니다. 소스는 소스 자체로의 아름다움을 가진다!(ㅡㅡ;;말은 잘해요)
그래서 저는 모든 들여쓰기(중괄호)앞에는 탭을, echo문에도 echo("$#R%Y3");라는 정형을 고집합니다..
여기에는 이런 방법도 있다는 걸 알려드리기 위해 정형을 무시하기도 했습니다..양해 바랍니다;;



자, 이제 소스를 한줄씩 살펴보며 배워봅시다.


<?
global $dbid, $dbpw, $dbname

▷PHP에서 변수는 앞에 $ 를 붙여 나타냅니다. PHP에서는 따로 면수을 선언해 줄 필요가 없습니다.
  단, global 키워드로 변수를 선언하면 함수 내, 객체 내 어디서든 동일한 값으로 사용할 수 있습니다.
  PHP의 변수는 정수형, 실수형, 문자형, 배열형, 객체형이 있습니다. 차근차근 보면서 배워나갑시다.

$dbid = "디비 아디";
$dbpw="비번";
$dbname = "디비 이름";

▷이것은 변수의 값을 설정해주는 것입니다. "="는 연산자입니다. 연산자에 대한 설명은
  http://nzeo.com/bbs/zboard.php?id=p_study&no=158   에서 보실 수 있습니다.
▷또한 모든 구문 끝에는 종결문자 ; (세미콜론)를 붙여야 합니다. 그렇지 않으면 입력 에러가 납니다.
  하지만, 명령문처럼 중괄호로 끝나는 구절에는 붙이면 에러가 납니다;;
▷따옴표 속은 인자로, 각종 정보를 나타냅니다.

function mics_msg($mics_msg_message) {

▷매우 중요한 부분입니다. 이것은 함수를 선언하는 것입니다.
  misc_msg 부분은 함수의 이름입니다. 앞으로 이 파일 내에서 이 함수를 호출할 수 있습니다.
  변수는 함수의 인자입니다. 이 인자는 global로 선언되지 않는 한 함수 내에서만 쓰여집니다.
  함수 중괄호 사이에 써있는 것은 오직 함수를 선언할 때만 출력됩니다. 어떤 수를 써도 직접 나오지 않습니다.

    //에러메시지

▷이것은 주석문입니다. 아무런 뜻도 가지지 못하고, 다만 책갈피 따위의 기능으로 알아보기 쉽도록 합니다.
  PHP에서 주석문은 앞에 "//"를 붙여서 나타냅니다. #도 같은 역할을 합니다.

    echo("<script>window.alert('$mics_msg_messagennjukiyo.net');history.back();</script>");

▷PHP에서 가장 많이 쓰이는 함수를 꼽으라면 echo문일 것입니다. 이 함수는 HTML을 출력해줍니다.
  똑같은 용도로 print문이 있는데, 이 문은 여러 줄을 한번에 나타내지 못해 잘 쓰이지 않습니다.

    exit;

▷PHP를 끝내버리고 이하의 내용을 해석하지 않습니다.

}

▷여기까지가 함수 선언입니다. 중괄호를 닫습니다.

function mics_dbconn() {

▷또다른 함수를 선언했습니다. 이와같이 많은 함수를 선언한 파일을 library(도서관)파일이라고 하며, 각종 다른 문서에서
  인클루드하여 사용합니다. 제로보드의 lib.php를 보시면 이해가 쉽게 가실 겁니다.
▷인클루드란 무엇일까요? 자기 자신을 다른 파일로 대체하는 것입니다. 인클루드된 파일의 모든 내용을 자신처럼 사용합니다.
  인클루드하는 법은 include("인클루드 파일 위치");입니다.
  인클루드에 스이는 경로 이야기는 다른 분들의 좋은 강좌를 참고해 보세여;;

/* 디비에
    접속
        합니다~
    */

▷PHP에서의 주석은 이렇게도 쓰입니다. 여러줄 주석문이라고 합니다. "/*"으로 열려서 "*/"르로 닫을 떄까지의 모든 내용을 주석처리합니다.

    global $connect;

▷$connect변수는 global로 선언하였으니 함수 밖에서도 쓰이게 됩니다.

    if(!$connect) {

▷또 중요한 게 나왔습니다. if문입니다. if문은 안의 내용이 참이면 그 ㅇ이하 괄호의 내용을 실행하고, 거짓이면 그냥 넘어갑니다.
  여러 조건 중 하나만 만족하면 된다면 조건 사이에 or 또는 ||를, 모두 만족해야 한다면 and 또는 &&를 사용해 연결합니다. or이나 and를 쓰기를 권장합니다.
  http://nzeo.com/bbs/zboard.php?id=p_study&no=158   를 참조하세여..

        $connect = mysql_connect("localhost",$dbid,$dbpw) or mics_msg("MySQL 접속 실패");

▷드디어 DB문이 나왔습니다. mysql_connect는 MySQL 서버에 섭속합니다. 성공하면 1을, 실패하면 0을 출력합니다. 이것을 $connect에 저장합니다.
  인자는 "서버 위치","ID","비밀번호"입니다. 뒤의 or은 실패시 실행할 것입니다.
▷PHP에서 1은 true(참), 0은 false(거짓)을 나타내며, 변수가 0이면 존재하지 않는 것입니다. if문 사용시 주의하세요.

        @mysql_select_db($dbname,$connect);

▷디비를 선택합니다. "디비이름","접속변수"입니다. 접속변수는 생략 가능합니다.
▷함수 앞의 @ 는 오류가 생기면 무시하라는 뜻입니다.

    }
}

▷if문 닫고, 함수 닫습니다.




아휴..이것도 힘드네여..낼이나 모레(아무래도 모레가 될 듯)에 2편 올라갑니다~

제목 글쓴이 날짜
[추천 팁] [씽크식 PHP] PHP에대해 아무 지식이 없는 사람이 오해하는것. [3] [ζ]씽크 2002.03.23
[추천 팁] setcookie()사용시 header어쩌구 하는 에러날때.... [1] 하얀바다 2002.03.19
[추천 팁] 방문자의 os와 browser체크 함수.... [3] navyism 2002.03.18
echo 문 대신... [5] TryZ 2002.03.17
[씽크식 PHP] 초심자들이 많이 겪는 실수.. [7] [ζ]씽크 2002.03.16
TheMics의 예제와 함께하는 PHP기초(上) [1] TheMics 2002.03.14
include를 이용한 다음넷 홈페이지 꾸미기2(그림 첨부) [4] file ZipShin 2002.03.12
include를 이용한 다음넷 홈페이지 꾸미기1 [10] ZipShin 2002.03.12
[추천 팁] index key 값을 갖는array에서 value에 의한 key값 반환 [1] 차카게살자 2002.03.11
가변적 변수 할당하는 방법 (t1=1; t2=2; t=t.rand(1,2);) [1] 차카게살자 2002.03.11
유용한 함수 - array_reverse 리들 2002.03.10
php를 리눅스쉘상 에서도 사용하자? [5] 실버 2002.03.10
반복문을 한번만 사용한 구구단 [2] 페리스 2002.03.10
요일을 한글로 표시 [5] 페리스 2002.03.10
2번째~~!! DATE값 받아놓기 &상대방 아이피 알아내기~ [7] 실버 2002.03.07
많은것을 파일하나로 처리하잣!! [5] 실버 2002.03.05
[Yuki-H.] 이미지 크기가 일정 픽셀 이상이면 축소하여... [8] Yuki-H. 2002.03.04
[OsE=] IF 대신... [6] OsE= 2002.03.02
[OsE=] 최단 거리... [6] OsE= 2002.03.02
[OsE=] 기초적인 정규표현식 [3] OsE= 2002.03.02