테스트 사이트 - 개발 중인 베타 버전입니다

매치 게시판 질문 드립니다. 채택완료

alexseo 8개월 전 조회 1,735

예를 들어

남자 20명, 여자 20명이 소개팅을 한다고 가정을 하겠습니다.

서로 호감이 가는 사람을 매칭하는 게시판을 만들여고 합니다.

어떻게 하면 좋을까요?

감사합니다.

댓글을 작성하려면 로그인이 필요합니다.

답변 3개

채택된 답변
+20 포인트
8개월 전

아래의 예제 코드를 한번 참고를 해보세요.

 

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');
?>

 

 

 

 

 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

a
8개월 전

답변 감사합니다.

 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

s
sinbi Expert
8개월 전

기획을 더 구체적으로 해보세요.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인