Skip to content

학부 4학년 인턴 시절, PHP를 사용하여 육상기록관리 시스템을 만들었습니다.

Notifications You must be signed in to change notification settings

vanillacake369/u20_dj

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🌼U20 백엔드

⚙ 환경 설정

  • 에러 메시지 출력 제한 설정
    • 배포 시 php.ini 파일의 display_errors = off // 개발할 때는 php.ini 파일의 display_errors = on

📌코딩 방식

  • 다른 페이지를 불러올 시 include_once(DIR .를 사용
  • 조건이 없는 DB 조회 시 $result=$db->query($sql);와 같이 prepared를 사용하지 않고 조회한다.
  • 조건이 있는 조회 시(where문) prepared를 사용하고 조회한다.
  • DB값을 출력할 때 htmlspecialchars를 이용해 출력한다.
  • 조회한 값을 사용 시 mysqli_fetch_array($result)와 같은 방식으로 사용한다.
  • 참가하는 경기 가 다수이며 표가 깨질면 (100m 외 3개)와 같은 방식으로 사용한다.
  • DB값을 수정하거나 추가할 때 trim을 이용해 앞뒤 공백을 없앤다.
  • html 태그에 해당하는 헤더와 푸터와 같은 경우 include를 이용해 코드 길이를 줄인다.

🎨 프론트와 회의 해야하는 부분

  • 현재 백엔드 JS 폴더 안 자바스크립트가 프론트쪽 자바스크립트와 같은 명의 파일이 있어 프론트측과 회의 필요함
  • 코치 페이지와 역대 기록 페이지에서 검색 조건 중 경기 select 태그의 option 태그의 value 값이 DB랑 달라 문제가 있음
  • 프론트 측 html안 주석으로 된 태그들은 필요한 주석인지 확인 필요
  • 현재 코치 정보를 수정하거나 추가 할 때 생년월일, 성별, 나라, 직무를 텍스트로 입력해서 DB 저장에 문제가 있어 기본태그로 추가해둠->수정해줘

참가자 관리🙋‍♂🙎‍♂️🙍‍♀️

사용 가이드라인

  • 참가자 등록
    • 테이블 오른쪽 하단을 통해 인적사항 기입 이후 등록
  • 참가자 보기/수정/삭제
    • 각 행의 오른쪽 보기/수정/삭제 버튼 클릭
  • 조건 검색 기능
    • 테이블 오른쪽 상단을 통해 조건 선택 이후 검색
  • ID 발급
    • 각 행 체크박스 체크 이후, 왼쪽 하단 ID발급 버튼 클릭
  • 엑셀 입/출력
    • 조건 검색 이후, 테이블 왼쪽 상단의 엑셀 입/출력 버튼 클릭
  • 페이지 선택
    • 페이지 당 행의 개수 선택
    • 테이블 아래 숫자 클릭

결과 등록 공통사항

  • 결과가 저장된 후 수정시에 해당 기록에 신기록만 추가하고 싶을 시에는 해당 기록의 신기록칸을 누르면 팝업으로 신기록을 선택할 수 있는 창이 뜨고 해당 신기록을 고르면 된다.
  • 신기록 삭제도 신기록칸을 눌러 삭제하면 된다.
  • 결과가 저장된 후 기록을 수정하면 자동으로 신기록을 판별한다.
  • 결과지에서 엑셀 출력과 pdf 출력이 가능하고 pdf는 현재 페이지에 보이는 기록이 출력된다.
  • 기록의 상태에 따라 live와 offical이 각각 수정된다.
  • 페이지주소양식 : add(Field/Track)Result(구분에 따라 숫자 추가).php?id=(해당경기의 schedule_id)
  • 신기록은 1등만 기록되는 것이 아닌 기존 기록을 넘은 선수는 모두 등록된다.

트랙경기

  • 릴레이 경기는 addTrackResult2.php에 릴레이를 제외한 나머지 트랙경기는 addTrackResult.php에서 등록한다.
  • 자동입력 버튼을 누르면 파일을 불러올 수 있으며 계측기에서 받는 파일의 확장자는 txt이다.
  • txt파일의 내용은 크게 단거리,장거리,릴레이별로 다르다. *각 txt파일 참고
  • 릴레이는 각 주자별 기록이 들어온다고 가정하고 만들어져있으며 페이지와 db에는 합산기록만 기록된다.
  • 1500m이상의 장거리는 레인 대신 선수의 등번호순서대로 처음에 정렬되어 있다.
  • 자동입력을 통해 입력을 하고 각 선수별 비고나 경기 비고를 작성후 확인을 누르면 db에 기록이 저장된다.

필드경기

  • 높이뛰기,장대높이뛰기: addFieldResult3.php
  • 멀리뛰기,세단뛰기: addFieldResult2.php
  • 나머지 필드경기: addFieldResult.php
  • 높이뛰기와 장대높이뛰기를 제외한 필드경기는 3차 시기이후에 필수적으로 순서 재정렬이 필요하고 이후 6차 시기에는 심판의 재량으로 실시할 수 있다.
  • 순서 재정렬은 기본적으로 13차 시기중 최고기록순의 역순으로 순서가 정해지고 6차 시기에는 45차 시기의 기록을 가지고 선정한다.
  • 각 시기의 기록을 입력하면 자동으로 최고 기록이 계산되며 등수도 계산이 된다.
  • 높이뛰기와 장대높이뛰기는 높이칸에 각 시기의 높이를 입력해야 되며 높이밑의 선수쪽 입력칸에는 X,O,-를 입력가능하다. 오른쪽의 기록 칸에는 자동으로 최고 기록을 입력한다.
  • 높이뛰기는 record_live_record에 높이가 들어가고 record_trial에 성공여부가 기록된다.
  • 멀리뛰기와 세단뛰기는 각 선수의 각 시기마다 풍속을 입력해야 한다.

기록 관리

경기결과 목록

  • 경기결과는 각 선수가 기록한 기록이 종목,시기마다 등록이 되며 기본적으로 해당 경기의 종료시간이 빠를수록 하단에 위치한다.
  • 기록 상태가 live result일 경우 결과를 수정가능하며 버튼을 클릭하면 선수가 기록한 경기의 결과를 수정할 수 있다.
  • 현재는 기록 상태가 official result의 경우 수정이 불가능하게 버튼을 없애놓았지만 권한에 따라 가능하게 할 예정이다.
  • 만약 official result를 수정해야 하는 경우 해당 종목에 해당하는 기록지로 바로 들어가야한다.
  • 기록전환은 경기 종료 시간을 기준으로 30분이 지난 스케줄에 대하여 offical result로 일괄 전환한다.
  • 엑셀출력은 현재 페이지에서 보여지는 기록을 엑셀로 변환시켜준다.

역대기록 목록

  • 역대기록 목록은 세계신기록,세계U20신기록,아시아신기록,아시아U20신기록,대회신기록를 볼수있는 페이지이다.
  • 현재 대회신기록은 기록을 받지 못해서 미입력상태이다.
  • 대회기간동안 발생한 신기록은 맨뒤에 저장된다.
  • 엑셀출력은 현재 페이지에서 보여지는 기록을 엑셀로 변환시켜준다.

경기 관리

경기 목록

  • 경기 등록
    • 테이블 오른쪽 하단을 통해 세부사항 기입 이후 등록
  • 경기 삭제
    • 각 행의 경기 삭제 버튼 클릭
  • 조건 검색 기능
    • 테이블 오른쪽 상단을 통해 조건 선택 이후 검색
  • 엑셀 입/출력
    • 조건 검색 이후, 테이블 왼쪽 상단의 엑셀 입/출력 버튼 클릭
  • 페이지 선택
    • 페이지 당 행의 개수 선택
    • 테이블 아래 숫자 클릭

국가 목록

  • 국가 등록
    • 테이블 오른쪽 하단을 통해 세부사항 기입 이후 등록
  • 국가 삭제
    • 각 행의 국가 삭제 버튼 클릭
  • 검색 기능
    • 테이블 오른쪽 상단을 통해 검색
  • 엑셀 입/출력
    • 조건 검색 이후, 테이블 왼쪽 상단의 엑셀 입/출력 버튼 클릭
  • 페이지 선택
    • 페이지 당 행의 개수 선택
    • 테이블 아래 숫자 클릭

일정 목록

  • 자동 경기 생성
    • 맨처음 예선, 결승(결승만 있는 경기) 대분류 생성
  • 일정(대분류) 등록
    • 테이블 오른쪽 하단을 통해 세부사항 기입 이후 등록
  • 일정 삭제
    • 각 행의 경기 삭제 버튼 클릭(해당 레코드들과 해당 스케줄들 다 삭제)
  • 일정 수정
    • 각 행의 경기(대분류) 수정 버튼 클릭
  • 조편성하기 버튼(릴레이 구현 X)
    • 각 행의 조편성하기 버튼 클릭
    • 조 편성 하기 페이지 : 조편성 방식 - 수동 등록, 조 개수 선택 - (필드와 종합경기, 그리고 트랙경기의 3000m 이상일 경우 1개의 조만 보이도록 함) -> 수동 등록 페이지 : 선수 이름, 선수 국가, 선수 소속 모두 DB값대로 올바르게 입력(순서대로 클릭하면 됨 (ex)1번째 Amir Shaker, 1번째 IRN, 1번째 TTF), 중복된 선수 등록 시 안 되게 설정, 수동 등록 페이지에서 +, -가 각 조마다 되지 않고 모든 조가 같이 +,-가 됨)
  • 상세 정보 버튼(높이뛰기 구현 X, 7종 경기 순위 출력 X)
    • 각 행의 상세정보 버튼 클릭
    • start list일 경우에만 순서 변경 가능(트랙 경기(릴레이 제외), 필드 경기, 종합 경기 가능)
    • official result이고, 다음 라운드가 있는 경기만 다음 조 편성 버튼이 보임-> 클릭 시 ex)100m 예선 경기 이후일 경우, {'준결승'-'2'-'8'} 입력 후 등록->일정 목록에서 생성된 100m 준결승을 볼 수 있음
    • 모든 조 초기화 버튼 : 이전 경기에서 DNS나 DQ 등이 된 선수가 있을 시 제외하고 다시 조편성이 됨
  • 조건 검색 기능
    • 테이블 오른쪽 상단을 통해 조건 선택 이후 검색
  • 엑셀 입/출력
    • 조건 검색 이후, 테이블 왼쪽 상단의 엑셀 입/출력 버튼 클릭
  • 페이지 선택
    • 페이지 당 행의 개수 선택
    • 테이블 아래 숫자 클릭

