뽀라닷컴
Loading...




웹디자인,포토샵,그누보드,제로보드,동영상제작 관련 메모 >>


전체(437)인터넷,컴퓨터 (94) | 웹디자인tip (182) | CG,그래픽tip (70) | BBS_Tip (74) | 영상tip (17) |
게시물 데이타 뽑는 여러가지 2009-02-02 20:26:30
홈페이지홈페이지

$connect=mysql_connect("localhost","디비 아이디","패스워드");
  mysql_select_db("디비 네임");


  $result=mysql_query("select * from zetyx_board_$웹보드이름 order by no desc limit 추출할 게시물 숫자");



제 목    +:+: 최근 게시물 뽑아내기 3(뽑아올 내용 선택) :+:+

                        +:+: 게시물 중에서 뽑아올 내용 선택하기 :+:+
                          
게시물 중에서 어떤 내용을 뽑아올 것인지는 최근 게시물 스킨을 어떻게 구성할 것인지에 달려있겠죠..
제가 여기서 설명드리려고 하는 것은 게시물에서 뽑아올 수 있는 모든 것을 설명드리고자 하는 것입니다.
사용은 읽어보시고 필요한 것만 뽑으면 됩니다.. 그럼 시작해보죠...

  $result=mysql_query("select * from zetyx_board_$웹보드이름 order by no desc limit 5");
위의 것은 기억나시죠.. 앞에서 설명한 것처럼 '웹보드'에 접근하는 것이죠..
이제부터는 DB에 접근이 완료되고 웹보드에 접근한 다음의 일이죠...

while($data=mysql_fetch_array($result)) : 이부분이 게시물 추출의 첫 번째 기본적인 일입니다.
while 은 php문법 중에서 반복문의 하나인데요.
while(조건){ 실행내용 } : 조건이 참(진짜)라면 { }로 둘러쌓인 부분을 실행하는 거죠..
위에서는 조건이 $data=mysql_fetch_array($result) 입니다.
설명하자면 '웹보드(흔히 게시판이라고 부르죠)'에서 게시물을 하나씩 읽어오는 겁니다.
즉, 최근 게시물부터 시작해서 5개(order by no desc limit 5의 영향으로 인해)까지 읽어오는 것입니다.

이제 어떤 것을 추출할 것인지 결정해야 겠죠...
while($data=mysql_fetch_array($result))


$data[total_comment] = stripslashes($data[total_comment]); : 각 게시물의 코멘트 숫자 읽어오기(앞쪽에 받는 변수 이름은 반드시 $data[total_comment] 일 필요는 없습니다. 즉 $a 이렇게 받아도 된다는 말이죠.. 하지만 좀 더 알아보기 쉽게 하기위해서...^^)
$data[subject] = stripslashes($data[subject]); : 각 게시물의 제목 추출하기
$data[name] = stripslashes($data[name]); : 각 게시물의 작성자 이름
$data[memo] = stripslashes($data[memo]); : 각 게시물의 본문 내용 뽑아오기
$data[email] = stripslashes($data[email]); : 각 게시물 작성자의 email 뽑아오기
$data[homepage] = stripslashes($data[homepage]); : 각 게시물 작성자의 홈페이지 뽑아오기
$data[sitelink1] = stripslashes($data[sitelink1]); : 각 게시물의 링크 #1의 내용 뽑아오기
$data[sitelink2] = stripslashes($data[sitelink2]); : 각 게시물의 링크 #1의 내용 뽑아오기
$data[no]=stripslashes($data[no]); : 각 게시물의 no 추출하기
$data[file_name1] = stripslashes($data[file_name1]); : 각 게시물에서 업로드 시킨 첫 번째 파일의 이름 얻기
$data[file_name2] = stripslashes($data[file_name2]); : 각 게시물에서 업로드 시킨 첫 번째 파일의 이름 얻기
$data[is_secret] = stripslashes($data[is_secret]); : 각 게시물이 비밀글인지 아닌지 체크...
$data[reg_date] = stripslashes($data[reg_date]); : 각 게시물이 쓰여진 날. 시간..
// 실제 출력은 이렇게 하셔야.. echo "date("m-d",$data[reg_date])"
// 카테고리 이름 추출하기
$data[category] = $data[category];
$result_category = mysql_query("select * from zetyx_board_category_$웹보드 이름 where no='$data[category]'") or die(mysql_error());
$category = mysql_fetch_array($result_category);
// $category[name] 가 최종적인 현재 게시물의 카테고리 이름입니다....^^..에궁 어려워..
}

