영화 예매하기 기능을 이어서 구현하겠다.
3. seat_id 입력받기
3-1. screening_date_id도 제대로 입력받았다면 해당 movie_id, screening_date_id에 맞는 theater_id와 total_seat를 출력한다. (특정 영화, 특정 상영 일자에 맞는 상영관은 하나 밖에 없으므로 따로 입력을 받지 않고 바로 출력한다.)
3-2. 해당 screening_date_id에 맞는 theater의 seat_id를 seat_assignment가 true일 때(예매 가능할 때)만 출력한다.
이 정보를 출력함으로써 예매할 특정 영화, 상영일정, 상영관에 맞는 seat_id를 쉽게 알 수 있다.
3-3. 출력된 seat_id를 보고 예매할 영화의 seat_id를 클릭한다. 그리고 선택된 seat_id를 저장한다.
[1] 같이 seat_id를 받아와서 출력하니 아무것도 안나왔다.

[2] SQL 쿼리를 직접 테스트 해보니 seat_id 값이 나왔다.

[3] 받아온 screening_date_id의 type을 확인해보니 [4]처럼 int가 아닌 str이였다.


이렇게 수정해도 seat_id 가 안나왔다.
오류 원인 : PostgreSQL을 사용하다가 sqlite으로 바꾸다가 id 자료형을 변경하였는데 그 과정에서 안맞는 부분이 생김
[6]의 Seat 의 screening_date_id 를 [5]에 맞도록 1~15로 수정하겠다.


[7], [8], [9] 테이블 수정



이제 잘 출력된다.
최종 코드
routes.py
@app.route("/movies/book/screening_date_id/<name>/<int:member_id>/<int:movie_id>")
def select_screening_date_id(name, member_id, movie_id):
result2 = print_screening_schedule(movie_id)
movie_title = get_movie_title(movie_id)
return render_template('user/screening_date_id_4.html', name=name, member_id=member_id, movie_id=movie_id, movie_title=movie_title, result=result2)
@app.route("/movies/book/valid_screening")
def select_screening():
name = request.args.get('name')
member_id = int(request.args.get('member_id'))
movie_id = int(request.args.get('movie_id'))
screening_date_id = int(request.args.get('screening_date_id'))
theater_id, total_seat = print_theater(movie_id, screening_date_id)
seat_id = print_seat(screening_date_id)
return render_template('user/seat_id_4.html', name=name, member_id=member_id, movie_id=movie_id, screening_date_id=screening_date_id, theater_id=theater_id, total_seat=total_seat, seat_id=seat_id)
models.py
def print_seat(screening_date_id):
con = get_db_connection()
cursor = con.cursor()
cursor.execute("select distinct seat_id from seat s where screening_date_id "
"= ? and seat_assignment = 1", (screening_date_id,))
result = cursor.fetchall()
con.close()
return [seat[0] for seat in result]
def print_theater(movie_id, screening_date_id):
con = get_db_connection()
cursor = con.cursor()
cursor.execute("select distinct s.theater_id, t.total_seat from screeningschedule s, theater t "
"where s.movie_id = ? and screening_date_id = ? and s.theater_id = t.theater_id",
(movie_id, screening_date_id))
result = cursor.fetchone()
con.close()
return result
seat_id_4.html 일부분

<결과화면>



'서버 관리 및 모니터링 프로젝트 (영화관 시스템)' 카테고리의 다른 글
진행된 프로젝트 캡처 화면 (0) | 2025.03.24 |
---|---|
고객의 네 번째 기능 구현-1 (0) | 2025.01.08 |
고객의 세 번째 기능 구현 (0) | 2024.12.31 |
고객의 두 번째 기능 구현 (1) | 2024.12.31 |
고객의 첫 번째 기능 구현 (0) | 2024.12.08 |