Skip to content

rlanrid/TrendDevice

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

41 Commits
 
 
 
 

Repository files navigation

Trend Device

PHP를 이용하여 휴대폰 비교하기 사이트를 만들었습니다.

프로젝트 소개

Trend Device는 직관적이고 사용하기 편리한 인터페이스를 제공하여 사용자가 원하는 휴대폰 모델을 선택하고, 선택한 모델들을 한눈에 비교할 수 있도록 합니다.

각 휴대폰 모델에는 사진, 기술 사양, 가격 등의 정보가 제공되어 사용자가 원하는 정보를 쉽게 찾을 수 있습니다.

또한, 사용자들은 자신의 요구 사항과 선호도에 맞는 휴대폰을 찾기 위해 여러 기능을 필터링하고 정렬할 수 있습니다. 이를 통해 사용자들은 다양한 옵션을 비교하고, 가장 적합한 휴대폰 모델을 선택할 수 있게 됩니다.

Trend Device는휴대폰의 장단점을 명확히 보여주며, 사용자들이 최종 결정을 내리기 위한 정보를 제공하여 휴대폰 구매 과정을 보다 간편하고 이성적으로 할 수 있도록 도와줍니다.

작업 시간: 3주

팀 소개

김우주 서유진 윤영식
@GIT @GIT @GIT

주요 기능

  1. 비교: 삼성과 애플의 다양한 스마트폰 모델의 사양, 기능, 가격 등을 비교할 수 있는 환경을 제공하며, 2개에서 최대 4개까지 사용자들이 설정한 환경에서 비교, 분석을 할 수 있습니다.
  2. 경험: 사용자들의 다양한 제품 사용경험을 리뷰를 통해 공유하여 제품 사용경험을 미리 파악 할수 있으며, 상품과 상품을 설정하여 토론을 진행하여 제품을 구매하는 부분에 참고할 수 있습니다.

사이트 바로가기

Trend Device

작업 순서

작업과정

기여 방법

저는 이 페이지의 게시판, 게시글, 위시리스트, 댓글, 공감 등의 기능을 맡았습니다.

게시판

  1. board테이블에서 삭제되지 않은 게시글 정보들을 boardId를 기준으로 내림차순해서 가져옵니다.
  2. 가져온 정보들 중에서 카테고리와 일치하는 게시글들을 추려서 가져옵니다.
  3. 데이터를 10개씩 페이지로 나누어 화면에 정보를 보여줍니다.
// 삭제여부는 fDelete로 판단, blogID를 기준으로 내림차순
$boardSql = "SELECT * FROM FBoard WHERE fDelete = 1 ORDER BY blogId DESC";
$FboardInfo = $connect -> query($boardSql);

// $viewLimit과 viewNum은 설정한 변수, 카테고리에 알맞는 게시글들을 갯수제한에 맞게 불러옴
$sql = "SELECT * FROM FBoard WHERE fDelete = 1 AND fCategory = '$category' ORDER BY blogId DESC LIMIT {$viewLimit}, {$viewNum}"; 
$result = $connect -> query($sql);


게시글

  1. 사용자가 클릭한 게시글의 정보를 boardId와 카테고리를 이용해 가져옵니다.
  2. 가져온 데이터를 fetch_array 함수를 사용해 배열로 반환한 후, 각각 데이터를 보여줍니다.
  3. 이전 글과 다음 글은 boardId가 작거나 큰 Id들 중 하나만 가져와서 페이지를 만들었습니다.
  4. 처음 글과 마지막 글도 이전 글과 비슷한 맥락으로 가져왔습니다.
// boardId, 카테고리에 맞는 게시글 가져오기
$boardSql = "SELECT * FROM FBoard WHERE blogId = '$blogId' AND fCategory = '$category'";
$boardResult = $connect -> query($boardSql);
$boardInfo = $boardResult -> fetch_array(MYSQLI_ASSOC);

// 이전글(다음 글은 내림차순으로 설정)
$prevBoardSql = "SELECT * FROM FBoard WHERE blogId > '$blogId' AND fCategory = '$category' ORDER BY blogId ASC LIMIT 1";
$prevBoardResult = $connect -> query($prevBoardSql);
$prevBoardInfo = $prevBoardResult -> fetch_array(MYSQLI_ASSOC);

현재의 boardId보다  boardId들을 불러온  올림차순으로 1개만 가져오면 이전 글을 가져올  있습니다.


댓글

  1. 댓글 기능을 만들기 위해 댓글테이블을 새로 만들었습니다.
  2. 댓글 작성 시에 게시글의 위치와 댓글 작성자를 알아야하기 때문에 해당 게시글의 boardId와 memberId를 저장합니다.
  3. 삭제 또는 수정 시에는 memberId와 commentId를 확인해 일치하는 경우에만 가능하게 만들었습니다.
  4. 댓글을 보여주는 작업은 해당 게시글의 boardId와 댓글 작성시에 저장해둔 boardId를 비교하여 일치하는 데이터만 보여줍니다.
