Ouch。你承擔了一項大工作。你絕對相信,你所做的任何事情都無法通過已有的東西來完成嗎?那麼,如果你確定,請繼續閱讀。
首先,你想要做的最難的部分是管理你的用戶訪問。我建議你在開始之前先寫下你的用戶管理模塊。
對於你想要的,Drupal或其他高級CMS系統之一似乎很可能是引導系統的好方法。Drupal會立即處理您的用戶管理權限(或者最小的問題),您可以將其餘代碼編寫爲靜態節點。這也可以很容易地添加博客,論壇,新聞和管理郵件列表等。
正如上述評論所述,您確實需要將您的數據放在一起。保存歷史比較的數據也不錯。
如果沒有延伸的CMS,你必須從心理醫生回來後,你將需要沿着線的東西:
頭文件來訪問數據庫,並檢查用戶身份驗證。
頁腳文件顯示數據
個人頁面文件提出或獲取數據。
用於處理用戶(至少)數據庫結構應該是IRO:
Person - details of individual users
username - link person to a username
email - email addresses
club - sports club details
password - passwords
logon - record of logon attempts
role - record of role of individuals in your site
permissions - list of required permissions to access areas of the site
role_permissions - default permissions for each role
person_role - link person to role
person_permissions - link person to permissions (only needed if some individuals need extra permissions not given routinely by their role)
club_person; person_email; - link people to clubs and to their email addresses.
要處理比賽,你將需要:
team - team name, group and club reference
grouping - list of groups eg by age.
divisions. - list of divisions
venue - list of venues. Include GPS!!!
match - division, grouping, team1, team2, venue, date, time
result - team1 reported result, team 2 reported result, approved result (you may need to intervene!) match.
正如你可以看到你需要公平的幾桌,但你不能嘗試做實際的團隊有趣的東西,直到你有你的用戶訪問正常工作。
我爲你勾畫出的是一個正常形式的db。沒有文本數據是重複的,數據很容易檢索,索引和顯示。我確實覺得這個問題對於SO來說太寬泛了,因爲爲你設計數據庫有點超出範圍,但我認爲通用格式是有用的。
每個表只能包含必要的獨特數據,例如:
Person: personid int, surname, forename, style, whenadded, whoadded, inuse
email: emailid, email, whenadded, whoadded, inuse
email_person: emailpersonid,emailid,personid, whenadded,whoadded,inuse
這允許多人共享一個電子郵件地址和多個電子郵件地址被應用到一個人沒有文字重複。 ID應該鍵入INT AUTO_INCREMENT PRIMARY KEY而不是SERIAL,因爲這樣可以節省大量存儲空間,並且永遠不會在此應用程序中填充INT。
其他表格應該以相同的方式創建。 whoadded和whenadded列是可選的,相當的存儲飢餓,但可以非常有用。 inuse是必不可少的,將其設置爲BOOL,您可以在不刪除團隊的情況下刪除團隊 - 數據不會丟失。對於審計而言,被刪除和被刪除的內容也很有用。
關於密碼的一句話 - 請確保您將它們存儲爲SALTED HASH。如果你這樣做,當你的網站被黑客攻擊時,沒有人會將他們用於網上銀行的密碼暴露出來。人們常常是白癡。你必須照顧他們。
正如我所說,有點超出範圍,所以我會在那裏結束答案 - 它會根據您的要求提供第四範式Db的基本輪廓,該輪廓將強健且可擴展,但讓您完成這項工作。如果問題變得太難,爲什麼不問更多的問題呢?
祝你好運。
增加:
DIY框架:
如果你不想學習使用現有的框架或CMS之一,你需要自己編寫。奇怪的是,這實際上很簡單。
的header.php:
<?PHP
$mysqli=new mysqli(credentials....)//connect to database and present a mysqli or pdo object.
session_start(); //open a session
//you will need to authenticate your session here - see below
?>
footer.php:
<?PHP
require("header.php");
//do some stuff that generates $content
$pagetitle="mypage.php";
require("footer.php:);
?>
應該強調的是,這是裸:
<HTML>
<HEAD>
<TITLE>
<?PHP echo $pagetitle;?>
</TITLE>
</HEAD>
<BODY>
<?PHP echo $content;?>
</BODY>
</HTML>
這些都是由mypage.php使用最低限度你會需要,而且真的很爛 - 它只是用來展示如何開始,而不是理想代碼的典範。它會工作。
的關鍵是創建提出你需要的變量,如數據庫連接,用戶名,用戶登錄狀態等,並可以輸入信息到呈現數據的落款頭。頁腳是您將HTML和PHP結合在一起的唯一地方。
使用$ _SESSION存儲需要在頁面之間保留的信息。只要你喜歡
這些文件可以是簡單或複雜 - 我創造了我自己很久以前是做用戶和會話幾項檢查,並可以顯示腳本,自定義CSS文件,這樣在頁腳。如果你開始簡單並根據需要進行構建,這並不難。 SO會在這裏幫助你。謹慎的
一個字:雖然你可以開始很簡單,你正在嘗試做的有腿會變得不可收拾。請在啓用並運行代碼後審覈您的代碼,以確保您沒有無意中包含安全漏洞。當你進入一個項目並且需要快速修復時,包含這些內容非常容易,除非你正在尋找他們,否則他們可能會很難在以後發現。
現在快速注意 - 幾乎沒有一個很好的理由爲每個用戶/學校/任何一個單獨的數據庫。一切的數據庫。有一個用戶桌子和一張學校桌子,有屬於學校的用戶。 – halfer
非常好。感謝您的反饋!我將用戶與所有其他事物分在一起的擔憂是,我會一次又一次地使用他們的帳戶(年復一年),而季節會定期更改。我不確定每個賽季是否會包含如此多的數據以便需要自己的數據庫,因此不得不用每個新的數據庫重複用戶。但是,如果這不是一個問題,那麼完美! – 712Jefferson
我還應該說,雖然這是一個有趣的問題,但它並不適合這裏 - 關於主題問題的指導方針表明,話語性帖子或只是一個讀者感興趣的項目傾向於灰心。所以,不要擔心,如果這關閉 - 無論如何你已經得到了很多想法。 – halfer