국가 별 순위보기

  • _페이징 기능 오류 발생, 수정요망!

전광판

  • 스타트 리스트에서 레인번호와, 선수이름, 국가와 국기사진을 볼 수 있도록 했고, live result에서 종목, 성별, 라운드, 세계기록을 볼 수 있다. 비고에는 신기록 여부가 기록된다.

  • 메달 버튼은 라운드가 결승인 경기의 official result의 페이지에만 medal 버튼이 생성된다.

  • 짧은 트랙경기(100m, 100m허들, 110m허들, 200m, 400m, 400m 허들)

    • 경기의 풍속을 볼 수 있다.
  • 긴 트랙경기(800m, 1500m, 2000m, 3000m, 3000m장애물, 5000m, 10000m / 경보)

    • 한 경기에 참가하는 선수의 수 8명을 초과할 때 한 페이지에 8명 씩 보여주고, 'page1' 버튼을 누르면 순번이 앞인 8명을 볼 수 있고, 'page2'를 누르면 다음을 볼 수 있다. 버튼의 갯수는 참여자 수에 따라 동적으로 변한다.
  • 릴레이(4x100릴레이, 4x400릴레이)

    • start list, live result, official result 세 페이지 모두 레인은 하나, 선수 4명의 이름, 국가, 국기를 볼 수 있다.
    • 한 화면에 출력되는 내용이 너무 많기때문에 긴 트랙경기와 같이 버튼을 넣어 수정할 예정이다.
  • 뛰기(멀리뛰기, 세단뛰기, 높이뛰기, 장대높이뛰기)

    • 멀리뛰기와, 세단뛰기만 live result와 official result에 풍속이 기록된다.
    • 시기가 존재하는 종목으로 'time1'버튼을 누르면 첫번째 시기의 기록을 볼 수 있다.
    • 높이뛰기와 장대높이뛰기는 순위가 정해질 때까지 경기를 진행하는 종목이지만 6번의 시기가 존재하는 것으로 생각하고 만들었기때문에 수정이 필요하다.
  • 던지기(원반던지기, 해머던지기, 창던지기, 투포환)

    • 용기구의 무게가 기록된다.
    • 시기가 존재하는 종목으로 'time1'버튼을 누르면 첫번째 시기의 기록을 볼 수 있다.
  • 종합경기(10종 경기, 7종 경기)

    • 종합경기는 경기를 선택할 때 라운드에서 세부 종목을 선택해야한다.
    • 세부 종목 모두에서 medal 버튼을 볼 수 있고, 마지막 경기의 official result에서만 볼 수 있도록 수정할 예정이다.
  • 시상식 페이지

    • official result 페이지에서 medal 버튼을 누를 수 있다.
    • Medal 버튼을 부르면 처음에 동메달 수상자의 정보면 출력되고, 은메달 버튼을 누르면 동메달과 은메달 수상자의 정보, 금메달을 누르면 금, 은, 동 수상자 셋 모두 출력된다.
  • 짧은 트랙경기:100m m 결승 1

  • 긴 트랙경기:1500m m 예선 1

  • 릴레이:4x400mR m 예선 1

  • 뛰기:longjump m 예선 1

  • 던지기: shotpu m 결승 1

  • 종합경기: decatlon m 1500m 1

