presentation5 - University Of Worcester
Download
Report
Transcript presentation5 - University Of Worcester
COMP3241
E-Commerce Technologies
Richard Henson
University of Worcester
October 2014
Week 5: Server Scripting, and
Shopping Cart Systems
Objectives:
Relate data modelling to server-side development
Create product pages that can pass on data
Explain the use of asp.net web controls with HTML to
allow parameter passing between pages
Resolving the ProductsCustomers relationship
Many databases have failed through
lack of knowledge of entity modelling…
Product
Customer
many:many relationship…!!!
Link Entity…
“Many:many” relationship
Option 1: “programme” as OO database from
scratch to allow repeats (!)
Option 2: use Relational Database…
» not allowed: use “link” entities until no many:many left
Product
XYZ (order?)
Customer
Is one more entity enough?
One customer makes the order
Can make multiple orders
1:many relationship
One or more products make up the
order
product and order still many:many
Product & Order need a further entity
between them…
Shopping Cart Entities
All of this needs to be reflected in
shopping cart database design…
Why? (discuss…)
Possible basic data (entity)
model for a Shopping System
order
product
No entity
relationships
shown!
Order line
Where does
Shopping Cart fit?
customer
Possible Data Model with
entities/attributes added
Field names may
vary but the principle
is the same…
Field names must
match with server
script variables
Testing the Logical Design
with Physical Data…
ERM may work on paper…
But easy to get the logic wrong…
Test with practical working model
create database tables
link, according to your ERM
populate the tables with trial data of an
appropriate format
make sure all is still consistent…
Creating the Physical Database
from a Logical Design
Popular options for small(ish) databases:
Microsoft Access
» only Access 2000 onwards properly SQL compliant
MySQL (open source)
» originally shareware for Unix
» also for Windows
Popular options for larger databases:
SQLServer
ORACLE
Essential attributes
for Orders Entity
All entities in an entity model…
need a primary key
need a foreign key to link with an attribute
in another entity
» which attributes in orders?
Essential attributes for
Orderline Entity
Primary key attribute?
Foreign key to link to another entity…
again… which one?
Each orderline contains other data that
needs to be recorded to complete the
order. Which other attributes are needed?
Completing the Data model
Server scripts will use data from one/more
entities
essential that attributes for entities correctly
identified
How can any gaps in the data model be filled
in?
important that this is completed before
programming the scripts begins…
Role of Server Scripting in
creating Product Pages
Server scripts with appropriate
embedded SQL required for:
picking the right data out of the remote
database
writing data to the appropriate locations in
HTML pages on the local client browser
Managing a temporary store in memory on
the local machine
Local storage of “remote” data
Asp.net supports local storage of data through
datasets (arrays) in protected memory
simply a local copy of various data fields held on
one or more data tables on the remote database
each field becomes a variable in local memory
The dataset fields map directly onto the fields
in the remote database
new data can therefore always be stored locally until
the appropriate server command is made that writes
it to the remote database
The Dataset Display
(one record from database)
As you have seen, Visual Studio facilitates
selection of controls creating local datasets
associated with a server-based database
Also helps generate scripts for display of
dataset data on a HTML page…
further control(s) can be used to create a HTML
table for displaying a single record
a navigation bar object can then be added and
used to navigate to other records
HTML forms & HTML tag nesting
HTML forms work at the client end…
collect data in a structured way
local storage through form fields:
» pre-defined data type (parameter)
» specific field name (parameter)
Note syntax (within <body>):
» <div><form><repeater><itemtemplate><table>
» </table></itemtemplate></repeater></form></div>
Mapping of data
within a HTML form
HTML form structure:
text boxes/fieldnames for adding data
Get/Post tells page where to send the data
button(s) to trigger the sending of data to the
location specified by get or post…
Data added to the form can be sent to:
email address
URL of a web server
HTML forms Input-Output syntax
Basic structure: <form> … </form>
ACTION parameter points to a URL that will
accept the supplied information and do
something with it
it is up to the web server at that website to deduce
the type of script from its suffix
the web server then needs to use appropriate
software to process it
HTML forms Input-Output syntax
METHOD parameter tells the form how
to send its data fields back to the script:
POST sends all the information from the
form separately from the URL string
» could be used with mailto
GET attaches the information from the form
to the end of the URL string (max 255
characters)
Modular Development association
of “code” files with HTML
Existing good code recycled whenever
possible…
useful for portability (no point in rewriting…)
used in conventional HTML e.g. css
Several additional ways to use text
files/source code with .aspx pages:
SSI Include
global.asax
“code behind”
aspx also allows “ready to run” compiled code
“toolbox” controls & “assemblies”
The Server-Side #Include
(SSI) Directive
Saved as a .inc file
used with multiple asp(x) pages
Syntax:
» #INCLUDE directive and either “VIRTUAL” or
“FILE” keyword placed inside what would normally
be HTML comment tags, with file=“filename”
» e.g.: <!--#include
file="common/copyright.inc"-->
Using Server Scripting to
Create online Shopping System
“Click to buy”
product Information stored on database
script connects to database
products can be displayed on a page or as aeries
of categories
Recording/monitoring of clicking behaviour to
simulate buying…
coded into the product page & shopping cart
shopping system “logic” needs to be right…
WebXel “Shopping Cart” control
“ready assembled” web control…
sets up the fields that will be used to store
the shopping data
Could have been set up as a series of
code behind files
lot of coding as source code…
why bother anyway if already perfected?
code needs to be used by many .aspx pages
“Shopping Cart” assembly
More secure than source code
accessed by multiple .aspx pages…
needs to be as fast as possible!
Structure: assemblies added to the
App_Data folder
need to be formally included with a page
using <#include…. >
.dll suffix standard for “C” dynamic linked
libraries
Preparation: pre-compiled
Not only has someone written the C#
code for the shopping cart…
it has already been compiled as well!
resulting assembly found on RH’s website
as WebXelCart.dll
Contains dataset fields used with
specific field and parameter names
need to mesh with corresponding fields on:
» product pages…
» cart display page
“Click to buy” Scripting and
HTML code
Product page(s) usually need to be capable of
displaying multiple records
associated ProductID value for a row relates to the
database record displayed
Of all available web controls…
“Repeater” achieves this display most effectively
Effect of “Click to Buy”
The “add” function is built into a pre-written
page called AddfromDatabase.aspx
Page has no HTML (and therefore no
display…) but it triggers an SQL query to:
pick up a variable value chosen by the “click”
send the value to the server as ProductID
collect the product description and price fields
save all three values to the dataset
Passing the Product ID
Parameter
Product
Page
“click”
Product ID value
sent as e.g. “ProdID”
Remote
DB
Add from DB
scripts
Shopping Cart
fields extracted
from remote
database
Parameter Passing
between Pages (1)
How can a click on a hyperlink…
send a parameter to a server database
add a series of correct values to the
shopping cart? ? ?
Parameter Passing (2)
Simple (!)
the page uses HTML “get” logic based on a
hyperlink used with “?”
variable name defined in “get” part
» corresponds to the primary key in “products”
Role of hyperlink:
picks up the primary key value
allocates this value to the variable used to get the
data from the database e.g. ProdID
“Add to Cart” control
Cart logic to make “click to cart” actually
happen…
other values such as quantity added to the dataset
(default setting normally 1)
dataset record will be equivalent to an “orderline”
values for other products can then be stored in the
same dataset but with different orderline values
In any case, the result should be a display of
the shopping cart contents
Displaying the Cart Contents
cart.aspx
Another carefully designed web page that
displays the cart contents and does some
simple calculations
uses a repeater and an HTML table to display
products data (like “products” page)
differences from “products”…
» data displayed from the cart not the products table
» line total and grand total fields used to display each
item total, and sum total of all line totals
Typical development “errors”…
MUCH can go wrong…!!!
Before embarking on shopping cart development,
make sure…
all local/remote web server settings are correct
screen fields and db fields use the same format
» mustn’t use “reserved words” or punctuation, inc spaces
users have sufficient access rights to write to the
database
» this especially includes the “IIS process” user
Major adjustments may be needed in response to
a minor change in design…
all the more reason to get the design right…
Anything else?
One other thing that still need to be
covered theoretically is the asp.net
environment and how “controls” are
created, and assembled…
Next week… (!)
Thanks for listening…
Over the next few weeks, we’ll
work on the coding to put this
into practice…