IS 257 – Fall 2010
University of California, Berkeley
School of Information
IS 257: Database Management
2010.10.07 SLIDE 1
– Databases for Web Applications – Overview
• ColdFusion
– DiveShop in ColdFusion
• PHP
– DiveShop in PHP
• More on MySQL and SQL
IS 257 – Fall 2010 2010.10.07 SLIDE 2
– Databases for Web Applications – Overview
• ColdFusion
– DiveShop in ColdFusion
• PHP
– DiveShop in PHP
• More on MySQL and SQL
IS 257 – Fall 2010 2010.10.07 SLIDE 3
Internet
IS 257 – Fall 2010
Clients
Web
Server CGI
Files
DBMS
Server database database database
2010.10.07 SLIDE 4
SQL
HTML
DHTML
Web Server
Native
DB
Interfaces
Database
JavaScript
Adapted from
John P Ashenfelter,
Choosing a Database for Your Web Site
Web DB
CGI
App
Web Server
API ’ s
ODBC
Native DB interfaces
JDBC
ColdFusion PhP Perl
Web Application
Server
Java ASP
IS 257 – Fall 2010 2010.10.07 SLIDE 5
• ColdFusion
• PHP
• ASP
• All of the are server-side scripting languages that embed code in HTML pages
IS 257 – Fall 2010 2010.10.07 SLIDE 6
• Review
– Databases for Web Applications – Overview
• ColdFusion
• PHP
– DiveShop in PHP
• Introduction to ORACLE and SQL-Plus
IS 257 – Fall 2010 2010.10.07 SLIDE 7
• ColdFusion
• PHP
• ASP
• All of the are server-side scripting languages that embed code in HTML pages
IS 257 – Fall 2010 2010.10.07 SLIDE 8
• Developing WWW sites typically involved a lot of programming to build dynamic sites
– e.g. Pages generated as a result of catalog searches, etc.
• ColdFusion was designed to permit the construction of dynamic web sites with only minor extensions to HTML through a
DBMS interface
IS 257 – Fall 2010 2010.10.07 SLIDE 9
• Started as CGI
– Drawback, as previously discussed, is that the entire system is run for each cgi invocation
• Split into cooperating components
– Windows service -- runs constantly
– Server modules for 4 main Web Server API
(glue that binds web server to ColdFusion service) {Apache, ISAPI, NSAPI, WSAPI}
– Special CGI scripts for other servers
IS 257 – Fall 2010 2010.10.07 SLIDE 10
• Putting up databases onto the Web
• Handling dynamic databases (Frequent updates, etc)
• Making databases searchable and updateable by users.
IS 257 – Fall 2010 2010.10.07 SLIDE 11
• Unix or Windows systems
• Install as SuperUser
• Databases must be defined via “ data source names (DSNs) by administrator
IS 257 – Fall 2010 2010.10.07 SLIDE 12
• Field names should be devoid of spaces. Use the underscore character, like new_items instead of "new items."
• Use key fields. Greatly reduces search time.
• Check permissions on the individual tables in your database and make sure that they have read-access for the username your Web server uses to log in.
• If your fields include large blocks of text, you'll want to include basic HTML coding within the text itself, including boldface, italics, and paragraph markers.
IS 257 – Fall 2010 2010.10.07 SLIDE 13
• Assume we have a database named contents_of_my_shopping_cart.mdb -single table called contents...
• Create an HTML page (uses extension
.cfm), and before <HEAD>...
IS 257 – Fall 2010 2010.10.07 SLIDE 14
<CFQUERY NAME= ” cart"
DATASOURCE= “ contents_of_my_shopping_cart">
SELECT * FROM contents ; </CFQUERY>
<HEAD>
<TITLE>Contents of My Shopping Cart</TITLE>
</HEAD>
<BODY>
<H1>Contents of My Shopping Cart</H1>
<CFOUTPUT QUERY= ” cart">
<B> #Item# </B> <BR>
#Date_of_item# <BR>
$ #Price# <P>
</CFOUTPUT>
</BODY>
</HTML>
IS 257 – Fall 2010 2010.10.07 SLIDE 15
Bouncy Ball with Psychedelic Markings
12 December 1998
$0.25
Shiny Blue Widget
14 December 1998
$2.53
Large Orange Widget
14 December 1998
$3.75
IS 257 – Fall 2010 2010.10.07 SLIDE 16
<CFOUTPUT QUERY= ” cart">
Item: #Item# <BR>
<CFIF #Picture# EQ"">
<IMG SRC= “ generic_picture.jpg"> <BR>
<CFELSE>
<IMG SRC=" #Picture# "> <BR>
</CFIF>
</CFOUTPUT>
IS 257 – Fall 2010 2010.10.07 SLIDE 17
<CFQUERY DATASOURCE = “ AZ2 ” >
INSERT INTO Employees(firstname, lastname, phoneext) VALUES( ‘ #firstname# ’ , ‘ #lastname# ’ ,
‘ #phoneext# ’ ) </CFQUERY>
<HTML><HEAD><TITLE>Employee Added</TITLE>
<BODY><H1>Employee Added</H1>
<CFOUTPUT>
Employee <B> #firstname# #lastname# </B> added.
</CFOUTPUT> </BODY>
</HTML>
IS 257 – Fall 2010 2010.10.07 SLIDE 18
CFML ColdFusion Markup Language
• Read data from and update data to databases and tables
• Create dynamic data-driven pages
• Perform conditional processing
• Populate forms with live data
• Process form submissions
• Generate and retrieve email messages
• Perform HTTP and FTP function
• Perform credit card verification and authorization
• Read and write client-side cookies
IS 257 – Fall 2010 2010.10.07 SLIDE 19
• Review
– Databases for Web Applications – Overview
• ColdFusion
• PHP
– DiveShop in PHP
• More on ORACLE and SQL-Plus
IS 257 – Fall 2010 2010.10.07 SLIDE 20
• PHP is an Open Source Software project with many programmers working on the code.
– Commonly paired with MySQL, another OSS project
– Free
– Both Windows and Unix support
• Estimated that more than 250,000 web sites use PHP as an Apache Module.
IS 257 – Fall 2010 2010.10.07 SLIDE 21
• Similar to “ C ” or Java (note lines end with “ ; ” )
<HTML><BODY>
<?php
$myvar = “ Hello World ” ; echo $myvar ;
?>
</BODY></HTML>
• Includes most programming structures (Loops, functions, Arrays, etc.)
• Loads HTML form variables so that they are addressable by name
IS 257 – Fall 2010 2010.10.07 SLIDE 22
• DBMS interface appears as a set of functions:
<HTML><BODY>
<?php
mysql_connect( “ localhost ” , “ usename ” , “ password ” ); mysql_select_db( “ mydb ” );
$result = mysql_query( “ SELECT * FROM employees ” ); while ($r = mysql_fetch_array($result,MYSQL_ASSOC)) { printf("<center><H2>%s",$r[ ” LAST_NAME"]); printf( ” , %s</H2></center> ",$r[ ” FIRST_NAME"]);
}
?></BODY ></HTML>
IS 257 – Fall 2010 2010.10.07 SLIDE 23
• Examples on Harbinger/People…
IS 257 – Fall 2010 2010.10.07 SLIDE 24
• Another server-side scripting language
• From Microsoft using Visual Basic as the
Language model (VBScript), though
Javascript (actually MS Jscript) is also supported
• Works with Microsoft IIS and gives access to ODBC databases
• Most commonly used for Access or MS
SQL Server
IS 257 – Fall 2010 2010.10.07 SLIDE 25
<%
SQL="SELECT last, first FROM employees
ORDER BY last" set conn = server.createobject("ADODB.Connection") conn.open “ employee"
%> set people=conn.execute(SQL)
<% do while not people.eof set resultline=people(0) &
“
,
“
& people(1) &
“
<BR>
”
Response.Write(resultline) people.movenext
loop%>
<% people.close %>
IS 257 – Fall 2010 2010.10.07 SLIDE 26
• Review
– Databases for Web Applications – Overview
• ColdFusion
– DiveShop in ColdFusion
• PHP
– DiveShop in PHP
• More on MySQL and SQL
IS 257 – Fall 2010 2010.10.07 SLIDE 27
• More on SQL for data manipulation and modification
IS 257 – Fall 2010 2010.10.07 SLIDE 28
• Syntax:
– SELECT [DISTINCT] attr1, attr2,…, attr3 as label, function(xxx), calculation, attr5, attr6
FROM relname1 r1, relname2 r2,… rel3 r3
WHERE condition1 {AND | OR} condition2
ORDER BY attr1 [DESC], attr3 [DESC]
IS 257 – Fall 2010 2010.10.07 SLIDE 29
• = equal to a particular value
• >= greater than or equal to a particular value
• > greater than a particular value
• <= less than or equal to a particular value
• <> or != not equal to a particular value
• LIKE ‘ %wom_n% ’ (Note different wild card from Access)
• opt1 SOUNDS LIKE opt2
• IN ( ‘ opt1 ’ , ‘ opt2 ’ ,…, ’ optn ’ )
• BETWEEN opt1 AND opt2
• IS NULL or IS NOT NULL
IS 257 – Fall 2010 2010.10.07 SLIDE 30
• COUNT(dataitem)
• COUNT(DISTINCT expr)
• AVG(numbercolumn)
• SUM(numbercolumn)
• MAX(numbercolumn)
• MIN(numbercolumn)
• STDDEV(numbercolumn)
• VARIANCE(numbercolumn)
• and other variants of these…
IS 257 – Fall 2010 2010.10.07 SLIDE 31
• ABS(n)
• ACOS(n)
• ASIN(n)
• ATAN(n)
• ATAN2(n, m)
• CEIL(n)
• COS(n)
• COSH(n)
• CONV(n, fbase,t-base)
• COT(n)
• DEGREES(n)
• EXP(n)
• EXP(n)
• FLOOR(n)
• LN(n)
• LOG(n,b)
• MOD(n)
• PI()
• POWER(n,p)
• ROUND(n)
• SIGN(n)
• SIN(n)
• SINH(n)
• SQRT(n)
• TAN(n)
• TANH(n)
• TRUNCATE( n,m)
IS 257 – Fall 2010 2010.10.07 SLIDE 32
Character Functions returning character values
• CHAR(n,…)
• CONCAT(str1,str2,…)
• LOWER(char)
• LPAD(char, n,char2),
RPAD(char, n,char2)
• LTRIM(char, n, cset),
RTRIM(char, n, cset)
• REPLACE(char, srch, repl)
• SOUNDEX(char)
• SUBSTR(char, m, n)
• UPPER(char)
IS 257 – Fall 2010 2010.10.07 SLIDE 33
Character Function returning numeric values
• ASCII(char)
• INSTR(char1, char2)
• LENGTH(char)
• BIT_LENGTH(str)
• CHAR_LENGTH(str)
• LOCATE(substr,str)
• LOCATE(substr,str,po s)
• and many other variants.
IS 257 – Fall 2010 2010.10.07 SLIDE 34
• ADDDATE(dt, INTERVAL expr unit) or
ADDDATE(dt, days)
• ADDTIME(dttm, time)
• LAST_DAY(dt)
• MONTH(dt) – YEAR(dt) – DAY(dt)
• MONTHNAME(dt)
• NOW()
• NEW_TIME(d, z1, z2) -- PST, AST, etc.
• NEXT_DAY(d, dayname)
• STR_TO_DATE(str,format)
• SYSDATE()
IS 257 – Fall 2010 2010.10.07 SLIDE 35
• Assignment 3 is some additional (and occasionally more complex) searches to be run on the Diveshop database
• These should be run via the command line
(via login to ischool.berkeley.edu)
• Assignment 3 is posted on the class web site
• Walkthrough online version
• Due Thursday, Oct. 25th
IS 257 – Fall 2010 2010.10.07 SLIDE 36