와 뽑아올 수 있는 것 정말 무지 많죠..
하지만 위쪽에서 실제로 사용되는 것이 몇 개나 될 것인지 한 번 생각해보시구요...

어떻게 사용할 것인지 한 번 생각해 보세요.. 그럼 다음을 계속 보시길...^^

   +:+: 게시물 제목 글자 수 조정하기(원하는 글자수만큼 나타내고 나머지는 ....으로 표시 하는 법) :+:+

///////////////////////////////////////////////////////////////////////
// 문자열 끊기 (이상의 길이일때는 ... 로 표시)
//////////////////////////////////////////////////////////////////////
function cut_str($msg,$cut_size)
{
if($cut_size<=0) return $msg;
if(ereg("[re]",$msg)) $cut_size=$cut_size+4;
for($i=0;$i<$cut_size;$i++) if(ord($msg[$i])>127) $han++; else $eng++;
$cut_size=$cut_size+(int)$han*0.6;
$point=1;
for ($i=0;$i{
if ($point>$cut_size) { return $pointtmp."...";}
if (ord($msg[$i])<=127)
{
$pointtmp.= $msg[$i];
if ($point%$cut_size==0) { return $pointtmp."..."; }
}
else
{
if ($point%$cut_size==0) { return $pointtmp."..."; }
$pointtmp.=$msg[$i].$msg[++$i];
$point++;
}
$point++;
}
return $pointtmp;
}

위의 함수는 제로님께서 만드신 함수입니다.
제로보드 설치하신 디렉토리에 lib.php 파일이라고 있지요.. 그기에서 뽑아온 함수입니다.

와 무지 복잡하지만 알고 보면 그렇게 어렵지도 않다는 거죠...

php 잘 모르시는 분은 그냥 위의 소스 그대로 사용하셔도 됩니다.(그 편이 훨씬 속 편하고 쉬울 수도 있지요...)

하지만 공부하시고자 하는 분들을 위해서 그냥 간단하게 설명하도록 하겠습니다...
음 내용이 조금 길어져서.. 다음 강좌에서 계속 하겠습니다.
function cut_str($msg,$cut_size) // 2개의 변수를 받고 있죠. $msg는 문자열, $cut_size는 몇 자까지 출력할 것이지 하는 거죠.
{

if($cut_size<=0) return $msg;
// 자르고자 하는 글자수가 0이거나 0보다 작으면 즉, -인 경우에는 그냥 문자열 자체를 리턴합니다. 잘못된 값을 받았을 경우에 행하는 예방책이죠.. 글자를 하나 이상은 출력해야 하니까요.

if(ereg("[re]",$msg)) $cut_size=$cut_size+4;
//ereg 함수는 php에서 사용되는 정규식을 위한 함수입니다.
   정규식이라면 모르시는 분 많겠네요..정규식은 한마디로 문자와 문자열을 찾아내고, 바꾸는 등 문자열을 다루는데 사용하는 것입니다.(제가 php 공부하면서 제일 어려워 하는 부분입니다...^^)
무슨 암호같기도 하구요...^^.. ereg 함수의 사용법은 ereg(정규식, 문자열, 배열) 입니다.
  뒤쪽의 배열은 생략할 수도 있구요. 여기에서는 생략되었죠.
  더 설명하자면 복자울 것 같고.. 위의 함수 내용을 대충 이래요..
  [re]가 붙은 메시지.. 즉 답변글이겠죠.. 그럴 때는 자르는 숫자를 4를 늘리라는 뜻이죠..
  즉 자를려는 글자 수가 20일 경우.. 어떤 문자열을 읽어와 [re](4자)라는 글자가 존재하면 24글자를 자르라는 뜻이 됩니다..(휴... 길다...)

for($i=0;$i<$cut_size;$i++) if(ord($msg[$i])>127) $han++; else $eng++;
// ord(변수 혹은 문자)는 문자 혹은 특수문자의 ASCII를 알려주는 함수입니다.
    for는 반복문이니까.. 자르고자 원하는 숫자만큼 반복합니다.
    127초과면(128부터) 한글($han값을 하나씩 증가) 이하면 영어($eng값을 하나씩 증가)

$cut_size=$cut_size+(int)$han*0.6;
// 자르는 숫자를 한글과 영문자의 글자 크기에 비례해서 다시 조정하는 거죠..
    
$point=1;

for ($i=0;$i
{
if ($point>$cut_size) { return $pointtmp."...";}
// $point위치가 1부터 시작하죠.. 자르고자 하는 갯수보다 크다면 ... 을 리턴하는 거죠..

if (ord($msg[$i])<=127) // 영어 글자인 경우..
{
$pointtmp.= $msg[$i]; // $pointmp라는 함수에 하나씩 집어넣는겁니다.

if ($point%$cut_size==0) { return $pointtmp."..."; }
// %는 나머지를 구하는 연산자인데.. 자르고자 하는 글자수만큼 도달 했을 때 뒷 부분에 ... 을 추가하는거죠..
} // 여기가 영어 글자인 경우의 끝입니다.(조건문 if)

else // 여기서부터는 한글일 경우 처리하는 방법입니다.
{
if ($point%$cut_size==0) { return $pointtmp."..."; }
// 위와 마찬가지로 자르고자 하는 글자수만큼 도달 했을 때($point의 값이) 뒷 부분에 ... 을 추가합니다.

$pointtmp.=$msg[$i].$msg[++$i];
// 이건 한글이기 때문에 필요한 내용이죠.. 즉 한글의 특성상 2바이트가 결합해서 하나의 글자를 만들기 때문에 $msg[$i].$mst[++$i] 이렇게 2문자를 결합한 것입니다.

$point++; // 한글이니까 2개씩 증가해야 한다는 뜻이죠..(아래쪽 $point++와 합치면 point 값이 2씩 올라가죠..)
}
$point++; // 다음 값을 읽어야 하기 때문에 $point 값을 하나 증가..
}
return $pointtmp;
// 이게 실행될 경우는 1가지 뿐입니다. 자르고자 하는 글자 수의 길이보자 읽어온 문자열의 길이가 짧았을 경우죠...
}

음...^^ ... 제가 뭐 그렇게 똑독해서 저런 것 다 분석하는게 아니구..
저두 예전에 프로그래밍을 조금 해봐서리..
언제봐도 저런 소스를 만들 수 있는 사람들은 대단해 보이는군요...
분석은 만드는 것에 비하면 새발에 피 입니다..^^
공부하시는 분들 유용하시라고 길게 설명했습니다...

도움되시길...

(붙이기) : 참 위의 방법 말고 다른 방법도 있는데...비슷하기도 하지만 제로님이 만든 위의 함수가 가장 안정적이고 훌륭하게 잘라와서 설명드렸습니다. 참고하시길... 방법은 많다는 것을...





              +:+:+: 최근 게시물을 추출하여 실제로 화면에 출력해봅시다.. :+:+:+

링크해 두었으니 결과도 보시길...^^

실제로 이거 기다리시는 분들이 훨씬 많을 것 같기도 하네요...
앞의 내용들이 다소 난해한데가 좀 있었죠...

그럼 소스부터
바꿔줘야 할 부분 어딘지 아시죠...
(디비 아이디, 패스워드, 디비, 네임, 웹보드이름 2곳)



+:+:+ 아래 줄부터 복사하세요.. :+:+:
// 아래 두 줄의 정보를 바꾸어 주어야 합니다... ++//+//+//+//+//
  $connect=mysql_connect("localhost","디비 아이디","패스워드");
  mysql_select_db("디비 네임");

// 위의 두 줄의 정보를 바꾸세요..  +//+//+//+//+//
  $result=mysql_query("select * from zetyx_board_웹보드이름 order by no desc limit 1");  // 최근 게시물 하나만 출력하도록 하겠습니다.

while($data=mysql_fetch_array($result))
  {
$data[total_comment] = stripslashes($data[total_comment]); // 각 게시물의 코멘트 숫자 읽어오기(앞쪽에 받는 변수 이름은 반드시 $data[total_comment] 일 필요는 없습니다. 즉 $a 이렇게 받아도 된다는 말이죠.. 하지만 좀 더 알아보기 쉽게 하기위해서...^^)
$data[subject] = stripslashes($data[subject]); // 각 게시물의 제목 추출하기
$data[name] = stripslashes($data[name]); // 각 게시물의 작성자 이름
$data[memo] = stripslashes($data[memo]); // 각 게시물의 본문 내용 뽑아오기
$data[email] = stripslashes($data[email]); // 각 게시물 작성자의 email 뽑아오기
$data[homepage] = stripslashes($data[homepage]); // 각 게시물 작성자의 홈페이지 뽑아오기
$data[sitelink1] = stripslashes($data[sitelink1]); // 각 게시물의 링크 #1의 내용 뽑아오기
$data[sitelink2] = stripslashes($data[sitelink2]); // 각 게시물의 링크 #1의 내용 뽑아오기
$data[no]=stripslashes($data[no]); // 각 게시물의 no 추출하기
$data[file_name1] = stripslashes($data[file_name1]); // 각 게시물에서 업로드 시킨 첫 번째 파일의 이름 얻기
$data[file_name2] = stripslashes($data[file_name2]); // 각 게시물에서 업로드 시킨 첫 번째 파일의 이름 얻기
$data[is_secret] = stripslashes($data[is_secret]); // 각 게시물이 비밀글인지 아닌지 체크...
$data[reg_date] = stripslashes($data[reg_date]); // 각 게시물이 쓰여진 날. 시간..
// 실제 출력은 이렇게 하셔야.. echo "date("m-d",$data[reg_date])"
// 카테고리 이름 추출하기
$data[category] = $data[category];
$result_category = mysql_query("select * from zetyx_board_category_웹보드이름 where no='$data[category]'") or die(mysql_error());
$category = mysql_fetch_array($result_category);

// 아래부터는 실제로 그냥 화면에 출력해 보겠습니다. 아무런 장식도 없습니다.
echo "코멘트 갯수 : $data[total_comment]
";

echo "글제목 : $data[subject]
";
echo "글 작성자 : $data[name]
";
echo " 글 내용 : $data[memo]
";
echo "이메일 주소 : $data[email]
";
echo "홈페이지 : $data[homepage]
";
echo "링크 1에 있는 내용 : $data[sitelink1]
";
echo "링크 2에 있는 내용 : $data[sitelink2]
";
echo "글 번호 : $data[no]
";
echo "업로드 #1 파일이름  : $data[file_name1]
";
echo "업로드 #2 파일이름 : $data[file_name2]
";
$now=date("y-m-d", $data[reg_date]);
echo "글쓴 날짜 : $now
";
echo "카테고리 이름 : $category[name]
";
}
  mysql_close();
?>
+:+:+ 윗줄 까지만 복사하세요. :+:+:+




위의 소스 복사해서 한 번 실행해 보세요..
저장하는 방법은 텍스트 에디터(노트패드나, 에디터 플러서 같은..) 에 복사한 내용 붙여넣기 해서..
파일이름은 원하시는 것으로 '파일명.php' 하시면 됩니다.

///////////////////////////////////////////////////
어디다가 저 파일 올리느냐구요.. 님의 계정 아무곳이나
올리면 됩니다.
실행은 http://주소/파일명.php
//////////////////////////////////////////////////

게시물 내용 어떻게 추출해 오는지 아셨죠...
그럼 꾸미는 것은 a piece of cake 입니다.



///////////////////////////////////////////////////////////////////////
// 문자열 끊기 (이상의 길이일때는 ... 로 표시)
//////////////////////////////////////////////////////////////////////


function cut_str($msg,$cut_size) // 설명했죠.. 글자를 원하는 길이만큼 잘라오는 함수라고...
{
if($cut_size<=0) return $msg;
if(ereg("[re]",$msg)) $cut_size=$cut_size+4;
for($i=0;$i<$cut_size;$i++) if(ord($msg[$i])>127) $han++; else $eng++;
$cut_size=$cut_size+(int)$han*0.6;
$point=1;
for ($i=0;$i{
if ($point>$cut_size) { return $pointtmp."...";}
if (ord($msg[$i])<=127)
{
$pointtmp.= $msg[$i];
if ($point%$cut_size==0) { return $pointtmp."..."; }
}
else
{
if ($point%$cut_size==0) { return $pointtmp."..."; }
$pointtmp.=$msg[$i].$msg[++$i];
$point++;
}
$point++;
}
return $pointtmp;
}

function new_list($id, $num, $max) // 함수 선언 부분입니다.(function) 함수 이름(new_list)
{ // $id : 웹보드 이름을 정의, $num : 몇 개의 게시물을 추출할 것인지 정함, $max : 몇 글자까지 보여줄건지 결정..

$dir="http://timebug.net/zboard";  // 이건 그냥 지정해 주세요 그게 제일 편합니다.
// 예를 들면 http://aaa.net/zboard(절대경로), 상대경로로 지정하셔도 되지만 디렉토리 위치에 구애받지 않으시려면 절대경로가 편하실 것 같네요...

// 아래 두 줄의 정보를 바꾸어 주어야 합니다... ++//+//+//+//+//
  $connect=mysql_connect("localhost","디비 아이디","패스워드");
  mysql_select_db("디비 네임");
// 위의 두 줄의 정보를 바꾸세요..  +//+//+//+//+//

  $result=mysql_query("select * from zetyx_board_$id order by no desc limit $num");  
  // 웹보드 이름을 $id로 주고 추출할 게시물의 수를 $num 으로 주었죠.. 매개 변수의 값을 그대로 사용한다는 뜻입니다.

while($data=mysql_fetch_array($result))
  {
$data[total_comment] = stripslashes($data[total_comment]);
$data[subject] = stripslashes($data[subject]);
$data[no]=stripslashes($data[no]);

$data[subject]=cut_str($data[subject], $max); // 제목의 길이를 $max 이내로 잘라서 다시 $data[subject]안에 넣어줍니다.

echo "$data[subject]"  ;
// view.php 사용하시면 아래로 목록이 나오지 않죠. 목록이 나오게 하실려면 zboard.php 사용하시면 됩니다.
        if($data[total_comment]){
           echo"[$data[total_comment]]
";
        }
        else echo "
";
}
  mysql_close(); // 열어놓은 DB를 다시 닫아줍니다.
} // 함수의 끝 부분입니다. 함수는 반드시 '{' 로 열고 '}'로 닫습니다... 쉽지 않나요..^^

// 아래 부터는 위의 함수를 이용해서 화면에 추출하는 방법입니다.
echo ""; // 테이블 시작 부분
echo ""; // 첫 번째 게시물 제목 링크하기
echo ""; // 두 번째 게시물 제목 링크하기
echo ""; // 첫 번째 줄의 종료 태그죠..(쉽게 설명할려고 분리를 그냥 해두었습니다.)

echo ""; // 두 번째 줄 즉, 최근 게시물이 들어올 자리입니다.
echo ""; // 최근 게시물을 뽑아올 보드 이름(zeroskin), 게시물 추출 수(5), 게시물 문자열 최대길이(25)
echo ""; // 최근 게시물을 뽑아올 보드 이름(zeroskin), 게시물 추출 수(5), 게시물 문자열 최대길이(25)
echo ""; // 두 번째 줄의 종료 태그죠..

echo ""; // 세 번째 줄 즉, 최근 게시물 제목이 들어올 자리입니다.
echo ""; // 세 번째 게시물 제목 링크하기
echo ""; // 네 번째 게시물 제목 링크하기
echo ""; // 첫 번째 줄의 종료 태그죠..(쉽게 설명할려고 분리를 그냥 해두었습니다.)

echo ""; // 네 번째 줄 즉, 최근 게시물이 들어올 자리입니다.
echo ""; // 최근 게시물을 뽑아올 보드 이름(edupds), 게시물 추출 수(10), 게시물 문자열 최대길이(25)
echo ""; // 최근 게시물을 뽑아올 보드 이름(utilpds), 게시물 추출 수(10), 게시물 문자열 최대길이(25)
echo "
http://timebug.net/zboard/zboard.php?id=zeroskin>제로보드스킨만들기http://timebug.net/zboard/zboard.php?id=qna>질문과 답변
";new_list(zeroskin, 5, 25);"";new_list(qna, 5, 25);"
http://timebug.net/zboard/zboard.php?id=edupds>교육자료실http://timebug.net/zboard/zboard.php?id=utilpds>스킨자료실
";new_list(edupds, 10, 25);"";new_list(utilpds, 10, 25);"
"; // 테이블 종료하기.. 여기까지가 화면에 출력하는 전부입니다.
?>


출처: 제로보드 팁공유 게시판



    



목록보기 삭제하기

번호 제목 일자
24  [BBS_Tip] 그누보드 최고관리자 자동로그인 가능하게 하기  2014-07-10
23  [BBS_Tip] 그누보드 첨부이미지 가운데 정렬 & 이미지 테두리  2011-06-07
22  [BBS_Tip] 그누보드 외부 페이지, 일반페이지 글쓰기  2017-09-22
21  [BBS_Tip] 그누보드 아이프레임 최근게시물 링크  2017-09-17
20  [BBS_Tip] 그누보드 아이프레임 사용해야 할경우  2017-09-01
19  [BBS_Tip] 그누보드 수정할때 팁  2017-09-20
18  [BBS_Tip] 그누보드 로그인후 페이지 이동  2017-09-19
17  [BBS_Tip] 그누보드 댓글, 코멘트 cheditor 사용하기  2017-09-17
16  [BBS_Tip] 그누보드 댓글 코멘트 html 쓰기  2017-09-17
15  [BBS_Tip] 그누보드 날짜 형식 변경  2017-09-20
14  [BBS_Tip] 그누보드 게시물 프린트 하기  2012-11-13
13  [BBS_Tip] 그누보드 게시물 이미지 클릭시 새창 안 뜨게 하기  2017-09-01
12  [BBS_Tip] 그누보드 게시물 모바일 페이지 만들기  2012-11-13
11  [BBS_Tip] 그누보드 검색로봇 방문자수 제외  2017-08-31
10  [BBS_Tip] 그누보드 검색결과 페이지 태그 안 나오게 하기  2018-04-04
9  [BBS_Tip] 권한밖의 게시물 클릭시 로그인창 안나오게  2008-04-27
8  [BBS_Tip] 관리자페이지 최근로그인 나타내기  2009-02-23
7  [BBS_Tip] 관리자아이디 변경팁  2008-06-06
6  [BBS_Tip] 관리자만보고싶은 내용작성시.  2008-04-27
5  [BBS_Tip] 게시물역순정렬  2007-12-06
4  [BBS_Tip] 게시물 역순 정렬방법  2008-04-27
 [BBS_Tip] 게시물 데이타 뽑는 여러가지  2009-02-02
2  [BBS_Tip] mysql_fetch_array(): 경고 에러가 뜰때,  2010-09-29
1  [BBS_Tip] fread php Warning 에러  2010-12-02
목록보기
123