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

mysql 질문 채택완료

손이시려워꽁 2년 전 조회 2,846

좌석예약시스템 같은 것을 구축하려고 합니다. 
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개

채택된 답변
+20 포인트
2년 전

<?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 } ?>

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

답변에 대한 댓글 3개

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

1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
마르스컴퍼니
2년 전
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
손이시려워꽁
2년 전
대단히 감사합니다.

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

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

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

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

답변에 대한 댓글 1개

엑스엠엘
2년 전
민감한? 부분이면 트랜잭션도 고려해 보세요

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

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

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

</p>

<p>// 예시 데이터베이스 연결 설정

$db_host = "localhost";

$db_user = "사용자명";

$db_pass = "비밀번호";

$db_name = "데이터베이스명";</p>

<p>$conn = mysqli_connect($db_host, $db_user, $db_pass, $db_name);</p>

<p>if (!$conn) {

    die("데이터베이스 연결 실패: " . mysqli_connect_error());

}

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

 

2. 좌석 상태 가져오기

</p>

<p>function getSeatStatus($seatNumber, $conn) {

    $sql = "SELECT seatstatus FROM seat_db WHERE seatno = $seatNumber";

    $result = mysqli_query($conn, $sql);</p>

<p>    if ($result) {

        $row = mysqli_fetch_assoc($result);

        if ($row['seatstatus'] == 'Y') {

            return 'available'; // 좌석이 예약되어 있음

        } else {

            return 'unavailable'; // 좌석이 비어 있음

        }

    } else {

        return 'error'; // 오류 발생

    }

}</p>

<p>// 사용 예시:

$seatNumber = 1; // 가져올 좌석 번호

$seatStatus = getSeatStatus($seatNumber, $conn);

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

 

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

</p>

<p><div class="seat <?php echo $seatStatus; ?>">1</div>

<div class="seat <?php echo $seatStatus; ?>">2</div>

<!-- 나머지 좌석들도 동일한 방식으로 표시 -->

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

 

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

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

답변에 대한 댓글 2개

손이시려워꽁
2년 전
윗 분이 먼저 답글을 달아주셔서 채택을 못해드리는 점 굉장히 아쉽습니다.
친절한 답변 대단히 감사드립니다.
웹메이킹
2년 전
ㅎㅎ 도움이 되셨다면 다행입니다. 즐거운 하루 되세요^^

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

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

로그인