보급형 방구석 개발자
반응형

PHP/게시판 만들기 27

PHP RSS feed 만들기

게시판의 공지사항 정도는 RSS로 받아보면 어떨까 하는 생각이 들어, RSS feed 기능을 추가하고 싶었는데 아래는 비교적 쉽게 사용할 수 있는 RSS feed 만들기 설명이다. http://www.ibm.com/developerworks/xml/library/x-phprss/?ca=dgr-lnxw01PHP-RSS 다만 영문을 기준으로 한 것이라 약간 고칠 부분도 있다. 태그에 en-us 라고 되어 있는 것은 ko 로 바꾸면 된다. 그리고 내 경우엔 htmlentities() 함수 부분에서 UTF-8을 제대로 처리해 주지 못하는지 어쩌는지 에러가 발생해 일부 코드에선 빼버렸다. 하단엔 RSS reader 기능까지 설명이 되어 있는데 사실 이 부분의 경우 외부 소스를 사용하는 것인데 이해가 잘 되지 않아..

게시판 DB 스키마 재정의

2009/02/12 - [게시판 만들기] - 게시판 DB 스키마 정리게시판 만들 때 DB의 스키마를 정리를 했었는데 사용하다 보니 문제점이 발견되었다.한 개의 게시판만 생성해서 사용할 때는 별 관계가 없지만 다수의 게시판을 생성했을 때 여러 가지 복잡하고 미숙한 부분들이 나타나서 스키마를 다시 재정의했다.#기본 게시판 테이블 우선 DB 테이블을 생성 시에 공지사항 게시판을 기본으로 생성하도록 했다.제일 하단에 보면 코드 테이블에 공지사항 게시판 값이 들어간 것을 알 수 있다.이렇게 부모글과 답변글에 대한 테이블을 분리해놓고 나니 처리하기가 한경 수월해졌다.여러 개의 게시판을 생성하더라도 호출이나 처리 시에는 게시판 코드값만 넣어서 처리하도록 했다.$board = 'bbs_'.$code;$sql = "SE..

MVC 모델로 본 게시판 만들기

줏어들은 건 있어서 디자인패턴이란 책도 집에 한 권 있다. (아, 물론 읽어 본 적은 없다...그냥 소장만 하고 있다.) 문득 작년에 본 루비온레일즈(처음엔 루비온레일즈로 게시판을 만들려고 했다.) 책에서 MVC 모델을 읽은 기억이 났다. 그래서 구글링을 통해 MVC 모델로 본 게시판 만들기를 정리해 봤다. (사실 이런건 맨 처음에 해야하는건데...) MVC(Model-View-Controller) 모델은 소프트웨어 재사용성이나 협업에 있어서 중요한 역할을 하는 것 같다. (내 관심은 재사용성이다.) Model: 비즈니스 로직과 처리 View: 사용자 인터페이스(UI) Controller: 네비게이션과 입력 MODEL 우선 Model은 사용자나 프로그램 상에서 필요로 하는 하나의 객체라고 생각하면 된다...

해결못한 한글입출력 문제

카페24 웹호스팅 중에서 제일 저렴한 것으로 테스트 중인데, 물론 DB는 utf-8이다. 여기서는 특별히 설정을 해주지 않아도 utf-8로 한글 입출력하는데 문제가 없다. 그런데, 나야나에서 무료로 계정을 나눠주어서 역시나 utf-8 DB로 계정을 받아서 테스트를 했는데... 영문 입출력엔 문제가 없으나, 한글은 입출력이 안되는 문제가 있다. 게시판 소스코드가 바뀐 것도 아닌데, 왜 이런 문제가 생기는지 카페24 DB 셋팅과 똑같이 해보아도 안된다. 아직 해결못한 과제다.

게시판 DB 스키마 정리

2009/02/07 - [잡담] - 추천서적 : 성공적인 웹 프로그래밍 PHP와 MySQL (제3판)"성공적인 웹 프로그래밍 PHP와 MySQL" 이라는 책을 읽고 난 뒤 DB의 스키마를 정리해 보았다.(읽을 수록 괜챦은 책이란 생각이 든다.)board (code, main_no, id, title, name, contents, passwd, date, count, email, reply_no, rel_no, depth, filename)code (num, code, bbs_name, passwd, readonly) 굵은체로 표시된 것이 primary key고, code 테이블에 이탤릭체로 표시된 code 는 board 테이블을 참조하는 foreign key다.맨 처음 게시판을 만들 때와는 조금 달라졌다..

