Brain Candy Music Store
http://yorktown.cbe.wwu.edu/03Fall/schumaj3/MusicStore/
- XML Music is a demonstration site built by Josh Schumacher for MIS 324 Intermediate Web Development and Management at Western Washington University.
- Built using ASP.NET.
- All data is stored in an Access database (normalized to third-normal form).
- All reusable components are contained within user controls (such as the header, footer and search/browse menu).
- An XML-based "Supplier Network" is used to share product descriptions among students
in the course.
-
Home Page
- "Today's Feature Items" are randomly selected from the database.
- A single SQL statement is used to retrieve all three CDs (for maximum efficiency).
- The DataList is used to displays the items.
- The browse menu is dynamically generated from the database using a SQL query that shows only the current book categories.
- The browse menu is cached for 60 minutes (to maximize efficiency).
-
Search/Browse response page
- Searches the title, artist, description and category fields in the database.
- SQL's distinctRow statement is used to eliminate duplicate items.
- The Row.Count property of the DataSet object is used to count the number of CDs found by the search.
- Responds gracefully if no items are found by search.
-
Shopping cart page
- A cookie is used to store the ASINs of CDs in the cart.
- Handles multiple quantities of each CD.
- Information for all CDs in the shopping cart is retrieved using a single SQL statement.
- Shipping and product costs are calculated.
- A DataSet is used to hold product data and match quantities from cart.
- A DataList is used to display the data.
-
Checkout page
- Searches the database for existing customer accounts and automatically loads their shipping information into the order form.
- Information for new customers is written to the database.
- A unique ID number is assigned to orders and new customers.
- Validation controls are used to validate all user inputs, including a regular expression validator to check the pattern of the email address.
- The OnTextChanged event of the textbox is used to check for changes to customer information. Database is updated only if data has changed (to maximize efficiency).
- An HTML email is sent to the customer with the order information.
- The shopping cart is emptied by deleting the shopping cart cookie.
-
Order History Page
- Searches the database and displays all orders associated with customer's ID.
-
Enhancements
- A unique and innovative graphical interface.
- Graphical interface required extensive use of CSS and JavaScript
- Top 5 albums from iTunes generated every 60 minutes and retrieved through an RSS 2.0 feed
- The XML is then parsed using regular expressions and a DataGrid
- The Search string is filtered to "bomb proof" against apostrophes
- If only one item matches a search users are automatically redirected to the product page.
- On-the-fly image generation using php and GD-Libraries, the best example of this is on the main page where the text stating how many cd's are in the database -- this is generated on-the-fly and is dynamic based on how many cd's are in the database. (More info - Text-png PHP Script)
- Users must be logged in to see their order history - this protects all customers' privacy and they cannot view other customers' order history.
- One CD I contributed to the XML Network was a multi-disk cd and I have formatted the Product Page to accommodate for multi-disk albums. Speakerboxxx/ The Love Below Product Page.