[sport]關於play_group.play_group_level欄位的改進方向

原本play_group_level欄位的設計是要把男生組、女生組整合在一個level(如男童甲組、女童甲組的play_group_level都設5)
後來有些需求,例如國小甲、乙、丙組外要增設中年級組。

剛開始的因應方式是在報名階段將中年級的play_group_level設為5678,
sql語法改成用like的方式讓中年級組可以出現在甲、乙、丙各組。
等待報名完成後,將中年級的play_group_level回復成8,變成獨立組進行比賽。
這樣的做法有個問題,當進入比賽模式後如果有需要修正學校報名項目時,會出現無法正常顯示中年級組別-項目的問題。

如果可以在play_group中新增一個欄位pglb(play_group_level_b),註明該組屬於那個play_group_level
應該就不需要在報名模式與比賽模式之間切換了。

定義pglb的值
高中組3
國中組4
國小組5

資料庫部分
在play_group及gov中各新增pglb欄位型態char(2)
play_group資料表:中年級的play_group_level設為8,pglb設為5。甲、乙、丙組play_group_level分別設為5,6,7,pglb值不設定。
gov資料表:play_group_level依組別設為5,6,7。pglb階設為5。

程式修改:
一、
\login.php 新增 $_SESSION['pglb'] 
約70行
$pg_level = $recordSet->fields["play_group_level"] ;
$_SESSION['play_group_level'] =$pg_level  ;

新增
$_SESSION['pglb'] = $recordSet->fields["pglb"] ;

二、
\function.php get_play_group_array()中
約686行
//$sqlstr = " select  * from `play_group` 
//     where ( ( played='1')  and ( play_group_level like  '%" . $_SESSION['play_group_level'] ."%')  ) 
//     order by play_group_sex , play_group_level , play_group_order_id  " ;
//配合play_group加入pglb(play_group_levle_b)欄位
$sqlstr = " select  * from `play_group` 
     where  ( played='1')  and ( (play_group_level =  '$_SESSION[play_group_level]') or pglb='$_SESSION[pglb]' ) 
     order by play_group_sex , play_group_level , play_group_order_id  " ;

 

這樣的做法應該也能適用到「國中組要細分成七、八、九年級組」的情形。

本篇發表於 程式設計。將永久鏈結加入書籤。