An easy to use web-based tool for tracking members and jobs.
-
Upload
elisabeth-thornton -
Category
Documents
-
view
217 -
download
0
Transcript of An easy to use web-based tool for tracking members and jobs.
![Page 1: An easy to use web-based tool for tracking members and jobs.](https://reader033.fdocuments.in/reader033/viewer/2022051401/5697bfc91a28abf838ca8d76/html5/thumbnails/1.jpg)
THE LIGHT
An easy to use web-based tool for tracking members and jobs
![Page 2: An easy to use web-based tool for tracking members and jobs.](https://reader033.fdocuments.in/reader033/viewer/2022051401/5697bfc91a28abf838ca8d76/html5/thumbnails/2.jpg)
Our Team
Kevin Tiller Senior in Computer Science, responsible for
Tier 1: web-site design, server, and UI implementation
David Thomas Senior in Computer Engineering, reponsible
for Tier 2: PHP design, Documentation Clinton Thomas
Senior in Computer Engineering, responsible for Tier 3: MySQL server, database design and SQL implementation
![Page 3: An easy to use web-based tool for tracking members and jobs.](https://reader033.fdocuments.in/reader033/viewer/2022051401/5697bfc91a28abf838ca8d76/html5/thumbnails/3.jpg)
WEBSITE DESIGNUSER INTERFACE
Kevin Tiller
![Page 4: An easy to use web-based tool for tracking members and jobs.](https://reader033.fdocuments.in/reader033/viewer/2022051401/5697bfc91a28abf838ca8d76/html5/thumbnails/4.jpg)
Why The Light?
Looking to be a part of the crowd of people crazy about other people? Yearning for unity? You've come to the right place! The Light is a group devoted to bringing people together, regardless of association with campus ministries, to fellowship together while learning about our Lord and Savior Jesus Christ. We believe that having a grounded understanding of our faith is essential to being able to know Him and make Him known to others.
![Page 5: An easy to use web-based tool for tracking members and jobs.](https://reader033.fdocuments.in/reader033/viewer/2022051401/5697bfc91a28abf838ca8d76/html5/thumbnails/5.jpg)
Why Tabs?
Single load Once loaded the site no longer requires internet
connection for basic functionality. jQuery Implementation
Using the jQuery library simplifies the design of a “Tabbed” interface
Aesthetically pleasing UI Leadership of “The Light” liked the way it looked
Easy organization Allows for grouping and sub-grouping while
staying simple enough for non-technical leaders to edit.
![Page 6: An easy to use web-based tool for tracking members and jobs.](https://reader033.fdocuments.in/reader033/viewer/2022051401/5697bfc91a28abf838ca8d76/html5/thumbnails/6.jpg)
Why so much work?
Why 700 lines of interface for such a relatively small database? UI is what people see and what they
remember Nobody will use the most efficient database if
they can’t figure out how to get in and get stuff out
JavaScript is awesome?
![Page 8: An easy to use web-based tool for tracking members and jobs.](https://reader033.fdocuments.in/reader033/viewer/2022051401/5697bfc91a28abf838ca8d76/html5/thumbnails/8.jpg)
MIDDLE LAYERDavid Thomas
![Page 9: An easy to use web-based tool for tracking members and jobs.](https://reader033.fdocuments.in/reader033/viewer/2022051401/5697bfc91a28abf838ca8d76/html5/thumbnails/9.jpg)
Decisions on Code
Middle Layer acts as the logical base for database insertion and query
Choices available - Java Server Pages - PHP (Hypertext Preprocessor) - CGI (compiled C/C++)
Originally intended on using JSP, but hosting service does not support
Decision was reached to use PHP
![Page 10: An easy to use web-based tool for tracking members and jobs.](https://reader033.fdocuments.in/reader033/viewer/2022051401/5697bfc91a28abf838ca8d76/html5/thumbnails/10.jpg)
PHP Magic
PHP can be inserted inline with HTML, or called as a script from the HTML design file
Commands interpreted by server with a PHP language processor module
Lightweight, lazy typed scripting langauge with rich history and plenty of examples available online
Easy to use query interface to MySQL databases
![Page 11: An easy to use web-based tool for tracking members and jobs.](https://reader033.fdocuments.in/reader033/viewer/2022051401/5697bfc91a28abf838ca8d76/html5/thumbnails/11.jpg)
Example MySQL Insert - PHP
This example connects to our local database
Inserts record from HTML form into the database using SQL INSERT statement
Handles errors thrown by SQL server
Displays a success message if completed without error
Code can be executed inline with HTML, or as a separate script
<?php$con = mysql_connect("localhost","dbadmin_group14","group14");if (!$con) { die('Could not connect: ' . mysql_error()); }
mysql_select_db("dbadmin_thelight", $con);
$sql="INSERT INTO Tasks ( taskID, taskName, taskType, taskDate)VALUES('NULL','$_POST[taskname]','$_POST[tasktype]','$_POST[taskdate]')";
if (!mysql_query($sql,$con)) { die('Error: ' . mysql_error()); }echo "Task sucessfully created!";
mysql_close($con)?>
![Page 12: An easy to use web-based tool for tracking members and jobs.](https://reader033.fdocuments.in/reader033/viewer/2022051401/5697bfc91a28abf838ca8d76/html5/thumbnails/12.jpg)
Example MySQL Insert Page
![Page 13: An easy to use web-based tool for tracking members and jobs.](https://reader033.fdocuments.in/reader033/viewer/2022051401/5697bfc91a28abf838ca8d76/html5/thumbnails/13.jpg)
Query-Insert Example
In this example, we ask the user for their first and last name, as well as the task name and date they would like to register for
The information is brought it from the HTML, and a query for the memberID and taskID values is generated
The returned results are inserted into the relation-table VolunteersFor
<?php$con = mysql_connect("localhost","dbadmin_group14","group14");if (!$con) { die('Could not connect: ' . mysql_error()); }$dbname="dbadmin_thelight";mysql_select_db($dbname, $con);
$memberquery ="select memberID from Members WHERE firstname=$_POST[firstname] AND lastname=$_POST[lastname]";$memberresult = mysql_db_query($dbname, $memberquery) or die("Failed Query of " . $memberquery); //do the query$mID=mysql_fetch_row($memberresult);
$taskquery ="select taskID from Tasks WHERE taskName=$_POST[taskName] AND taskDate=$_POST[taskDate]";$taskresult = mysql_db_query($dbname, $taskquery) or die("Failed Query of " . $taskquery); //do the query$tID=mysql_fetch_row($taskresult);
$sql="INSERT INTO VolunteersFor ( taskID, memberID)VALUES('$tID','$mID')";
if (!mysql_query($sql,$con)) { die('Error: ' . mysql_error()); }echo "Volunteer sucessfully registered!";
mysql_close($con)?>
![Page 14: An easy to use web-based tool for tracking members and jobs.](https://reader033.fdocuments.in/reader033/viewer/2022051401/5697bfc91a28abf838ca8d76/html5/thumbnails/14.jpg)
Query-Insert Example Page
![Page 15: An easy to use web-based tool for tracking members and jobs.](https://reader033.fdocuments.in/reader033/viewer/2022051401/5697bfc91a28abf838ca8d76/html5/thumbnails/15.jpg)
DATABASE DESIGNAND IMPLEMENTATION
Clinton Thomas
![Page 16: An easy to use web-based tool for tracking members and jobs.](https://reader033.fdocuments.in/reader033/viewer/2022051401/5697bfc91a28abf838ca8d76/html5/thumbnails/16.jpg)
Database Selection
For the data management section of the design, MySQL was chosen as the backend DBMS
Reasons for selection- well documented- multi platform (Windows and Linux)- supported by our hosting service
XML and Microsoft SQL Server also considered
Reasons for not being selected- XML is slower when the DB grows much larger- Microsoft = lame
![Page 17: An easy to use web-based tool for tracking members and jobs.](https://reader033.fdocuments.in/reader033/viewer/2022051401/5697bfc91a28abf838ca8d76/html5/thumbnails/17.jpg)
MySQL
Most widely used DBMS by Internet pages, due to open-source design and strong documentation
Accepts most standard SQL queries, offers several options for collation, data engines, etc.
Offers powerful, community developed creation tools for use in database design
MySQL server allows for local and remote execution of search queries
![Page 18: An easy to use web-based tool for tracking members and jobs.](https://reader033.fdocuments.in/reader033/viewer/2022051401/5697bfc91a28abf838ca8d76/html5/thumbnails/18.jpg)
MySQL Database Schema Members (memberID: integer, firstname: string, lastname: string, email: string,
address: string, phone: string)
Groups (groupID: integer, groupName: string, groupSize: integer)
Expenses (expenseID: integer, taskID: integer, amount: real)
Tasks (taskID: integer, taskName: string, taskType: string, taskDate: string)
Donations (donationID: integer, amount: real)
VolunteersFor (memberID: integer, taskID: integer)
ClaimsExpense (memberID: integer, expenseID: integer)
LeaderOf (memberID: integer, groupID: integer, since: string)
ClaimsDonation (memberID: integer, donationID: integer)
EventSchedule(scheduleID: integer, date: string, topic: string, leader: string)
![Page 19: An easy to use web-based tool for tracking members and jobs.](https://reader033.fdocuments.in/reader033/viewer/2022051401/5697bfc91a28abf838ca8d76/html5/thumbnails/19.jpg)
MySQL Database Model
![Page 20: An easy to use web-based tool for tracking members and jobs.](https://reader033.fdocuments.in/reader033/viewer/2022051401/5697bfc91a28abf838ca8d76/html5/thumbnails/20.jpg)
MySQL Database Generation
#SQL commands to generate "The Light" database
# delete the database if it already exists drop database if exists thelight;
#create a new database named thelight create database thelight;
#switch to the new database use thelight;
#Tables CREATE TABLE Members ( memberID INT AUTO_INCREMENT, firstname VARCHAR(64), lastname VARCHAR(64), phone VARCHAR(16), email VARCHAR(64), address VARCHAR(64), PRIMARY KEY (memberID, firstname, lastname) );
CREATE TABLE Tasks ( taskID INT AUTO_INCREMENT, taskName VARCHAR(64), taskType VARCHAR(64), taskDate DATE, PRIMARY KEY (taskID) );
CREATE TABLE VolunteersFor ( taskID INT, memberID INT, PRIMARY KEY (taskID, memberID), FOREIGN KEY (taskID) REFERENCES Tasks (taskID), FOREIGN KEY (memberID) REFERENCES Members (memberID) );
CREATE TABLE Donations ( donationID INT AUTO_INCREMENT, amount FLOAT, PRIMARY KEY (donationID) );
CREATE TABLE ClaimsDonation ( memberID INT, donationID INT, PRIMARY KEY (memberID, donationID), FOREIGN KEY (memberID) REFERENCES Members (memberID), FOREIGN KEY (donationID) REFERENCES Donations (donationID) );
CREATE TABLE Expenses ( expenseID INT AUTO_INCREMENT, taskID INT, amount FLOAT, PRIMARY KEY (expenseID, taskID) );
CREATE TABLE ClaimsExpense ( memberID INT, expenseID INT, PRIMARY KEY (memberID, expenseID), FOREIGN KEY (memberID) REFERENCES Members (memberID), FOREIGN KEY (expenseID) REFERENCES Expenses (expenseID) );
CREATE TABLE Groups ( groupID INT AUTO_INCREMENT, groupName VARCHAR(64), groupSize INT, PRIMARY KEY (groupID) );
CREATE TABLE LeaderOf ( memberID INT, groupID INT, since DATE, PRIMARY KEY (memberID, groupID), FOREIGN KEY (memberID) REFERENCES Members (memberID), FOREIGN KEY (groupID) REFERENCES Groups (groupID) );
CREATE TABLE EventSchedule (scheduleID INT,date DATE,topic VARCHAR(128),leader VARCHAR(48),PRIMARY KEY (scheduleID, date) );