심판 등록

  • 등록 기능

    • 등록시에는 '태블릿 사용 심판' 체크박스를 클릭 했을 경우에만 등록이 가능하며 ID가 중복될 경우 등록 버튼을 누르면 ID가 중복되었다는 박스가 표시되고, 등록이 되지 않는다.
    • 등록시에는 참가예정경기만 존재하며, 이후 수정을 통해서 참석 확정 경기를 등록하는 방식이다.
  • 조건 검색 기능

    • 검색은 국가, 소속, 성별, 참가예정경기, 이름으로 가능하며 직군(duty)과 지역(region)은 불가능하다.
  • 엑셀 입/출력

    • 조건 검색 이후, 테이블 왼쪽 상단의 엑셀 입/출력 버튼 클릭
  • ID 발급 기능

    • 각 행의 체크박스를 클릭 후 1명씩만 ID 발급이 가능
  • 수정 기능

    • 수정의 경우 태블릿 사용 심판 여부를 체크 후에 수정이 가능하다. 기존 비밀번호의 해쉬 값이 페이지에 저장되어 있기 비밀번호 재수정이 필요하지 않다. 또한 수정 기능에서 '참석 확정 경기' 등록이 가능하다.

버그 및 미구현:

  • 높이뛰기 간헐적으로 중간 기록 저장이 안됨
  • 높이뛰기 기록 수정 안됨
  • 높이뛰기 상위 높이에서 성공 입력 후 삭제시 이전 최고 기록으로 안 바뀜
  • 기록경기 순서 재정렬 시 기록이 하나도 없이 X나 -로 채워진 경우 순서가 제대로 정렬이 안됨
  • 기록경기 순서 재정렬 시 최종기록 안보임
  • 기록경기 중간 저장시 기록 안보임
  • 7종/10종 경기 각 세부 종목별 신기록 미보유 -> 현재 신기록 비교를 종합경기내가 아닌 실제 종목의 기록과 비교
  • 기록경기 동기록 처리 안됨
  • 7종/10종 경기 중 높이뛰기, 장대높이뛰기를 제외한 필드 경기에 최종기록 자동갱신js안됨
  • 기록 결과지 엑셀 출력 미동작
  • 기록 결과지 pdf변환시 참가인원이 많을 경우 페이지가 이상하게 나눠짐
  • 스타트리스트 php로 미구현 html만 있음
  • live_result보여주는 pdf에서 심판 싸인 칸 미구현
  • 참가자 등록 시 참가자 국가 무조건 list_country 있는 국가로 등록하게 해야 함(구현이 돼있다면 DB값 변경해야 함)

About

학부 4학년 인턴 시절, PHP를 사용하여 육상기록관리 시스템을 만들었습니다.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published