為了避免忘記,趁還記得的時候,先將相關的作業及用到的東西,將它記錄下來,以後若有需要再修改或用到,才找得到修改的地方,而不需從頭再看一次,還不一定找的到…
實際的作法:
- 先按年級、班級建立好導師的電子郵件,班級學生人數的csv檔。因為php可直接處理csv檔,若要處理Excel的檔案,還要借用其他物件、程式(也是在處理csv資料時,在網路上看到的)。初步只想先解決目前的問題,複雜的內容(直接抓取excel檔中的sheet)等以後有空再處理。
- 因為要能上傳並在瀏覽器上正確顯示(系統是UTF-8)資料,所以基本資料需存成utf-8的編碼方式
- 上傳的資料還要能線上修改
- 上傳年級成績檔案。
- 將成績檔由試算表中另存成csv檔。因為Excel的檔案無法直接另存成csv格式,也不需要在線上修改成績,所以存成的csv檔就不再處理。而且在Windows的系統上若將csv檔編碼轉成utf-8的格式時,許多中文字反而會變成亂碼,就不再處理
- 依序輸入學年度、學期、次,並以其做為上傳後新檔名,做為成績寄送時的讀取依據
- 轉成csv的檔案,標題也需保留。
- 可瀏覽已上傳檔案
- 以步驟2上傳的檔案寄送成績。
- 第1次畫面上會出現各班成績表,因為主機系統是utf-8編碼,與上傳的csv檔編碼方式不同,故會出現亂碼。主要是再檢視內容各班的名單有無問題,亂碼無需理會
- 確定後送出,會將各班的成績檔案以csv檔(ansi編碼)用附件個別寄到導師的信箱中
其他事項:
- 有、無標題列處理的參數不同。若無標題,則需修改do.php、scoremail.php程式中的相關參數。do這支是用來顯示在畫面上,scoremail這支是實際將檔案分成不同班級的csv(ansi)檔,並寄送至每個導師信箱
- 寄送附件目前以最簡便的系統mutt寄送,也不會有什麼編碼問題,也省了用php的mail()功能函數,還有一大堆語法
- 用到的想法或內容:
- 將csv以陣列讀取、處理。用到相關陣列觀念。使用explode取出相關參數,使用substr取出相關參數
- 使用檔案函數fopen,使用r僅讀資料,使用w覆寫,使用a附加。寫出各班檔案時,先使用w將舊的資料全覆寫,並加上標題列,再以a的方式,將陣列資料依序附加寫入
- 資料先讀取能正確顯示後,再改寫成可以寫入或處理的程式,或將程式轉向至新程式
- 最後再加上一些css語法與圖片,讓畫面稍微美觀些
- 為求資料隱密,再加上簡易的認證
- 保持頭腦清醒,不然一個簡單的陣列資料處理,白白耗掉幾個小時
- 網路上的資訊與文件,需耗時去過濾一下。很多人用的,不一定有用,有時反而是誤導。而有時簡短幾行,卻有可能是解決問題的關鍵
有圖有真相…
[caption id="attachment_184" align="alignnone" width="150" caption="成績寄送處理程式"][/caption]
[caption id="attachment_206" align="alignnone" width="150" caption="成績寄送系統內部處理"][/caption]
沒有留言:
張貼留言