PHP/MySQL Tutorial

Nguy n Quang Hùng E­mail: hungnq2@dit.hcmut.edu.vn

Web site: http://www.dit.hcmut.edu.vn/~hungnq/courses.htm

M c tiêu

ệ ậ  N m b t công ngh  l p trình trang web đ ng

ắ ằ b ng PHP.

 Tìm hi u v  cách truy v n CSDL MySQL t

PHP.

ộ ứ

ạ ệ

 Vi

ế t m t  ng d ng Tra c u danh b  đi n  ạ ằ

tho i b ng JSP.

Nguyễn Quang Hùng – E-mail: hungnq2@dit.hcmut.edu.vn

L p trình web phía server

ự ọ

 L p trình Web v i CGI (t

h c)

ự ọ

ớ  L p trình Web v i ASP/ASP.NET (t

h c)

ự ọ

 L p trình Web v i Servlet (t

h c)

ươ

 L p trình Web v i JSP (ch

ng 7)

ớ  L p trình Web v i PHP (hôm nay)

Nguyễn Quang Hùng – E-mail: hungnq2@dit.hcmut.edu.vn

Introduction

 PHP (Hypertext Preprocessor)

­ Open source, server­side, scripting language.

­ Supports databases such as MySQL and Oracle.

­ http://www.w3schools.com/php/default.asp

 MySQL (Structured Query Language)

­ Open source, speedy, scalable, reliable database

technology.

­ http://dev.mysql.com/doc/mysql/en/Tutorial.html

Nguyễn Quang Hùng – E-mail: hungnq2@dit.hcmut.edu.vn

Tutorial Overview

 Database (MySQL)

 DB creation

 Add/delete tables

 Add/delete/update records

 View/query records

 Web (PHP)

 User front­end

 Add & query code

 Delete & update code

Nguyễn Quang Hùng – E-mail: hungnq2@dit.hcmut.edu.vn

MySQL & TCD

(1)

‘PuTTY’ into wilde.cs.tcd.ie on port 22 w/ SSH

­ Authenticate with your TCD username and password

(2) ssh macneil.cs.tcd.ie (password as above)

(3) Login into your MySQL account

‘mysql –uUSERNAME –p’

Enter your MySQL username and password

(4) Use MySQL syntax to create and view table(s),

records,  etc.

Nguyễn Quang Hùng – E-mail: hungnq2@dit.hcmut.edu.vn

Basic MySQL Syntax

 SHOW DATABASES;

 USE database_name;

 SHOW TABLES;

 DROP TABLE table_name;

Nguyễn Quang Hùng – E-mail: hungnq2@dit.hcmut.edu.vn

Create MySQL Table

CREATE TABLE user (

name varchar(9) NOT NULL,

id int(6) NOT NULL,

PRIMARY KEY (id),

UNIQUE (id)

);

Nguyễn Quang Hùng – E-mail: hungnq2@dit.hcmut.edu.vn

Add/Delete/Update Table

 INSERT INTO user VALUES (‘bond’, ‘007’);

 DELETE FROM user WHERE id=‘007’;

 UPDATE user SET name=‘BOND’ WHERE

id=‘007’;

Nguyễn Quang Hùng – E-mail: hungnq2@dit.hcmut.edu.vn

Query Database

 SELECT * FROM user;

 SELECT * FROM user WHERE name=‘BOND’;

 SELECT DISTINCT name FROM user;

 SELECT name, id FROM user ORDER BY name;

Nguyễn Quang Hùng – E-mail: hungnq2@dit.hcmut.edu.vn

MySQL Administrator GUI tool

Nguyễn Quang Hùng – E-mail: hungnq2@dit.hcmut.edu.vn

PHP User Front­End

  

$variable=“271004";

echo $variable;

?>

 Script is executed server side and presented to user via a

browser.

 PHP code is rendered as plain HTML.

Nguyễn Quang Hùng – E-mail: hungnq2@dit.hcmut.edu.vn

PHP Configuration File

// configuration parameters

// database configuration

• Use a securely positioned ‘config’ file to store variables.

$host = "macneill.cs.tcd.ie";

$user = “username";

$pass = “password";

$db = “username_db";

// default contact person

• Other PHP pages can link to it and use the variables as their own.

$def_contact = “Karl";

?>

Nguyễn Quang Hùng – E-mail: hungnq2@dit.hcmut.edu.vn

PHP Add to DB Code 1

Title

Authors

Nguyễn Quang Hùng – E-mail: hungnq2@dit.hcmut.edu.vn

PHP Add to DB Code 2

// form submitted so start processing it

include("conf.php");

// set up error list array & validate text input fields

$errorList = array();

$count = 0;

if (!$title) { $errorList[$count] = "Invalid entry: Title"; $count++; }

// set default value for contact person

if (!$contact) { $contact = $def_contact; }

// check for errors & if none found...

if (sizeof($errorList) == 0)

$title = $_POST["title"]; $authors = $_POST["authors"];

mysql_select_db( $db ) or die ("Unable to select database!"); $query = "INSERT INTO papers (title, authors, description, comment, super, bibtex, url, genre)

$connection = mysql_connect($host, $user, $pass) or die ("Unable to connect!");

VALUES ('$title', '$authors', '$description', '$comment',

'$super','$bibtex','$url','$genre')";

echo "Addition successful.

 Go back to the main page | home";

// close database connection

$result = mysql_query( $query ) or die ("Error in query: $query. " . mysql_error());

Nguyễn Quang Hùng – E-mail: hungnq2@dit.hcmut.edu.vn

else {// errors occurred}

?>

mysql_close($connection); }

PHP Query Code

include("conf.php");

$connection = mysql_connect($host, $user, $pass) or die ();

mysql_select_db($db) or die ("Unable to select database!");

$query = "SELECT * FROM papers";

$result = mysql_query($query) or die ("Error in query”); ?>

// if records present

if (mysql_num_rows($result) > 0)   {

// iterate through resultset & print title with links to edit and delete scripts

?>

while($row = mysql_fetch_object($result))

id;

? ?

>">edit/view | id;  >">delete

title; ?>

­authors; ?>
url; ?>" target="_blank"> pdf




 

}

}

// if no records present

else{}

mysql_close($connection); ?>

Nguyễn Quang Hùng – E-mail: hungnq2@dit.hcmut.edu.vn

PHP Delete Code

include("conf.php");

// form not yet submitted, display initial form with values pre­filled

$id=$_GET['id'];

{

// open database connection

$connection = mysql_connect($host, $user, $pass) or die ("Unable to connect!");

// select database

mysql_select_db($db) or die ("Unable to select database!");

// generate and execute query

$query = "DELETE FROM papers WHERE id = '$id'";

$result = mysql_query($query) or die ("Error in query: $query. " . mysql_error());

// close database connection

mysql_close($connection);

// print result

echo "Deletion successful. 

Go back to the main page | home";

}

Nguyễn Quang Hùng – E-mail: hungnq2@dit.hcmut.edu.vn

PHP Update Code 1

$id=$_GET['id'];

if (!$submit)

{

$connection = mysql_connect($host, $user, $pass) or die ("Unable to connect!");

mysql_select_db($db) or die ("Unable to select database!");

$query = "SELECT title, authors, description, comment, super, bibtex, url, genre  FROM papers WHERE id = '$id'";

$result = mysql_query($query) or die ("Error in query: $query. " . mysql_error())

if (mysql_num_rows($result) > 0)

{

$row = mysql_fetch_object($result);

// print form with values pre­filled

?>

">

Title

title;  ?>

Authors

Nguyễn Quang Hùng – E-mail: hungnq2@dit.hcmut.edu.vn

authors; ?>

value="Update">

PHP Update Code 2

include("conf.php");

// form submitted so start processing it

$title = $_POST["title"];

$authors = $_POST["authors"];

$id = $_POST["id"];

// set up error list array

$errorList = array();

$count = 0;

// validate text input fields

if (!$title) { $errorList[$count] = "Invalid entry: Title"; $count++; }

if (!$contact) { $contact = $def_contact; }

// check for errors, if none found...

if (sizeof($errorList) == 0)

{

$connection = mysql_connect($host, $user, $pass) or die ("Unable to connect!");

mysql_select_db($db) or die ("Unable to select database!");

$result = mysql_query($query) or die ("Error in query: $query. " . mysql_error());

// print result

echo "Update successful.

 Go back to the main page | 

href=http://www.cs.tcd.ie/Karl.Quinn/>home";

// close database connection

mysql_close($connection);

}

else{}

Nguyễn Quang Hùng – E-mail: hungnq2@dit.hcmut.edu.vn

?>

$query = "UPDATE papers SET title = '$title', authors = '$authors', description = '$comment', super = '$super', bibtex = '$bibtex', url = '$url', genre = '$description', comment =  '$genre' WHERE id = '$id'";

ả Tài li u tham kh o

1.

http://www.w3schools.com/php/php_forms.asp

2.

http://www.w3schools.com/php/php_mysql_intro.asp

3.

http://www.php.net/mysql

4.

http://www.w3schools.com/php/php_mysql_intro.asp

Nguyễn Quang Hùng – E-mail: hungnq2@dit.hcmut.edu.vn

Brief History of PHP

PHP (PHP: Hypertext Preprocessor) was created by Rasmus Lerdorf in 1994. It was initially

developed for HTTP usage logging and server­side form generation in Unix.

PHP 2 (1995) transformed the language into a Server­side embedded scripting language.

Added database support, file uploads, variables, arrays, recursive functions, conditionals,  iteration, regular expressions, etc.

PHP 3 (1998) added support for ODBC data sources, multiple platform support, email

protocols (SNMP,IMAP), and new parser written by Zeev Suraski and Andi Gutmans .

PHP 4 (2000) became an independent component of the web server for added efficiency.

The parser was renamed the Zend Engine. Many security features were added.

PHP 5 (2004) adds Zend Engine II with object oriented programming, robust XML support  using the libxml2 library, SOAP extension for interoperability with Web Services,  SQLite has been bundled with PHP

Nguyễn Quang Hùng – E-mail: hungnq2@dit.hcmut.edu.vn

Brief History of PHP

As of August 2004, PHP is used on 16,946,328 Domains, 1,348,793 IP Addresses  http://www.php.net/usage.php  This is roughly 32% of all domains on the web.

Nguyễn Quang Hùng – E-mail: hungnq2@dit.hcmut.edu.vn

Why is PHP used?

1. Easy to Use

Example

Nguyễn Quang Hùng – E-mail: hungnq2@dit.hcmut.edu.vn

Code is embedded into HTML. The PHP code is enclosed in special start and end tags that allow you to jump into and out of "PHP mode".

Why is PHP used?

2. Cross Platform

Runs on almost any Web server on several operating systems. One of the strongest features is the wide range of supported databases

Web Servers: Apache, Microsoft IIS, Caudium, Netscape Enterprise Server

Operating Systems: UNIX (HP-UX,OpenBSD,Solaris,Linux), Mac OSX, Windows NT/98/2000/XP/2003

Supported Databases: Adabas D, dBase,Empress, FilePro (read- only), Hyperwave,IBM DB2, Informix, Ingres, InterBase, FrontBase, mSQL, Direct MS-SQL, MySQL, ODBC, Oracle (OCI7 and OCI8), Ovrimos, PostgreSQL, SQLite, Solid, Sybase, Velocis,Unix dbm

Nguyễn Quang Hùng – E-mail: hungnq2@dit.hcmut.edu.vn

Why is PHP used?

3. Cost Benefits

PHP

Software

Free

Platform

Free (Linux)

Development Tools

Free

PHP Coder, jEdit

Nguyễn Quang Hùng – E-mail: hungnq2@dit.hcmut.edu.vn

PHP is free. Open source code means that the entire PHP community will contribute towards bug fixes. There are several add-on technologies (libraries) for PHP that are also free.

Getting Started

1. How to escape from HTML and enter PHP mode

PHP parses a file by looking for one of the special tags that tells it to start interpreting the text as PHP code. The parser then executes all  of the code it finds until it runs into a PHP closing tag.

PHP CODE

HTML

HTML

Starting tag

Ending tag

Notes

Preferred method as it allows the use of PHP  with XHTML

Not recommended. Easier to type, but has to be  enabled and may conflict with XML

?>

Always available, best if used when FrontPage is  the HTML editor

<% %>

Nguyễn Quang Hùng – E-mail: hungnq2@dit.hcmut.edu.vn

Not recommended. ASP tags support was added  in 3.0.4

Getting Started

2.

Simple HTML Page with PHP

The following is a basic example to output text using PHP.

My First PHP Page

Copy the code onto your web server and save it as “test.php”. You should see “Hello World!” displayed.

Notice that the semicolon is used at the end of each line of PHP code to signify a line break. Like HTML, PHP ignores whitespace Nguyễn Quang Hùng – E-mail: between lines of code. (An HTML equivalent is
) hungnq2@dit.hcmut.edu.vn

Getting Started

3.

Using conditional statements

Conditional statements are very useful for displaying specific content to  the user. The following example shows how to display content according to  the day of the week.

if ($today_dayofweek == 4){     echo “Today is Thursday!”;    } else{    echo “Today is not Thursday.”; }

Nguyễn Quang Hùng – E-mail: hungnq2@dit.hcmut.edu.vn

?>

Getting Started

3.

Using conditional statements The if statement checks the value of $today_dayofweek    (which is the numerical day of the week, 0=Sunday… 6=Saturday)

If it is equal to 4 (the numeric representation of Thurs.) it will display    everything within the first { } bracket  after the “if()”.

If it is not equal to 4, it will display everything in the second { } bracket    after the “else”.

if ($today_dayofweek == 4){     echo “Today is Thursday!”;    } else{    echo “Today is not Thursday.”; }

Nguyễn Quang Hùng – E-mail: hungnq2@dit.hcmut.edu.vn

?>

Getting Started

3.

Using conditional statements

If we run the script on a Thursday, we should see:    “Today is Thursday”.

On days other than Thursday, we will see:    “Today is not Thursday.”

if ($today_dayofweek == 4){     echo “Today is Thursday!”;    } else{    echo “Today is not Thursday.”; }

Nguyễn Quang Hùng – E-mail: hungnq2@dit.hcmut.edu.vn

?>

Examples

 PHP is a great way to implement templates on

your website.

 How to implement a simple page counter

Nguyễn Quang Hùng – E-mail: hungnq2@dit.hcmut.edu.vn

Examples

 Step 1: Universal header and footer in a single file

 Create a file called header.php. This file will have all of the

header HTML code. You can use FrontPage/Dreamweaver to create the header, but  remember to remove the closing  and  tags.

UCR Webmaster Support Group

 Page Title 

Nguyễn Quang Hùng – E-mail: hungnq2@dit.hcmut.edu.vn

Examples

 Step 2: Universal header and footer in a single file

 Next, create a file called footer.php. This file will have all of the footer HTML code.

 UC Riverside Department

someuser@ucr.edu

Nguyễn Quang Hùng – E-mail: hungnq2@dit.hcmut.edu.vn

Examples

 Step 3: Universal header and footer in a single file

This is the basic template that you will use on all of the pages. Make sure you name the files with a  .php extension so that the server will process the PHP code. In this example, we assume the header  and footer files are located in the same directory.

// header

include(“header.php”);

?>

Insert content here!

// footer

Nguyễn Quang Hùng – E-mail: hungnq2@dit.hcmut.edu.vn

include(“footer.php”);

?>

Examples

Benefits:

­  Any changes to header or footer only require editing of a

single file. This reduces the amount of work necessary for

site maintenance and redesign.

­  Helps separate the content and design for easier maintenance

Header

Page 1 Content Page 2 Content Page 3 Content Page 4 Content Page 5 Content

Footer

Nguyễn Quang Hùng – E-mail: hungnq2@dit.hcmut.edu.vn

Examples

 Step 1: Simple Page Counter

 Download the counter file webcounter.txt onto your machine

 Upload the webcounter.txt file onto your web server (via FTP, WinSCP, etc)

 Change the file permissions of the webcounter.txt file to 777 to allow the

counter file to be updated.

Nguyễn Quang Hùng – E-mail: hungnq2@dit.hcmut.edu.vn

Examples

 Step 2: Simple Page Counter

 Copy this code into a page where you want a counter.

$COUNTER_FILE = “webcounter.txt";

if (file_exists($COUNTER_FILE)) {

$fp = fopen("$COUNTER_FILE", "r+");

flock($fp, 1);

$hits = fgets($fp, 4096);

$hits += 1;

fseek($fp,0);

fputs($fp, $hits);

flock($fp, 3);

Nguyễn Quang Hùng – E-mail: hungnq2@dit.hcmut.edu.vn

fclose($fp);

}

?>

Examples

 Step 3: Simple Page Counter

 Next, output the counter value using PHP.  Copy this line after the main block of code.

This page has been viewed  times.

• That’s it! The result should look something similar to:

Nguyễn Quang Hùng – E-mail: hungnq2@dit.hcmut.edu.vn

Examples

 Step 3: Simple Page Counter

 You can change the text around the

 tags to your liking.

 visitors.

This example shows 1. How to escape from HTML and enter PHP mode 2. How to output variables onto the screen using PHP

Nguyễn Quang Hùng – E-mail: hungnq2@dit.hcmut.edu.vn

Examples

2. How to output variables using PHP

Echo is the common method in outputting data. Since it  is a language construct, echo doesn’t require parenthesis like print().

 Output Text Usage:

  // prints out Hello World

 Output the value of a PHP variable:

    // prints out the number of hits

Echo has a shortcut syntax, but it only works with the “short  open tag” configuration enabled on the server.  

Nguyễn Quang Hùng – E-mail: hungnq2@dit.hcmut.edu.vn

Examples

3.

Other uses with echo()

Automatically generate the year on your pages. This will print out ©2004 UC Riverside.     ©  UC Riverside

You will need to escape any quotation marks with a backslash.

Nguyễn Quang Hùng – E-mail: hungnq2@dit.hcmut.edu.vn

Additional Resources

PHP Manual http://docs.php.net/

PHP Tutorial http://academ.hvcc.edu/~kantopet/php/index.php

PHP Coder http://www.phpide.de/

JEdit http://www.jedit.org/

PHP's creator offers his thoughts on the PHP phenomenon, what has shaped and  motivated the language, and where the PHP movement is heading  http://www.oracle.com/technology/pub/articles/php_experts/rasmus_php.html

 Hotscripts – A large number of PHP scripts can be found at: http://

hotscripts.com/PHP/Scripts_and_Programs/index.html

Nguyễn Quang Hùng – E-mail: hungnq2@dit.hcmut.edu.vn

Additional Information

Some of the new functions added in version 5:

Arrays: array_combine() ­ Creates an array by using one array for keys and another for its values

array_walk_recursive() ­ Apply a user function recursively to every member of an array

Date and Time Related: idate() ­ Format a local time/date as integer

date_sunset() ­ Time of sunset for a given day and location

date_sunrise() ­ Time of sunrise for a given day and location

time_nanosleep() ­ Delay for a number of seconds and nano seconds

Strings: str_split() ­ Convert a string to an array

strpbrk() ­ Search a string for any of a set of characters

 Other:

Nguyễn Quang Hùng – E-mail: hungnq2@dit.hcmut.edu.vn php_check_syntax() ­ Check the syntax of the specified file

substr_compare() ­ Binary safe optionally case insensitive comparison of two strings from an offset,  up to length characters

php_strip_whitespace() ­ Return source with stripped comments and whitespace