매치 게시판 질문 드립니다.
본문
예를 들어
남자 20명, 여자 20명이 소개팅을 한다고 가정을 하겠습니다.
서로 호감이 가는 사람을 매칭하는 게시판을 만들여고 합니다.
어떻게 하면 좋을까요?
감사합니다.
답변 3
아래의 예제 코드를 한번 참고를 해보세요.
1. 테이블 생성
CREATE TABLE g5_dating_likes (
id INT(11) NOT NULL AUTO_INCREMENT,
from_mb_id VARCHAR(20) NOT NULL,
to_mb_id VARCHAR(20) NOT NULL,
reg_date DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id),
UNIQUE KEY unique_like (from_mb_id, to_mb_id)
);
2. 호감 표시 처리
<?php
include_once('./_common.php');
// 로그인 체크
if (!$is_member) {
alert('로그인 후 이용해주세요.', G5_BBS_URL.'/login.php');
}
$to_mb_id = isset($_POST['to_mb_id']) ? trim($_POST['to_mb_id']) : '';
if (empty($to_mb_id)) {
alert('대상 회원이 지정되지 않았습니다.');
}
// 자기 자신에게는 호감 표시 불가
if ($to_mb_id == $member['mb_id']) {
alert('자기 자신에게는 호감을 표시할 수 없습니다.');
}
// 호감 정보 저장
$sql = " INSERT INTO g5_dating_likes
SET from_mb_id = '{$member['mb_id']}',
to_mb_id = '{$to_mb_id}',
reg_date = NOW()
ON DUPLICATE KEY UPDATE
reg_date = NOW() ";
sql_query($sql);
// 상호 호감 체크
$sql = " SELECT COUNT(*) as cnt FROM g5_dating_likes
WHERE from_mb_id = '{$to_mb_id}' AND to_mb_id = '{$member['mb_id']}' ";
$row = sql_fetch($sql);
if ($row['cnt'] > 0) {
// 상호 호감이 확인된 경우
alert('매칭이 성사되었습니다!', G5_BBS_URL.'/dating_match.php');
} else {
// 단방향 호감만 표시된 경우
alert('호감을 표시했습니다.', G5_HTTP_BBS_URL.'/board.php?bo_table=dating_profiles');
}
?>
3. 매칭결과 페이지 예시
<?php
include_once('./_common.php');
// 로그인 체크
if (!$is_member) {
alert('로그인 후 이용해주세요.', G5_BBS_URL.'/login.php');
}
// 상호 호감 회원 목록 가져오기
$sql = " SELECT B.mb_id, B.mb_nick, B.mb_name, B.mb_email
FROM g5_dating_likes A
JOIN g5_dating_likes B ON A.from_mb_id = B.to_mb_id AND A.to_mb_id = B.from_mb_id
JOIN g5_member C ON B.from_mb_id = C.mb_id
WHERE A.from_mb_id = '{$member['mb_id']}'
ORDER BY B.reg_date DESC ";
$result = sql_query($sql);
$g5['title'] = '매칭 결과';
include_once(G5_PATH.'/head.php');
?>
<div class="matching-results">
<h2>매칭 결과</h2>
<?php if (sql_num_rows($result) > 0) { ?>
<div class="matched-members">
<h3>상호 호감이 확인된 회원</h3>
<ul>
<?php for ($i=0; $row=sql_fetch_array($result); $i++) { ?>
<li>
<div class="member-info">
<strong><?php echo $row['mb_nick']; ?></strong>
<a href="<?php echo G5_BBS_URL ?>/memo_form.php?me_recv_mb_id=<?php echo $row['mb_id'] ?>" class="btn btn-primary">쪽지 보내기</a>
</div>
</li>
<?php } ?>
</ul>
</div>
<?php } else { ?>
<p class="text-center">아직 매칭된 회원이 없습니다.</p>
<?php } ?>
</div>
<?php
include_once(G5_PATH.'/tail.php');
?>
기획을 더 구체적으로 해보세요.
답변 감사합니다.