ой. Поехте голяма работа. Абсолютно ли сте сигурни, че нищо, което ще направите, не може да бъде направено от нещо, което вече е налично? Е, ако сте сигурни, прочетете нататък.
Първо, най-трудната част от това, което искате да направите, е да управлявате потребителския си достъп. Бих ви посъветвал да започнете, като напишете своя модул за управление на потребителите, преди да продължите по-нататък.
За това, което искате, изглежда вероятно Drupal или някоя от другите старши CMS системи ще бъде чудесен начин за стартиране на системата. Drupal ще се справи с управлението на вашите потребители веднага от кутията (или с минимални проблеми) и можете да напишете останалата част от кода си като статични възли. Това също така улеснява добавянето на блогове, форуми, новини и управление на пощенски списъци и т.н.
Както е посочено в коментарите по-горе, трябва да съхранявате данните си заедно. би било добре да запазите данни и за исторически сравнения.
Ако не удължавате CMS, след като се върнете от психиатъра, ще ви трябва нещо от рода на:
-
заглавен файл за достъп до db и проверка за удостоверяване на потребителя.
-
долен колонтитул за показване на вашите данни
-
отделни файлове на страници, за да представите или получите вашите данни.
Структурата на базата данни за работа с потребителите (най-малко) трябва да бъде 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 в нормална форма. Никакви текстови данни не се дублират и данните са лесни за извличане, индексиране и показване. Смятам, че този въпрос е твърде широк за ТАКАТО, тъй като проектирането на база данни за вас е малко извън обхвата, но мисля, че общият формат е полезен.
Всяка таблица трябва да съдържа само уникални необходими данни, напр.:
Person: personid int, surname, forename, style, whenadded, whoadded, inuse
email: emailid, email, whenadded, whoadded, inuse
email_person: emailpersonid,emailid,personid, whenadded,whoadded,inuse
Това позволява на няколко души да споделят един имейл и няколко имейла да бъдат приложени към един човек без дублиране на текст. Идентификаторите трябва да са тип INT AUTO_INCREMENT PRIMARY KEY, а не SERIAL, тъй като това спестява много място за съхранение и никога няма да попълните INT в това приложение.
Останалите таблици трябва да бъдат създадени по същия начин. Колоните whoadded и whenadded са по избор и са доста гладни за съхранение, но могат да бъдат много полезни. inuse е от съществено значение, задайте това на BOOL и можете да премахвате екипи, без да ги изтривате - данните не се губят. A whenremoved и whoremoved също е полезен за одит.
Няколко думи за паролите - моля, уверете се, че ги съхранявате като СОЛЕН ХЕШ. Ако направите това, когато вашият сайт бъде хакнат, никой няма да разкрие паролата, която използва и за своето интернет банкиране. Хората често са идиоти. Трябва да се грижиш за тях.
Както казах, малко извън обхвата, така че ще завърша отговора дотук - той ви дава, както се изисква, основния план на 4-та нормална форма Db, който ще бъде здрав и разширяем, но ви оставя да вършите работата. Защо не зададете повече въпроси, ако проблемът се окаже твърде труден.
Успех.
ДОБАВЕНО:
Направи си сам рамка:
Ако не искате да се научите да използвате една от съществуващите рамки или 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:
<HTML>
<HEAD>
<TITLE>
<?PHP echo $pagetitle;?>
</TITLE>
</HEAD>
<BODY>
<?PHP echo $content;?>
</BODY>
</HTML>
Те се използват от mypage.php:
<?PHP
require("header.php");
//do some stuff that generates $content
$pagetitle="mypage.php";
require("footer.php:);
?>
Трябва да се подчертае, че това е най-малкият минимум, от който ще се нуждаете и е наистина гадно - той е просто представен, за да покаже как трябва да започне това, а не пример за идеален код. Все пак ще работи.
Ключът е да създадете заглавка, която представя променливите, от които ще се нуждаете, като връзка с db, потребителско име, статус на влизане на потребител и т.н. и долен колонтитул, в който можете да въведете подробности, за да представите данните. Долен колонтитулът е единственото място, където комбинирате HTML и PHP.
Използвайте своя $_SESSION, за да съхранявате информация, която трябва да продължи между страниците.
Тези файлове могат да бъдат толкова прости или сложни, колкото искате - аз създадох свои собствени преди години, които правят няколко проверки на потребителя и сесията и могат да показват скриптове, персонализирани CSS файлове и други в долния колонтитул. Не е трудно да се направи, ако започнете просто и надграждате според нуждите. SO ще бъде тук, за да ви помогне.
Една дума за предупреждение:въпреки че можете да започнете много просто, това, което се опитвате да направите, има крака и ще излезе извън контрол. Моля, проверете кода си, след като го стартирате и стартирате, за да се уверите, че не сте включили по невнимание пропуски в сигурността. Много е лесно да ги включите, когато влезете в проект и имате нужда от бърза корекция, а по-късно може да бъде много трудно да ги забележите, освен ако не ги търсите.