// 사용자가 입력한 정보를 POST방식으로 받아와서 데이터베이스에 저장
$blogId = $_POST['blogId'];
$memberId = $_POST['memberId'];
$commentName = $_POST['name'];
$commentPass = $_POST['pass'];
$commentWrite = $_POST['msg'];
$regTime = time();

$sql =  $sql = "INSERT INTO boardComment(memberId, boardId, commentName, commentPass, commentMsg, commentDelete, regTime) VALUES('$memberId', '$blogId', '$commentName', '$commentPass', '$commentWrite', '1', '$regTime')";
$result = $connect -> query($sql);


// 삭제 또는 수정 시에는 댓글 소유자 확인
$commentPass = $_POST['commentPass'];
$commentId = $_POST['commentId'];

$sql = "SELECT commentPass FROM boardComment WHERE commentPass = '$commentPass' AND commentId = '$commentId'";
$result = $connect -> query($sql);


// boardId와 일치하는 댓글만 가져오기
$commentSql = "SELECT * FROM boardComment WHERE boardId = '$blogId' AND commentDelete = '1' ORDER BY commentId ASC";
$commentResult = $connect -> query($commentSql);
$commentInfo = $commentResult -> fetch_array(MYSQLI_ASSOC);
$commentCount = $commentResult -> num_rows;


공감

  1. 공감기능도 댓글기능과 마찬가지로 공감테이블을 만들었습니다.
  2. 공감을 했을경우 boardId를 저장하고 session에서 memberId를 받아온 뒤 일치하는 이미 공감을 했다면 알림창을 띄우고, 공감을 하지 않은 경우에는 버튼의 색상을 변경하도록 만들었습니다.
  3. session에서 memberId를 받아오고, 만약 받아올 memberId가 없다면, 로그인 창으로 이동하게됩니다.
// 게시물에 공감 숫자 증가
$updateLikeSql = "UPDATE FBoard SET fLike = fLike + 1 WHERE blogId = '$blogId'";
$result = $connect->query($updateLikeSql);

if($result){
    // 공감한 경우, LikedPosts 테이블에 사용자, 게시글 정보 등을 기록
    $insertLikeSql = "INSERT INTO LikedPosts (memberId, blogId, likeCategory) VALUES ('$memberId', '$blogId', '$category')";
    $connect->query($insertLikeSql);

    echo json_encode(["info" => "success"]);
} else {
    echo json_encode(["info" => "error"]);
}


위시리스트

  1. 위시리스트는 따로 테이블을 만들기보다, 기존의 공감 테이블을 활용했습니다.
  2. 상품게시판에서 찜하기(하트 버튼)을 클릭하면, 공감 테이블에 phoneId와 memberId를 저장합니다.
  3. 마이페이지의 위시리스트에 이동하면 JOIN문을 사용하여 상품테이블과 공감 테이블을 합쳐줍니다.
  4. 합친 데이터에서 memberId와 phoneId 등을 비교하여 가져온 데이터의 정보들을 보여줍니다.
// 세션정보
$memberID = $_SESSION['memberID'];
$youName = $_SESSION['youName'];

// 상품정보 가져오기 (공감 테이블과 폰 테이블을 JOIN문으로 합침)
$wishSql = "SELECT L.memberId, L.phoneId, L.likeCategory, P.phoneId, P.pTitle, P.pImgFile FROM LikedPosts L JOIN Phone P ON L.phoneId = P.phoneId WHERE L.memberId = '$memberID' ORDER BY L.likeId DESC";
$wishResult = $connect -> query($wishSql);
$wishInfo = $wishResult -> fetch_all(MYSQLI_ASSOC);

$wishCount = $wishResult->num_rows;


트러블슈팅

공감 오류
- 문제 원인   

$unlikeSql = "UPDATE FBoard SET fLike = fLike - 1 WHERE blogId = '$blogId'";
$connect->query($unlikeSql);
$deleteLikeSql = "DELETE FROM LikedPosts WHERE blogId = '$blogId'";
$connect->query($deleteLikeSql);

memberId와 $memberId (현재 세션의 memberID)가 같은 경우에만 공감테이블에서 삭제해야 하는데 그 부분이 빠졌다.

- 문제 해결

$memberId = $_SESSION['memberID'];
$unlikeSql = "UPDATE FBoard SET fLike = fLike - 1 WHERE blogId = '$blogId'";
$connect->query($unlikeSql);
$deleteLikeSql = "DELETE FROM LikedPosts WHERE memberId = '$memberId' AND blogId = '$blogId'";
$connect->query($deleteLikeSql);

현제 세션을 가져와서 조건문에 넣으면 해결된다.

스택

Environment

Development

JavaScript HTML5 CSS3 PHP

Communication

About

PHP를 이용해 휴대폰 비교하기 사이트를 만들었습니다.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published