mysql 질문

mysql 질문

QA

mysql 질문

본문

좌석예약시스템 같은 것을 구축하려고 합니다. 
1  2  3  4  5  6 
7  8  9 ..... 

이렇게 좌석이 있고 로그인 후 각 좌석이 예약돼있으면 빨간색, 비어있으면 파란색으로 표기하려고 합니다. 

문제는 해당 좌석 status를 받아와야 된다는건데 
mysql에 테이블을 만들고, 테이블 구조를 

---N이면 비어있고, Y면 차있다는 뜻--- 
seatno    seatstatus 
1            N             
2            Y 
3            N 
4            Y 

이런식으로 구성하여 div class 값을 available, unavailable 두개로 만들어 만약 1번 좌석이 seatstatus 값이 Y면 if의 echo 문을 활용해 div class="" 값에 available을, 아니라면 unavailable을 띄우도록 하려는데 감이 안오네요. 

일일이 1번 좌석부터 n번 좌석까지 select 구문을 활용해 좌석값을 불러와 변수에 저장해야할까요? 

$sql = "select seatstatus from seat_db where seatno=1" 
으로 하고 $seat1status=db값 
..... n번좌석까지 쭉쭉쭉...... 

어떻게 해야 효율적으로 코드를 작성할 수 있을까요.

이 질문에 댓글 쓰기 :

답변 3


<?php
$sql = "select seatstatus from seat_db order by seatno";
$result = sql_query($sql);
while ($row = sql_fetch_array($result)) {
    if ($row['seatstatus'] == 'Y')
        $class = "unavailable";
    else
        $class = "available";
?>
<div class="<?php echo $class ?>">
    <?php echo $row['seatno'] . '번 좌석' ?>
</div>
<?php } ?>

헉! 감사합니다.
좌석이 7개씩 줄바꿈처리가 돼있는데 혹시 이 경우는 seatno에 따라 어떻게 처리하면 될까요?
총 21개의 좌석이 있습니다.

 1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21

while($row = sql_fetch_array($result)) {
  if ($row['seatno'] % 7 == 0)
    echo "<br>";

}


https://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=qna_function&wr_id=97609

다음과 같은 방식으로 구현해 볼 수 있을 것 같습니다.

1. 데이터베이스 연결 설정:


// 예시 데이터베이스 연결 설정
$db_host = "localhost";
$db_user = "사용자명";
$db_pass = "비밀번호";
$db_name = "데이터베이스명";
$conn = mysqli_connect($db_host, $db_user, $db_pass, $db_name);
if (!$conn) {
    die("데이터베이스 연결 실패: " . mysqli_connect_error());
}

그누보드에서는 이미 DB설정이 되어 있으므로 패스하셔도 됩니다.

 

2. 좌석 상태 가져오기


function getSeatStatus($seatNumber, $conn) {
    $sql = "SELECT seatstatus FROM seat_db WHERE seatno = $seatNumber";
    $result = mysqli_query($conn, $sql);
    if ($result) {
        $row = mysqli_fetch_assoc($result);
        if ($row['seatstatus'] == 'Y') {
            return 'available'; // 좌석이 예약되어 있음
        } else {
            return 'unavailable'; // 좌석이 비어 있음
        }
    } else {
        return 'error'; // 오류 발생
    }
}
// 사용 예시:
$seatNumber = 1; // 가져올 좌석 번호
$seatStatus = getSeatStatus($seatNumber, $conn);

모든 좌석을 가져오는 대신, 필요한 좌석만 가져오는 것이 효율적 이라 생각합니다.

 

3. 웹 페이지에 좌석 표시하기


<div class="seat <?php echo $seatStatus; ?>">1</div>
<div class="seat <?php echo $seatStatus; ?>">2</div>
<!-- 나머지 좌석들도 동일한 방식으로 표시 -->

<?php echo $seatStatus; ?> 부분은 좌석의 상태에 따라 "available" 또는 "unavailable"을 출력하게 되고, 이렇게 하면 각 좌석을 빨간색 또는 파란색으로 표시할 수 있습니다.

 

참고하셔서 원하시는 형태로 구현하시면 되지 않을까 생각합니다.

영화관 같은 서비스를 하신다고 생각해 보면

하루에 몇 번 예약이 가능한가요?

답변을 작성하시기 전에 로그인 해주세요.
전체 422
QA 내용 검색

회원로그인

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