게시판 검색 기능 수정

2008/11/22 - [게시판 만들기] - 검색 기능 추가 이전 검색기능은 잘 모르는 상태에서 만들다 보니 실행이 잘 안됐다. 아래는 수정한 코드다. //검색 시 DB 쿼리에 추가할 부분 //form submit 할 때 히든값으로 $mode 값을 넘긴다. if($mode=='search') { switch ($key) { case "title": $s_sql .= " AND title LIKE '%$keyword%' "; break; case "contents": $s_sql .= " AND contents LIKE '%$keyword%' "; break; case "name": $s_sql .= " AND name LIKE '%$keyword%' "; break; } } ... //DB로부터 값을 가..

게시판 만들기 진행상황

마지막으로 글을 올린지도 벌써 한달이 지났군요. 그 사이 쇼핑몰을 공부하면서 만드느라 게시판 쪽에 신경을 쓸 겨를이 없었는데, 어차피 이 게시판도 쇼핑몰에서 쓸 것이라 계속 손을 보고는 있습니다. 현재는 CSS를 적용해서 나름 조금 더 깔끔하게 꾸몄습니다. 아직 회원 관리 기능과의 접목과 게시판 관리 기능 등등이 할 일이 많네요. 제일 고민되는 부분이 사이트와의 연동인데, 옛 제로보드처럼 위의 게시판 본체 부분을 두고 상단과 하단에 다른 소스를 불러와서 전체 사이트와 연동이 되게 해야 하나...걱정입니다. 쇼핑몰에서 보이는 부분과 관리자 영역에서 보이는 상하단 부분이 다르다 보니, 이걸 합리적으로 해결하는 방법을 찾고 있습니다. (도와주세요...-_-) 그나저나 게시판 만들면서 공부했던 것들이 쇼핑몰을 ..

게시판 만들기 중간 소스 정리

요 사이 다른 것을 만드느라 게시판 만들기는 당분간 좀 유보했습니다. 자기가 만들고도 나중에 헷갈리는 경우를 방지하기 위해 중간 중간 정리하는 차원에서 소스를 올립니다. 그러나... 혹시라도 이 소스를 받으시는; 분들이 계시다면... 누차 말씀드리지만, 본 소스는 강좌용이 아닌 개인공부용으로 개발 중인 것이라 오류가 있을 수도 있고 최적화가 되어 있지 않습니다. 설치 전에 반드시 db_connect.php 파일을 본인의 데이터베이스 정보에 맞게 수정하셔야 하며, 이후에 create_db.php를 웹브라우저에서 실행하시면 됩니다. 소스를 보시고, 더 좋은 방법이나 개선방법을 알고 계시다면 공유 부탁드려요~ ^^; 지금은 잠시 손을 놓고 있지만, 1. 멀티게시판 (공지,질문 등등의 게시판을 하나의 소스로 사..

첨부파일 수정하기

게을러서 이제야 글을... 기존에 첨부 파일 하나를 추가할 수 있는 기능을 작성했는데, 이번에는 작성한 글을 수정하는 기능도 변경해야 한다. //기존 첨부파일 여부 체크 if(strlen($row['filename']) > 0) { $path = "upload/".$row['filename']; //Array 값으로 분리, [0]에는 "_"이전 값이, [1]에는 "_"이후 값이 들어있다. $chk_name = explode("_", $row['filename']); $old_file = $chk_name[sizeof($chk_name)-1];} 상단에서 일단 첨부파일이 있는지 체크를 한다.그리고, 본문에서 첨부파일이 있을 때는 보여주는 코드를 작성한다. 없다면 그냥 첨부할 수 있는 폼을..

여러 개 파일 첨부하기

여러 개의 파일을 첨부하는 것도 그리 어렵지 않다. uploadedfile[]같 배열값으로 넘겨주면 된다.$max_file_num = 3; //업로드할 파일 갯수 지정 echo "\n"; for($i=0; $i 파일 첨부 (1M이하)  \n"; } echo "\n"; 그리고 처리하는 부분에서 for문을 돌리면 된다.$file_count = count($_FILES['uploadedfile']['name']);$count = $file_count; for($i=0; $i  위에서 $count 변수는 실제 업로드된 갯수를 말한다. 로드를 3개까지 할 수 있다면, 실제로는 하나만 업로드를 할 수도 있기 때문에 별도로 체크를 했다. 아마도 이런 식으로 하면 여러 개의 파일을 업로드 하는데도..

파일 첨부하기

파일 업로드를 구현하는데 많은 시간이 걸렸다. 아니 정확히 말하면 업로드된 파일을 수정하는데 시간을 많이 잡아먹었다. 첨부파일을 하나 올리는 것은 그리 어렵지 않게 했으나, 욕심이 생겨 처음부터 3개 정도의 파일을 올리는 것이 좋겠다 싶어 3개의 파일을 첨부할 수 있도록 했다. 뭐 이것도 그럭저럭 됐다. 그런데 문제는 올려진 파일을 수정하는데서부터 어려움을 겪기 시작했다. 파일이 3개다 보니 수정 시에 체크할 것도 많아지고, 제대로 동작이 안되는 일이 빈번했다. 체크된 파일만 삭제해야 하거나 기존 첨부파일은 그대로 두고 새롭게 파일을 올리거나, 기존 첨부파일을 덮어쓰거나...여러 가지 경우의 수가 발생했는데 이것을 다 핸들링하는 것이 좀 버거웠다. 그래서, 결국 하나의 파일만 우선 첨부하거나 첨부파일이 ..

검색 기능 추가

검색 기능을 추가했다. list.php 상단에 검색 옵션을 체크하고 검색 옵션이 있을 경우 별도의 쿼리문을 돌려 페이지를 보여주는 식이다. //검색옵션 관련 $search_option = $_POST[search_option]; $keyword = $_POST[keyword]; if(strlen($keyword) > 0) { switch ($search_option) { case "all": $sql = "SELECT *FROM board WHERE (title LIKE '%$keyword%' AND reply_no=0) OR (content LIKE '%$keyword%' reply_no=0) ORDER BY main_no DESC"; break; case "title": $sql = "SELECT *..

답글 수정 및 삭제하기

답글 수정 및 삭제하기 답글을 어떻게 수정할까 하다가 아무래도 답글이 많이 달리면 현재 창에서 수정하기가 힘들테니 새로운 창을 띄워서 하기로 했다. 우선 read.php에서 답글을 뿌려주는 부분에 수정과 삭제 링크를 걸고, edit_reply.php와 edit_reply_ok.php를 새로 작성했다. 하지만 이전에 본문 수정과 삭제 코딩을 해두었기 때문에 한결 편하게 작성이 가능하다. edit_reply.php의 앞 부분. edit_reply_ok.php에서 주의할 부분만 보면,$pw_sql = "SELECT passwd FROM board WHERE rel_no=$main_no AND reply_no=$reply_no"; 위의 SQL문에서 앞서 넘겨받은 main_no를 rel_no에 대입하는 부분이다...

답변 쓰기 기능 작성 (중간 소스정리)

답변하기 작성 와우, 지금까지 만들었던 게시판 기능 중에 제일 복잡하지 않았나 싶다. Thread 방식이라고 해야 하나? 지메일과 같은 형태로 코딩을 하고 싶었다. (아 물론 지메일은 Ajax 방식이라고 하더라...여기까지 건드리기에는 내공 부족이고...그냥 보이는 형태를 그렇게 하고 싶단 얘기다.) 아웃룩을 쓰다가 지메일을 쓸 때는 처음엔 도대체 어떻게 읽고 찾아야 하는지 헷갈렸지만 이제는 지메일처럼 주루룩 관련 내용들이 엮어져 있다보니 이게 매우 편리해졌다. (참고로 맥의 iMail에서는 제목을 클릭하면 주고 받은 관련 이메일들의 제목도 하이라이팅해줘서 매우 시각적으로 찾기가 쉽다.) 답변하기(reply.php)도 edit.php와 edit_ok.php의 소스를 그대로 가져와 손을 본다. 여기서 중요..

페이지 수 출력하기

얼추 페이지 수 출력하기를 했으나 나미지 부분을 완성하는게 생각보다 복잡해서 모두 삭제를 하고"PHP4 쇼핑몰 만들기"란 책에 나와 있는 루틴을 참고해서 수정을 했다.(나중에 좀더 좋은 루틴이 생각나면 수정하기로 하고 일단은 패스~) 1) mysql_data_seek($result, $start_no); $total_page = ceil(($total_article)/$limit);?> 아래 부분은 지정된 갯수만큼 게시판에 글을 출력하고 빠져나오는 while() 구문이다.한 페이지에 보여줄 글 갯수는 상단에서 $limit = 10; 으로 10개만 출력이 되도록 지정을 했다. $line = 0; //get data array from query result and show on the bo..

반응형