매치 게시판 질문 드립니다.

매치 게시판 질문 드립니다.

QA

매치 게시판 질문 드립니다.

본문

예를 들어

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

 

 

 

 

 

답변을 작성하시기 전에 로그인 해주세요.
전체 4

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT