- Courses - University of California, Berkeley

advertisement

IS 257 – Fall 2010

PHP introduction

University of California, Berkeley

School of Information

IS 257: Database Management

2010.10.07 SLIDE 1

Lecture Outline

• 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 2

Lecture Outline

• 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 3

Dynamic Web Applications 2

Internet

IS 257 – Fall 2010

Clients

Web

Server CGI

Files

DBMS

Server database database database

2010.10.07 SLIDE 4

Server Interfaces

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

Web Application Server Software

• 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

Lecture Outline

• 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

Web Application Server Software

• 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

ColdFusion

• 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

ColdFusion

• 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

What ColdFusion is Good for

• 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

Requirements

• 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

Requirements and Set Up

• 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

Templates

• 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

Templates cont.

<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

Templates cont.

Contents of My Shopping Cart

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

CFIF and CFELSE

<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

More Templates

<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

Lecture Outline

• 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

• 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

PHP Syntax

• 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

Combined with MySQL

• 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

Diveshop PHP

• Examples on Harbinger/People…

IS 257 – Fall 2010 2010.10.07 SLIDE 24

ASP – Active Server Pages

• 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

ASP Syntax

<%

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

Lecture Outline

• 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

Today

• More on SQL for data manipulation and modification

IS 257 – Fall 2010 2010.10.07 SLIDE 28

SELECT

• 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

SELECT Conditions

• = 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

Aggregate (group by) Functions

• 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

Numeric Functions

• 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

Date functions

• 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

• 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

Download