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 } ?>
다음과 같은 방식으로 구현해 볼 수 있을 것 같습니다.
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"을 출력하게 되고, 이렇게 하면 각 좌석을 빨간색 또는 파란색으로 표시할 수 있습니다.
참고하셔서 원하시는 형태로 구현하시면 되지 않을까 생각합니다.
!-->!-->!-->영화관 같은 서비스를 하신다고 생각해 보면
하루에 몇 번 예약이 가능한가요?