Re: [請益] 有關php架站的問題
: 這是有關設計一個簡單的報名系統的問題...
: [題目] 請在4個小時內作出一學生課程報名系統 功能如下:
: 1.各科系學生基本資料查詢
: 可以<顯示><新增><刪除><更新>各班科系的學生基本資料
: 2.各開設課程簡介查詢
: 可以<顯示><新增><刪除><更新>目前開設的課程名稱
共有的功能,可以寫在同一個頁面來處理
<顯示>
SELECT * FROM TABLENAME ORDER BY `id`; 基本上只有 TABLENAME 不一樣
只要讓 TABLENAME 動態調整就可以把學生基本資料和課程查詢的撈DB部份做好
<新增>
欄位名稱應該不同,似乎不太好偷懶
<刪除>
DELETE FROM TABLENAME WHRER `id` = '{$id}';
同顯示
<更新>
同新增
所以基本上,新增刪除更新可以寫在同一頁來處理
我的習慣是會把要過濾使用者輸入的頁面寫在一起
我可能會用個 action.php 來接所有的表單
<?php
$tableName = '';
switch($_POST['type')
{
case 'student'
$tableName = 'stuedneInfo';
break;
case 'class'
$tableName = 'classInfo';
break;
}
switch($_POST['actType'])
{
case 'update':
// 把收到的變數經過 html特殊字串、SQL injection 的處理
// 更新到 DB
break;
case 'delete':
// 檢查要刪除的該筆資料
// 從 DB 中刪除
break;
case 'create':
// 同 update
// 新增到 DB
break;
}
?>
這樣就不用寫三個 php 來接了。
不過這當然是比較大略的架構,實際上用的時候大概會多更多權限判斷或是檢查
referer、session 之類的。
至於顯示的話,我會習慣另外寫成 function 放在另外一個檔案
: 3.報名系統:
: <1>學生依科系及座號登入後顯示基本資訊及所有課程
: 並提供學生顯示是否有報名修課 及新增報名修課及退課功能
登入的部份就要知道 session 的用法
如果資料庫設計的好,應該是 join 一下就好了
新增報名與退課,其實就是新增與刪除的動作,可以一併寫到上面的 action.php
只有欄位名稱與變數名稱要修改一下,不然程式的重複度很高
複製貼上就好
: <2>管理員登入查詢
: 提供一管理員帳號(admin/admin)登入後可以選擇觀看:
: (1)依課程觀看該課程報名人數
: (2)依各科系觀看該科系所以學生修課狀況
: (3)依學生姓名查詢該學生修課狀況
一樣是登入的時候設定好 session 的變數(來當作權限判斷)
一般來說如果 admin 有審核之類的動作的話,
我會把 admin 專用處理表單的部份另外獨立寫出來,可能類似 adminAction.php
架構就跟上面一樣
: ================================================================
: 我現在已經有大略做出這個報名系統...
: 但是所花的時間卻非常非常的久...(已經做了好幾天了)
: 想請教版上大家自己是否有哪些地方要再加強或觀念不對的
: 我的做法是這樣子:
: 1.先規劃資料庫:
: 分成三個資料庫 student , course , sign
: student: 學生基本資料 (第一小題使用)
: course : 課程資訊 (第二小題使用)
: sign : 單純[stu_no][course_no]兩個欄位
: (由student ,course join出給第三題使用)
: 2. 做一個簡單html網頁版型的函式
: do_html_header();
: do_html_footer();
: 3. 做存取資料庫的函式庫
: exec_query( $query_string );
: 4. 做一頁面提供選擇班級 : select_class.php
: <?
: do_html_header();
: display_select_form(); //提供選擇班級的form
: do_html_fooer();
: ?>
: 5. 做一頁面提供顯示學生基本資料: show_student.php
: <?
: do_html_header();
: display_student_form(); //顯示學生基本資料
: do_html_footer();
: ?>
: 6. 做三個頁面分别作為提供<新增><刪除><更改>學生單筆基本資料
: : new_student.php delete_student_.php update_student.php
: 7. 再做三個頁面分別根據 6.所做的三個頁面再做資料庫的變動
: ================================ 第一題大致完成 =====================
: 第一小題的解題流程大致是這個樣子
: 但我光在coding這些程式碼就已經花掉了至少3 5個小時
: 這還不加上看完題目後 想流程及架構的時間...
: 想請教版上的大家 我應該要怎麼規劃這個系統 讓整個架構更精簡...
: 使其能在短短四小時完成
: 感謝大家看完這長長一串文章...
要讓架構更精簡我覺得不是短時間可以達成的…
程式碼越寫越短,就是因為 coder 越來越懶 XD
重複性高的地方就合在一起,能讓程式動態處理就讓他處理
不過還有一些架構與安全的問題,所以不是所有 case 都可以這樣簡化
呃,我覺得這就是寫久了經驗的累積,與對 php 的熟練度
如果非資訊相關科系且又只是作業的話…
四個小時真的有點強人所難啦… 除非你平常在摸 db 設計、security
或是很閒在研究 wordpress、Discuz! 或其他 php 套裝軟體
不然應該是寫得出來就要偷笑了…
話說,考試考這個,老師認真要殺的話…我覺得在學的學生應該很少有人能倖免吧…
你推文有提到,這只是考試「可能」的題目而已
重點是四個小時,
那我覺得你應該先把
http://www.php5.idv.tw/documents/mou/ (不過我打文章的當下,這主機好像…)
http://www.1keydata.com/tw/sql/sql.html
這兩個網站記住 XD
然後,你要大概瞭解一般的會員系統或是公告系統、留言板系統的流程與架構
因為大部分功能都可以從這邊做變化
會員管理不外乎就是,註冊審核登入修改刪除,
資料庫的話可能要考慮 md5 sha1 來存密碼,sql injection 與 xss attack
session 的用法也要瞭解
公告系統比較簡單,就是新增修改移除顯示,頂多加上顯示的期間
不過這在 sql 查詢的時候就可以做了 WHERE `date` between '$start' and '$end'
留言板的話似乎也差不多,看要不要加上 captcha
直接 google://captcha php 可以找到不少範例
另外要知道的可能就是檔案上傳的相關處理…
一些安全性設定或放在 web 以外的資料夾等等
我是覺得,如果考試考到 gd 就太超過點了… (這麼多函式鬼才記得起來)
不過無聊的話可以看看… google://gd php 縮圖 也有不少範例…
呃,我回的好像也沒什麼重點= = 都是想到什麼就打什麼@@
希望能對你有幫助…
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 203.145.202.66
推
05/28 10:54, , 1F
05/28 10:54, 1F
推
05/28 11:04, , 2F
05/28 11:04, 2F
→
05/28 11:34, , 3F
05/28 11:34, 3F
推
05/28 11:38, , 4F
05/28 11:38, 4F
推
05/28 13:22, , 5F
05/28 13:22, 5F
→
05/28 19:34, , 6F
05/28 19:34, 6F
→
05/28 19:34, , 7F
05/28 19:34, 7F
→
05/28 19:35, , 8F
05/28 19:35, 8F
→
05/28 19:36, , 9F
05/28 19:36, 9F
討論串 (同標題文章)
PHP 近期熱門文章
PTT數位生活區 即時熱門文章