php-mini-guide

55
Jan Zumwalt – neatinfo.com rev April 1, 2010 Pg 1 of 55 By: Jan Zumwalt NeatInfo.com

Upload: zahur27

Post on 24-Mar-2015

142 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Php-Mini-Guide

Jan Zumwalt – neatinfo.com rev April 1, 2010 Pg 1 of 55

By: Jan Zumwalt NeatInfo.com

Page 2: Php-Mini-Guide

Jan Zumwalt – neatinfo.com rev April 1, 2010 Pg 2 of 55

Table of Contents Table of Contents.................................. ......................................................................................... 2 PHP Syntax......................................... ............................................................................................ 4 Variables.......................................... ............................................................................................... 5

Working With PHP Variables...................................................................................................................... 5 String Functions................................... .......................................................................................... 6

Single and Double Quotes ......................................................................................................................... 7 Concatenating............................................................................................................................................ 9 strlen() - number of characters in a string ................................................................................................... 9 str_replace() - replaces all occurrences...................................................................................................... 9 strtoupper() – convert to upper case........................................................................................................... 9 ucfirst() – first letter to upper case .............................................................................................................. 9 trim() - remove start and end blanks ........................................................................................................... 9

If Else Statement .................................. ........................................................................................ 11 For Loops .......................................... ........................................................................................... 13 While Loops........................................ .......................................................................................... 14 Arrays ............................................. .............................................................................................. 15

Example 1 - Numeric Array – individual assignment ................................................................................. 15 Example 2 - Numeric Array – inline assignment........................................................................................ 15 Example 3 - Associative Array – (key-value pairs) .................................................................................... 15 Example 4 - Associative Array – Object (pointer) syntax........................................................................... 15 Multidimensional Arrays ........................................................................................................................... 16 Example 5 – Associative Multidimensional Arrays .................................................................................... 16 Example 6 - Pointer Multidimensional Arrays............................................................................................ 16 print_r() - Printing Arrays .......................................................................................................................... 17

Date & Time ........................................ .......................................................................................... 18 PHP Date: strtotime() ............................................................................................................................... 18 PHP Date: mktime() ................................................................................................................................. 19

Local File IO...................................... ............................................................................................ 19 PHP file open modes ............................................................................................................................... 19 fgets() – Read Line .................................................................................................................................. 20 file_get_contents() - read entire file .......................................................................................................... 22 fwrite() – writing to file .............................................................................................................................. 22 Write text to a file ..................................................................................................................................... 23 Write at the beginning of a file .................................................................................................................. 23 Write at the end of a file ........................................................................................................................... 24 Write string with line breaks ..................................................................................................................... 24 Simultaneous Read / Write....................................................................................................................... 25

Remote File IO..................................... ......................................................................................... 27 Example 1 - open remote files.................................................................................................................. 27

Forms.............................................. .............................................................................................. 28 Input form – visitor_form.php.................................................................................................................... 28 Process form – visitor_info.php ................................................................................................................ 28

Email .............................................. ............................................................................................... 29 Sending Plain Text Email ......................................................................................................................... 29 Sending HTML Email ............................................................................................................................... 29 Remote input and processing Email ......................................................................................................... 30

Sessions ........................................... ............................................................................................ 33 Storing information in a session ............................................................................................................... 33 Retrieving stored session information....................................................................................................... 33 Destroying/deleting session information ................................................................................................... 34

Cookies............................................ ............................................................................................. 35 Retrieving a cookie .................................................................................................................................. 35 Deleting a Cookie .................................................................................................................................... 36

MySql .............................................. .............................................................................................. 37 Setting Up The Database......................................................................................................................... 38 Inserting Information ................................................................................................................................ 41 More Outputs........................................................................................................................................... 46 Single Records & Error Trapping.............................................................................................................. 48

Page 3: Php-Mini-Guide

Jan Zumwalt – neatinfo.com rev April 1, 2010 Pg 3 of 55

Updating & Deleting ................................................................................................................................. 51 Finishing The Script ................................................................................................................................. 54

Page 4: Php-Mini-Guide

Jan Zumwalt – neatinfo.com rev April 1, 2010 Pg 4 of 55

PHP Syntax <html> <title>my php page</title> <body> <h1>PHP Test</H1> <?php // Single line comment /* * multi-line * comment */ echo "hello there!" ; echo "<b>hello there!</b>" ; echo "<font color='green'>hello there!</font>" ; echo "today is ".date('Y-m-d') ; ?> </body> </html>

Note: At the end of each PHP statement we need need to p ut a semicolon, i.e. " ; " as you see in the above code. Otherwise PHP will re port syntax error .

Page 5: Php-Mini-Guide

Jan Zumwalt – neatinfo.com rev April 1, 2010 Pg 5 of 55

Variables

PHP variables start with a $ sign, A variable name should only start with underscore " _" or a letter .

A variable can only contain letters , numbers or underscore . In another words, you can't use characters like <^# in your variables na mes.

<?php $str = "I love PHP"; // variable with a string value echo $str; // print the $str value onto the browser $num = 100; // another variable with a integer value echo $num; // using echo to print the $num variable echo $str; // reuse the $str variable to print its value echo $num; // reuse the $num variable to print its value ?>

Result: the browser should show " I Love PHP100I Love PHP100 ".

Working With PHP Variables

Example - PHP variable with numbers

<?php $integer_number = 100; echo $number; ?> <?php $decimal_number = 100.01; printf("%.2f", $decimal_number); ?>

Page 6: Php-Mini-Guide

Jan Zumwalt – neatinfo.com rev April 1, 2010 Pg 6 of 55

String Functions

� addcslashes — Quote string with slashes in a C style

� addslashes — Quote string with slashes

� bin2hex — Convert binary data into hexadecimal representat ion

� chop — Alias of rtrim

� chr — Return a specific character

� chunk_split — Split a string into smaller chunks

� convert_cyr_string — Convert from one Cyrillic character set to anoth er

� convert_uudecode — Decode a uuencoded string

� convert_uuencode — Uuencode a string

� count_chars — Return information about characters used in a st ring

� crc32 — Calculates the crc32 polynomial of a string

� crypt — One-way string hashing

� echo — Output one or more strings

� explode — Split a string by string

� fprintf — Write a formatted string to a stream

� get_html_translation_table — Returns the translation table used by htmlspecia lchars and htmlentities

� hebrev — Convert logical Hebrew text to visual text

� hebrevc — Convert logical Hebrew text to visual text with newline conversion

� html_entity_decode — Convert all HTML entities to their applicable ch aracters

� htmlentities — Convert all applicable characters to HTML entiti es

� htmlspecialchars_decode — Convert special HTML entities back to characters

� htmlspecialchars — Convert special characters to HTML entities

� implode — Join array elements with a string

� join — Alias of implode

� lcfirst — Make a string's first character lowercase

� levenshtein — Calculate Levenshtein distance between two strin gs

� localeconv — Get numeric formatting information

� ltrim — Strip whitespace (or other characters) from the beginning of a string

� md5_file — Calculates the md5 hash of a given file

� md5 — Calculate the md5 hash of a string

� metaphone — Calculate the metaphone key of a string

� money_format — Formats a number as a currency string

� nl_langinfo — Query language and locale information

� nl2br — Inserts HTML line breaks before all newlines in a string

� number_format — Format a number with grouped thousands

� ord — Return ASCII value of character

� parse_str — Parses the string into variables

� print — Output a string

� printf — Output a formatted string

� quoted_printable_decode — Convert a quoted-printable string to an 8 bit st ring

� quoted_printable_encode — Convert a 8 bit string to a quoted-printable str ing

� quotemeta — Quote meta characters

� rtrim — Strip whitespace (or other characters) from the end of a string

� setlocale — Set locale information

� sha1_file — Calculate the sha1 hash of a file

� sha1 — Calculate the sha1 hash of a string

� similar_text — Calculate the similarity between two strings

� soundex — Calculate the soundex key of a string

� sprintf — Return a formatted string

� sscanf — Parses input from a string according to a format

� str_getcsv — Parse a CSV string into an array

� str_ireplace — Case-insensitive version of str_replace.

� str_pad — Pad a string to a certain length with another st ring

� str_repeat — Repeat a string

� str_replace — Replace all occurrences of the search string wit h the replacement string

� str_rot13 — Perform the rot13 transform on a string

� str_shuffle — Randomly shuffles a string

Page 7: Php-Mini-Guide

Jan Zumwalt – neatinfo.com rev April 1, 2010 Pg 7 of 55

� str_split — Convert a string to an array

� str_word_count — Return information about words used in a string

� strcasecmp — Binary safe case-insensitive string comparison

� strchr — Alias of strstr

� strcmp — Binary safe string comparison

� strcoll — Locale based string comparison

� strcspn — Find length of initial segment not matching mask

� strip_tags — Strip HTML and PHP tags from a string

� stripcslashes — Un-quote string quoted with addcslashes

� stripos — Find position of first occurrence of a case-inse nsitive string

� stripslashes — Un-quotes a quoted string

� stristr — Case-insensitive strstr

� strlen — Get string length

� strnatcasecmp — Case insensitive string comparisons using a "nat ural order" algorithm

� strnatcmp — String comparisons using a "natural order" algor ithm

� strncasecmp — Binary safe case-insensitive string comparison o f the first n characters

� strncmp — Binary safe string comparison of the first n cha racters

� strpbrk — Search a string for any of a set of characters

� strpos — Find position of first occurrence of a string

� strrchr — Find the last occurrence of a character in a str ing

� strrev — Reverse a string

� strripos — Find position of last occurrence of a case-insen sitive string in a string

� strrpos — Find position of last occurrence of a char in a string

� strspn — Finds the length of the first segment of a strin g consisting entirely of characters contained within a given mask.

� strstr — Find first occurrence of a string

� strtok — Tokenize string

� strtolower — Make a string lowercase

� strtoupper — Make a string uppercase

� strtr — Translate certain characters

� substr_compare — Binary safe comparison of 2 strings from an offs et, up to length characters

� substr_count — Count the number of substring occurrences

� substr_replace — Replace text within a portion of a string

� substr — Return part of a string

� trim — Strip whitespace (or other characters) from the beginning and end of a string

� ucfirst — Make a string's first character uppercase

� ucwords — Uppercase the first character of each word in a string

� vfprintf — Write a formatted string to a stream

� vprintf — Output a formatted string

� vsprintf — Return a formatted string

� wordwrap — Wraps a string to a given number of characters

A string is a sequence of letters , symbols , characters and numbers or combination of all tied together in single or double quotes.

Tip: The print() function is slightly slower than echo( ).

Example - PHP String

<?php $str = "I Love PHP"; echo $str ?>

Single and Double Quotes

Double quotes allow us to escape specials characters in our stri ng. For example, you can use a single quotes with in double quotes.

Special characters are escaped using backslash. Som etimes we need escape special characters in our strings. We will learn about in t he following section.

Page 8: Php-Mini-Guide

Jan Zumwalt – neatinfo.com rev April 1, 2010 Pg 8 of 55

Example - String in Double Quotes

<?php $str = "It's a nice day today." echo $str; ?>

or

<?php $name = "Matt"; echo "Hello $name!"; ?>

Double quotes allow single quotes and special characters to be used.

We can have a special character ignored by precedin g it with a backslash.

<?php $str = "\"This is a PHP string examples in double q uotes\""; echo $str; ?>

Example - String in Single Quotes

<?php $str = 'This is a PHP string examples in single quotes'; echo $str; echo '<input type="text" name="first_name" id="f irst_name">'; ?>

or

<?php print ' <center><h1>Important</h1></center> <p>This si a lot of html code<br /> that can be displayed using a<br /> single print statement and single<br /> quote</p> ' // end of print ?>

Single quotes allow double quotes in the string. Single quotes should be used when outputting HTML code.

We can escape characters in single quotes too.

<?php $str = 'It\'s a nice day today.'; echo $str; ?>

Page 9: Php-Mini-Guide

Jan Zumwalt – neatinfo.com rev April 1, 2010 Pg 9 of 55

Concatenating

Sometimes while working with strings in our code, w e need to join two strings. In PHP, you can use '.' to concatenate two or more str ings together to form a single string.

Example 1 - Concatenating PHP Strings

<?php $str1 = "I Love PHP."; $str2 = "PHP is fun to learn."; echo $str1." ".$str2; ?>

Example 2 – Alternate method

<?php $str1 = "I Love PHP."; $str2 = $str1." PHP is fun to learn."; echo $str2; ?>

strlen() - number of characters in a string <?php $str = "Hello!"; echo strlen($str); ?>

Result: 6.

str_replace() - replaces all occurrences

<?php $str = "Hello! How are you today?"; echo str_replace("Hello", "Hi", $str); ?>

Result: "Hi! How are you today?"

strtoupper() – convert to upper case

<?php $str = "hello!"; echo strtoupper($str); ?>

Result: "HELLO!"

ucfirst() – first letter to upper case

<?php $str = "hello!"; echo ucfirst($str); ?>

Result: "Hello!"

trim() - remove start and end blanks

Page 10: Php-Mini-Guide

Jan Zumwalt – neatinfo.com rev April 1, 2010 Pg 10 of 55

<?php $str = " hello! "; echo trim($str); ?>

Result: "hello!"

Page 11: Php-Mini-Guide

Jan Zumwalt – neatinfo.com rev April 1, 2010 Pg 11 of 55

If Else Statement

if (condition1){ statement(s); }

or

if (condition1){ statement(s); } else { statement(s); }

or

if (condition1){ statement(s); } elseif (condition2){ statement(s); }

or

if (condition1){ statement(s); } elseif (condition2){ statement(s); } else { statement(s); }

Example - Without Curly Brackets

If there is only one line of code between the condi tions, the brackets are not needed.

<html> <body> <?php //Give what day of the week it is. Returns Sunday through Saturday. $day = date("l"); if ($day == "Saturday") echo "It's party time :)"; else echo "Ahhh! I hate work days."; ?> </body> </html>

Example – With Curly Brackets

<html> <body> <?php //Give what day of the week it is. Returns Sunday through Saturday. $day = date("l"); if ($day == "Saturday") {

Page 12: Php-Mini-Guide

Jan Zumwalt – neatinfo.com rev April 1, 2010 Pg 12 of 55

echo "It's party time :)"; echo " Where are you going this evening?"; } else { echo "Ahhh! I hate work days."; echo " I want weekend to come :)"; } ?> </body> </html>

Example - Elseif Statement

<html> <body> <?php //Give what day of the week it is. Returns Sunday through Saturday. $day = date("l"); if ($day == "Saturday") { echo "It's party time :)"; echo " Where are you going this evening?"; } elseif ($day == "Friday") { echo "Have a nice day!"; } else { echo "Ahhh! I hate work days."; echo " I want weekend to come :)"; } ?> </body> </html>

Page 13: Php-Mini-Guide

Jan Zumwalt – neatinfo.com rev April 1, 2010 Pg 13 of 55

For Loops

for(initialize; condition; increment) { //execute block of code }

Example - For Loop

<?php for($i=0; $i<=5; $i=$i+1) { echo $i." "; } ?>

Result: numbers will be output 0 to 5 as 0 1 2 3 4 5.

In the above example, we set a counter variable $i to 0. In the second statement of the for loop, we set the condition value to our counter variable $i to 5, i.e. the loop will execute until $i reaches 5. In the th ird statement, we set $i to increment by 1. This code will output numbers 0 to 5 as 0 1 2 3 4 5.

Note: The third increment statement can be set to i ncrement by any number. In our above example, we can set $i to increment by 2, i.e ., $i=$i+2. In this case the code will produce 0 2 4.

Example - Print table with alternate colors using P HP For Loop

You often seen tables cell with alternate colors on different websites. So, let say we want to print the numbers in a table with al ternate colors. This is how we would do it.

<?php echo "<table width='100' align='center'>"; for($i=0; $i<=5; $i=$i+1) { if($i % 2 == 0) { echo "<tr>"; echo "<td style='background-color:red'>"; echo $i; echo "</td>"; echo "</tr>"; } else { echo "<tr>"; echo "<td style='background-color:green'>"; echo $i; echo "</td>"; echo "</tr>"; } } echo "</table>"; ?>

0

1

2

3

4

5

Page 14: Php-Mini-Guide

Jan Zumwalt – neatinfo.com rev April 1, 2010 Pg 14 of 55

While Loops

While Loop Syntax

while(condition) { //execute block of code }

Example - While Loop

<?php $i = 1; while ($i <= 5 ) { echo $i . "<br>"; $i = $i + 1; } ?>

Result: prints integers through 1 to 5

Breaking out of a PHP Loop

Sometimes when we are working with loops, we want t o break the loop when a certain condition is true. We can use the break; statement to stop the loop from executing.

<?php $i = 1; while ($i <= 5 ) { if($i == 4) break; echo $i . "<br>"; $i = $i + 1; } ?>

Result: The loop outputs... 1 2 3 then breaks

Page 15: Php-Mini-Guide

Jan Zumwalt – neatinfo.com rev April 1, 2010 Pg 15 of 55

Arrays

There are two types of arrays we deal with in PHP.

• Numeric Arrays

• Associative Arrays

Numeric Arrays

In a numeric array we store each element with a num eric ID key.

Creating an Numeric Array

There are two ways to create a numeric array. Lets look at each example to see how we do that.

Example 1 - Numeric Array – individual assignment <?php $employee_names[0] = "Dana"; $employee_names[1] = "Matt"; $employee_names[2] = "Susan"; echo "The first employee's name is ".$employee_name s[0]; echo "<br>"; echo "The second employee's name is ".$employee_nam es[1]; echo "<br>"; echo "The third employee's name is ".$employee_name s[2]; ?>

Result:

"The first employee's name is Dana". "The second employee's name is Matt". "The third employee's name is Susan".

Example 2 - Numeric Array – inline assignment <?php $employee_names = array("Dana", "Matt", "Susan") ; echo "The third employee's name is ".$employee_n ames[2]; ?>

Result: "The third employee's name is Susan".

Example 3 - Associative Array – (key-value pairs) <?php $employee_title["Dana"] = "Owner"; $employee_title["Matt"] = "Manager"; $employee_title["Susan"] = "Cashier"; echo "Matt is the ".$employee_title["Matt"]; ?>

Example 4 - Associative Array – Object (pointer) sy ntax <?php $employee_names = array("Dana" => "Owner", "Matt" = > "Manager", "Susan" => "Cashier"); echo "Matt is the ".$employee_names["Matt"]; ?>

Result: "Matt is the Manger".

Page 16: Php-Mini-Guide

Jan Zumwalt – neatinfo.com rev April 1, 2010 Pg 16 of 55

Multidimensional Arrays

Lets extend our idea of associating a single key to an element. What if we want to associate multiple keys to an element? Consider the Employees Table/Matrix below.

Employees Table/Matrix

name title salary

employee 1 Dana Owner $60,000

employee 2 Matt Manager $40,000

employee 3 Susan Clerk $30,000

Hmmm, that's nice but how the heck would I store em ployees table in an array? Simple. PHP allows us to do that using multidimensi onal arrays. Let's look at the examples below to see how we would do that.

Creating Multidimensional Array in PHP

Again, there are two ways to create a multidimensio nal array. Lets look at each example to see how we do that.

Example 5 – Associative Multidimensional Arrays <?php $employees["employee 1"]["name"] = "Dana"; $employees["employee 1"]["title"] = "Owner"; $employees["employee 1"]["salary"] = "$60,000"; $employees["employee 2"]["name"] = "Matt"; $employees["employee 2"]["title"] = "Manager"; $employees["employee 2"]["salary"] = "$40,000"; $employees["employee 3"]["name"] = "Susan"; $employees["employee 3"]["title"] = "Cashier"; $employees["employee 3"]["salary"] = "$30,000"; echo $employees["employee 2"]["name"]. " is the ".$employees["employee 2"]["title"]. " and he earns ".$employees["employee 2"]["salary" ]. " a year."; ?>

The above code creates an multidimensional array na me employees and outputs "Matt is the Manager and he earns $40,000 a year.".

Example 6 - Pointer Multidimensional Arrays <?php $employees = array ( "employee 1" => array ( "name" => "Dana", "title" => "Owner", "salary" => "$60,000", ), "employee 2" => array ( "name" => "Matt", "title" => "Manager", "salary" => "$40,000", ),

Page 17: Php-Mini-Guide

Jan Zumwalt – neatinfo.com rev April 1, 2010 Pg 17 of 55

"employee 3" => array ( "name" => "Susan", "title" => "Cashier", "salary" => "$30,000", ) ); echo $employees["employee 1"]["name"]. " is the ".$employees["employee 1"]["title"]. " and they earn ".$employees["employee 1"]["salary "]. " a year."; ?>

The above code creates an multidimensional array na me employees and outputs "Dana is the Owner and they earn $60,000 a year."

print_r() - Printing Arrays

To print the results of an array you can use the PH P function print_r() to print an array. See example below.

<?php $employee_title["Dana"] = "Owner"; $employee_title["Matt"] = "Manager"; $employee_title["Susan"] = "Cashier"; echo "<pre>"; print_r($employee_title); echo "</pre>"; ?>

The array result will print out as follow...

Array ( [Dana] => Owner [Matt] => Manager [Susan] => Cashier )

Note: Always remember to use <pre></pre> tags while prin ting an array as shown above otherwise the result is not very reader frien dly.

Page 18: Php-Mini-Guide

Jan Zumwalt – neatinfo.com rev April 1, 2010 Pg 18 of 55

Date & Time

PHP Date Function Syntax

date(format[, timestamp])

<?php echo date("Y-m-d"); // 2010-03-19 echo date("Y/m/d"); // 2010-03-19 echo date("M d, Y"); // Mar 19, 2010 echo date("F d, Y"); // March 19, 2010 echo date("D M d, Y"); // Fri Mar 19, 2010 echo date("l F d, Y"); // Friday March 19, 2010 echo date("l F d, Y, h:i:s"); // Friday March 19, 2010, 04:20:36 echo date("l F d, Y, h:i A"); // Friday March 19, 2010, 04:20 PM ?>

Where:

d - The day of the month, i.e. 01-31 m - Month representation in numbers, i.e. 01-12 Y - Year in four digits

timestamp , is an optional parameter representing the number of seconds since January 1, 1970 at 00:00:00 GMT. This is also known as the Unix Timestamp.

PHP Date: strtotime()

Using the we can find exact dates or days.

There are two ways we can do that.

1. strtotime - Convert any English textual datetime description into a Unix timestamp.

2. mktime - Get Unix timestamp for a date.

Find Yesterday’s date

<?php echo "yesterday was ".date("Y-m-d", strtotime ("-1 days")); ?>

Result: yesterday was 2010-03-18

Find Date one week ago

<?php echo "1 week from today was ".date("Y-m-d", strtotime ("-1 weeks")); ?>

Result: 1 week from today was 2010-03-12

Find Date one month after

<?php echo "1 month from today will be ".date("Y-m-d", strtotime ("+1 months")); ?>

Result: 1 month form today will be 2010-04-19

Page 19: Php-Mini-Guide

Jan Zumwalt – neatinfo.com rev April 1, 2010 Pg 19 of 55

PHP Date: mktime()

mktime is used to find more specific things like the next leap year.

Find Leap Year

<?php $day = ""; /* * since leap year falls ever 4 years so loop for 4 times */ for($i=0; $i<4; $i++) { //get day timestamp for feburary 29 for this year $day = date("d", mktime(0, 0, 0, 2, 29, date("Y") +$i)); /* * check if day equals 29. * If day is 29 then it must be the leap year. if day is 01, then it not a leap year. */ if($day == 29) { $year = date("Y")+$i; break; } } echo "next leap year is in year $year"; ?>

Result: next leap year is in year 2012

The mktime takes 6 arguments. The parameters are explained as below.

1. hour - The number of the hour. 2. minute - The number of the minute. 3. second - The number of seconds past the minute. 4. month - The number of the month. 5. day - The number of the day. 6. year - The number of year.

Local File IO

fopen ($filename, $mode);

PHP file open modes

'r' Open for reading only; place the file pointer at th e beginning of the file.

'r+' Open for reading and writing; place the file pointe r at the beginning of the file.

'w' Open for writing only; place the file pointer at th e beginning of the file and truncate the file to zero length. If the file does not exist, it attempt to create it.

'w+' Open for read/write; file pointer at beginning of f ile and truncate the file to zero length. If file does not exist, create it.

'a' Open for write only; file pointer at the end of the file. If file does not exist, create it.

Page 20: Php-Mini-Guide

Jan Zumwalt – neatinfo.com rev April 1, 2010 Pg 20 of 55

'a+' Open for reading and writing; place the file pointe r at the end of the file. If the file does not exist, attempt to create it.

Example 1 - open file for reading

<?php $fh = fopen("myfile.txt", "r"); if($fh==false) die("unable to create file"); ?>

Result: Opens myfile.txt for reading and places the pointer at the beginning of the files.

What happens if the file doesn't exist?

If the myfile.txt doesn't exist, the file handle $f h will return false. If you like to create the file in case it doesn't exist, y ou can use the file mode 'a'. This will create a new file myfile.txt, if it doesn 't already exists.

Example 2 - open file for reading and writing

<?php $fh = fopen(" myfile.txt", "r+"); if($fh==false) die("unable to create file"); ?>

Result: Opens myfile.txt for r/w, pointer at beginn ing of file.

What if I want to place pointer at the end of a fil e?

For that you can use file mode 'a' and 'a+' respect ively to read/write from the end of the file.

In this section we are going to cover how to open a nd read file content in PHP.

fgets() – Read Line

The fgets() functions is used to read a line from a file. Usin g this function we either read the entire line into a string or specif y the number characters we like to read. Let’s looks at the function more closely.. .

fgets ($handle, $length);

The fgets() function has two parameter. The first p arameter is the file pointer and the 2nd parameter which is optional is the numb er of bytes to read in one call. If the 2nd parameter is not giving, the funct ion will read at the end of the line.

• $handle - the file pointer • $length - number of bytes to read. If length is not specified it will read

at the end of the line.

Note: If line exceeds 1024 characters, it is advisable t o read only up to maximum of 1024 characters at a time for not using up lot o f memory.

Page 21: Php-Mini-Guide

Jan Zumwalt – neatinfo.com rev April 1, 2010 Pg 21 of 55

Now, let's look at some example of how to read from a file.

Reading entire line

The following code reads a line from a file into a string. The code will start off by placing the file pointer at the beginning of the file and then reading the first line in our file into a string.

<?php $fh = fopen("myfile.txt", "r"); $line = fgets($fh); echo $line; fclose($fh); ?>

In the above we didn't specify how many bytes we wa nt to read. Therefore, the entire line is read.

Remember, the mode 'r' means we are opening the fil e for reading only.

Reading number of bytes

In this second example, we use the same method to r ead only certain number of characters in a line.

<?php $fh = fopen("myfile.txt", "r"); $str = fgets($fh, 64); echo $str; $line2 = fgets($fh, 64); echo $str; fclose($fh); ?>

The above code reads the first 64 characters and th en reads the next 64 characters in the line.

Reading file line by line

Using the fgets() function we can also read the ent ire file line by line in one loop. Let's look at two different examples to see h ow we can do that.

Example 1 - reading file line by line

<?php $fh = fopen("myfile.txt", "r"); while(true) { $line = fgets($fh); if($line == null)break; echo $line; } fclose($fh); ?>

Page 22: Php-Mini-Guide

Jan Zumwalt – neatinfo.com rev April 1, 2010 Pg 22 of 55

Example 2 - reading file line by line

<?php $fh = fopen("myfile.txt", "r"); while (!feof($fh)) { $line = fgets($fh); echo $line; } fclose($fh); ?>

file_get_contents() - read entire file

In some cases you might need to read the entire fil e at once. Reading the file line by line is probably more work in that case.

In this case you can utilize other functions that w ill read the entire file content in a string in one go. Once such function i s file_get_contents()

Let's look at an example of how to use this functio n.

<?php $fh = fopen("myfile.txt", "r"); $file = file_get_contents("myfile.txt"); echo $file; ?>

The above code will read the entire file content of myfile.txt into the string $file.

Please note that if the file is fairly large, your script/application might hang due to lack of resources. It is not advisable to re ad big files in one go. Either you should split the file into two or more pieces o r utilize more smart ways of reading a file.

fwrite() – writing to file

Writing text to files is fairly easy in PHP. We can easily write text to files using the fwrite() function. However, you must make sure to open file in writable mode before writing. You will see which modes to us e when writing to files and how to write to files in examples below.

But first, let's examine the fwrite() the function closely.

fwrite($handle, $string, $length);

The fwrite() function takes three arguments, the fi le handle, the string to be written and the number of bytes to be written, whic h is optional.

• $handle – the file stream • $string – string to be written in file • $length – optional. Number of bytes to write in fil e.

Now, let's work with some examples below on how to write text to files.

Page 23: Php-Mini-Guide

Jan Zumwalt – neatinfo.com rev April 1, 2010 Pg 23 of 55

Write text to a file

The first example demonstrates how to write a singl e line of text to a file.

<?php $handle = fopen("myfile.txt", 'w+'); if($handle) { if(!fwrite($handle, "Student Name: Mark Fendisen") ) die("couldn't write to file."); echo "success writing to file"; } ?> <pre>

The above code creates a new file myfile.txt in wri table mode using "w+" and writes "Student Name: Mark Fendisen" into the file.

That was fairly easy I would say. Wasn't it?

Note: "w+" truncates the file to zero, that is, deletes everything in the file before writing. If the file doesn't exists, it crea te a new file.

Write at the beginning of a file

Using file open mode "a+", you can append text to e ither beginning or end of a file. We will see how we can do in the examples bel ow

The first example we tackle is, how to write text a t the beginning of a file.

The first thing we need to do is open the file in a ppend mode using 'a+'. In other words, open an existing file so that we can add mor e stuff to it.

The code below writes the string "Student ID: 12345 " in the beginning without truncating the file, which means that anything alre ady in the file is left alone, and the new string in written in the beginning of t he file.

When you open a file with mode 'a+', the file point er is placed at the end of the file but remember we want to write at the beginning of the file. To move the file pointer back to the beginning for writing, we can u se the function rewind() as seen below.

<?php $file_name= "myfile.txt"; if(file_exists($file_name)) { //open file for writng and place pointer at the en d $handle = fopen($file_name, 'a+'); if(!$handle) { die("couldn't open file <i>$file_name</i>"); } //place pointer at the beginning of the file. rewind($handle); //write to file

Page 24: Php-Mini-Guide

Jan Zumwalt – neatinfo.com rev April 1, 2010 Pg 24 of 55

fwrite($handle, "Student ID: 12345"); echo "success writing to file"; } else { echo "file <i>$file_name</i> doesn't exists"; } fclose($handle); ?>

Write at the end of a file

As seen in the above example, the mode "a+" automat ically places the file pointer at the end of the file so we don't have to do anyth ing extra in this case.

The code below writes "Student GPA: 2.9" at the end of the file.

<?php $file_name= "myfile.txt"; if(file_exists($file_name)) { //open file for writng and place pointer at the en d $handle = fopen($file_name, 'a+'); if(!$handle) { die("couldn't open file <i>$file_name</i>"); } fwrite($handle, "Student GPA: 2.9"); echo "success writing to file"; } else { echo "file <i>$file_name</i> doesn't exists"; } fclose($handle); ?>

Write string with line breaks

The examples you saw so far write text in one strai ght line. What if we want line breaks?

Well, we can write text one per line in a file by u sing carriage return, '\n' or '\r'.

If you are using PC, use "\n". For Macintosh, use " \r". But just to be on the safe side, you can use both together like this "\r\n" re gardless of what system you're running your code on. This will guarantee it works under both PCs and Macintosh.

<?php $file_name = "myfile.txt"; if(file_exists($file_name)) { //open file for writng and place pointer at the en d $handle = fopen($file_name, 'w'); if(!$handle) { die("couldn't open file <i>$file_name</i>"); } $str.= "Student Name: Mark Fendisen\r\n"; $str.= "Student ID: 12345\r\n";

Page 25: Php-Mini-Guide

Jan Zumwalt – neatinfo.com rev April 1, 2010 Pg 25 of 55

$str.= "Student GPA: 2.9\r\n"; fwrite($handle, $str); echo "success writing to file"; } else { echo "file <i>$file_name</i> doesn't exists"; } fclose($handle); ?>

Simultaneous Read / Write

Most often you will find yourself reading and writi ng to a file at the same time. The example below shows you how to parse data in a file, i.e. read file line by line and overwrite small part of text in a file wit h new string.

For our example below we will assume we have file w hich contains the following information about a student.

Student Name: Mark Fendisen Student ID: 12345 Student GPA: 2.9

What we want to do is update his GPA from 2.9 from 3.1. How would we do it?

First we need to open the file in both read and wri te mode using "r+". Next, we read the file line by line using fgets function unt il we reach the student gpa line. We then use string replace function to replac e 2.9 with 3.1 and write the new string back to the file.

With me? That's okay if you're not :) Let's examine the code below and you will understand what we have done.

<?php $file_name= "myfile.txt"; if(file_exists($file_name)) { /* Open file for both reading and writng. * Place pointer at the beginning of the file. */ $handle = fopen($file_name, 'r+'); if(!$handle) { die("couldn't open file <i>$file_name</i>"); } while(1) { //read line $line = fgets($handle); //if end of file reached then stop reading anymor e if($line == null)break; //replace student gpa with new updated gpa if(preg_match("/Student GPA:/", $line)) { $new_line = str_replace("Student GPA: 2.9", "Stu dent GPA: 3.1", $line); } else { //set file content to a string

Page 26: Php-Mini-Guide

Jan Zumwalt – neatinfo.com rev April 1, 2010 Pg 26 of 55

$str.= $line; } } //append new updated gpa to file content $str.= $new_line; //set pointer back to beginning rewind($handle); //delete everything in the file. ftruncate($handle, filesize($file_name)); //write everything back to file with the updated g pa line fwrite($handle, $str); echo "success writing to file"; } else { echo "file <i>$file_name</i> doesn't exists"; } fclose($handle); ?>

Result:

Student Name: Mark Fendisen Student ID: 12345 Student GPA: 3.1

The above code is fairly large. I would recommend t o go over it slowly and read the internal comments in the code to understand how it is done.

In summary, in this lesson we covered, how to write text to files in different scenarios. Knowing how to work with files can be ve ry useful when developing. I would advise to do some practice examples to get a hang of things before moving on.

Page 27: Php-Mini-Guide

Jan Zumwalt – neatinfo.com rev April 1, 2010 Pg 27 of 55

Remote File IO fsockopen($hostname, $port, $errno, $errstr, $timeo ut); where:

$hostname - location or URL of the file or page. $port - the default port is 80, unless otherwise t old. $errno - optional, contains error number during co nnection. $errstr - optional. contains error message during connection $timeout - optional. seconds before connection tim eout error.

Example 1 - open remote files

The example below shows how to read the source code of a page and display it.

<?php $fp = fsockopen("www.somedomain.com", 80, $errno, $ errstr, 30); if ($fp == false) { echo "$errstr ($errno)"; } else { fputs($fp, "GET / HTTP/1.1\r\n"); fputs($fp, "Host: www.somedomain.com\r\n"); fputs($fp, "Connection: Close\r\n\r\n"); while (!feof($fp)) { echo fgets($fp, 1024); } fclose($fp); } ?>

So, in this tutorial we learned how to open files f or reading and writing. In the next tutorial, we will cover how to read from files and how to write to files.

Page 28: Php-Mini-Guide

Jan Zumwalt – neatinfo.com rev April 1, 2010 Pg 28 of 55

Forms Processing a remote form is a two step process. Fir st you must input the data, then it must be processed i.e. saved or displayed.

Input form – visitor_form.php

<html> <head><title>Simple php form visitor_form.php</titl e></head> <body> <?php print ' <form method="post" action="visitor_info.php">Your Name: <br /> <input type="text" name="visitorname" size="35" /> <br /><br /> Your Email:<br /> <input type="text" name="visitormail" size="35" /> <br /> <br /> Age:<br /> <select name="visitorage" size="1"> <option value="0-10">0-10</option> <option value="11-25">11-25</option> <option value="26-50">26-50</option> <option value="50+">over 50</option> </select> <br /><br /> <input type="submit" value="Send Info" /> <br /> </form> ' // end of print ?> </body> </html>

Process form – visitor_info.php

<html> <head> <head><title>Simple php form visitor_info.php</titl e></head> </head> <body> <h1> PHP simple form processing </h1> <?php $vname = $_POST['visitorname']; $vmail = $_POST['visitormail']; $vage = $_POST['visitorage']; $todayis = date("l, F j, Y, g:i a"); print "Today's date: $todayis<br />"; print "You name: $vname<br />"; print "Your email: $vmail<br />"; print "Your age: $vage<br />"; ?> <br /> <a href="visitor_form.php"> back to form </a> </body> </html>

Page 29: Php-Mini-Guide

Jan Zumwalt – neatinfo.com rev April 1, 2010 Pg 29 of 55

Email mail ($to, $subject, $message, $headers);

where:

to - the recipients email address

subject - the subject of the email.

message - the email message to be sent.

headers - the header contains information such as the forma t of the email (plain text or HTML), senders name and email, reply to address, CC and BCC.

Sending Plain Text Email

The following code will send out a plain text email using the PHP built in mail function.

<?php function send_email($from, $to, $cc, $bcc, $subject , $message){ $headers = "From: ".$from."\r\n"; $headers .= "Reply-To: ".$from."\r\n"; $headers .= "Return-Path: ".$from."\r\n"; $headers .= "CC: ".$cc."\r\n"; $headers .= "BCC: ".$to."\r\n"; if ( mail ($to,$subject,$message,$headers) ) { echo "email sent"; } else { echo "email could not be sent"; } } $subject = "Hello!"; $message = "Hello! How are you today?"; send_email("[email protected]", "recpeient@dom ain.com", "[email protected]", "[email protected]", $subject , $message); ?>

In our send_email function we set the appropriate h eaders. Reply-To and Return-Path points to the email you want the recipient to reply to. Some server requires the use of Return-Path, so it's good to leave it in there.

Next we call the send_email function which sends ou t the email.

Sending HTML Email

The following function will send out an HTML format ted email using the PHP built in mail function.

<?php function send_email($from, $to, $subject, $message) { $headers = "From: ".$from."\r\n"; $headers .= "Reply-To: ".$from."\r\n"; $headers .= "Return-Path: ".$from."\r\n"; $headers .= "Content-type: text/html\r\n"; if ( mail ($to,$subject,$message,$headers) ) { echo "email sent"; } else {

Page 30: Php-Mini-Guide

Jan Zumwalt – neatinfo.com rev April 1, 2010 Pg 30 of 55

echo "email couldn't be sent"; } } $subject = "Helloooo!"; $message .= "<html><body>"; $message .= "<b>Hey! How are you today?</b>"; $message .= "<br>Regards"; $message .= "</body></html>"; send_email("[email protected]", "recpeient@dom ain.com", $subject , $message); ?>

In our send_email function we set the content type headers to text/html. It is important to do so because it tells the email serve r that the email contains html code and to format and display the email correctly when it is opened.

Remote input and processing Email This is an example of an email input form that is s ent to a php file for processing. Input form – email.php

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Email Form </title> </head> <body> <form method="post" action="sendmail.php"> <!-- DO NOT change ANY of the php sections --> <?php $ipi = getenv("REMOTE_ADDR"); $httprefi = getenv ("HTTP_REFERER"); $httpagenti = getenv ("HTTP_USER_AGENT"); ?> <input type="hidden" name="ip" value="<?php echo $i pi ?>" /> <input type="hidden" name="httpref" value="<?php ec ho $httprefi ?>" /> <input type="hidden" name="httpagent" value="<?php echo $httpagenti ?>" /> Your Name: <br /> <input type="text" name="visitor" size="35" /> <br /> Your Email:<br /> <input type="text" name="visitormail" size="35" /> <br /> <br /> <br /> Attention:<br /> <select name="attn" size="1"> <option value=" Sales n Billing ">Sales n Billin g </option> <option value=" General Support ">General Suppor t </option> <option value=" Technical Support ">Technical Su pport </option> <option value=" Webmaster ">Webmaster </option> </select> <br /><br /> Mail Message: <br /> <textarea name="notes" rows="4" cols="40"></text area> <br /><br /> <input type="submit" value="Send Mail" /> <br /> </form>

Page 31: Php-Mini-Guide

Jan Zumwalt – neatinfo.com rev April 1, 2010 Pg 31 of 55

</body> </html>

Processing program – sendmail.php

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Sendemail Script</title> </head> <body> <!-- Reminder: Add the link for the 'next page' (at the bottom) --> <!-- Reminder: Change 'YourEmail' to Your real emai l --> <?php $ip = $_POST['ip']; $httpref = $_POST['httpref']; $httpagent = $_POST['httpagent']; $visitor = $_POST['visitor']; $visitormail = $_POST['visitormail']; $notes = $_POST['notes']; $attn = $_POST['attn']; if (eregi('http:', $notes)) { die ("Do NOT try that! ! "); } if(!$visitormail == "" && (!strstr($visitormail,"@" ) || !strstr($visitormail,"."))) { echo "<h2>Use Back - Enter valid e-mail</h2>\n"; $badinput = "<h2>Feedback was NOT submitted</h2>\n" ; echo $badinput; die ("Go back! ! "); } if(empty($visitor) || empty($visitormail) || empty( $notes )) { echo "<h2>Use Back - fill in all fields</h2>\n"; die ("Use back! ! "); } $todayis = date("l, F j, Y, g:i a") ; $attn = $attn ; $subject = $attn; $notes = stripcslashes($notes); $message = " $todayis [EST] \n Attention: $attn \n Message: $notes \n From: $visitor ($visitormail)\n Additional Info : IP = $ip \n Browser Info: $httpagent \n Referral : $httpref \n "; $from = "From: $visitormail\r\n"; mail("YourEmail", $subject, $message, $from); ?> <p align="center"> Date: <?php echo $todayis ?> <br /> Thank You : <?php echo $visitor ?> ( <?php echo $vi sitormail ?> ) <br />

Page 32: Php-Mini-Guide

Jan Zumwalt – neatinfo.com rev April 1, 2010 Pg 32 of 55

Attention: <?php echo $attn ?> <br /> Message:<br /> <?php $notesout = str_replace("\r", "<br/>", $notes ); echo $notesout; ?> <br /> <?php echo $ip ?> <br /><br /> <a href="email.php"> Next Page </a> </p> </body> </html>

Page 33: Php-Mini-Guide

Jan Zumwalt – neatinfo.com rev April 1, 2010 Pg 33 of 55

Sessions

In PHP, information is stored in session variables. Now lets learn how we create a session in PHP Before you can store any information in session variables, you must first start up the session using the session_start() function. See below.

<?php session_start(); ?> <html> <body> </body> </html>

When you start a session a unique session id (PHPSE SSID) for each visitor/user is created. You can access the session id using the PH P predefined constant PHPSESSID.

The code above starts a session for the user on the server, and assign a session id for that user's session.

Note: The session_start() function must appear BEFORE th e <html> tag

Storing information in a session

To store information is a session variable, you mus t use the predefined session variable $_SESSION.

<?php session_start(); $_SESSION["username"] = "johny"; $_SESSION["color"] = "blue"; ?>

Retrieving stored session information

Retrieving stored session information is really eas y. You can access the stored session information on any page without doing anyth ing extra.

<?php session_start(); echo $_SESSION["username"]; echo "<br/>"; echo $_SESSION["color"]; ?>

Result:

Johny blue

Page 34: Php-Mini-Guide

Jan Zumwalt – neatinfo.com rev April 1, 2010 Pg 34 of 55

Destroying/deleting session information

Remember sessions are destroyed automatically after user leaves your website or closes the browser, but if you wish to clear a sess ion variable yourself, you can simple use the unset() function to clean the session variable.

<?php session_start(); unset($_SESSION["username"]); unset($_SESSION["color"]); ?>

To completely destroy all session variables in one go, you can use the session_destroy() function.

<?php session_destroy(); ?>

Page 35: Php-Mini-Guide

Jan Zumwalt – neatinfo.com rev April 1, 2010 Pg 35 of 55

Cookies

A cookie is often used to store data which can be u sed to identify a user, for example, person's username. Cookie is a small flat file which sits on user’s computer. Each time that user requests a page or go es to a webpage, all cookie information is sent too. This is used to identify w ho you are.

setcookie($name, $value, $expire, $path, $domain, $ secure)

$name - name of the cookie. Example: "username"

$value - value of the cookie. Example: "john"

$expire - time (in UNIX timestamp) when the cookie will e xpire. Example: time()+"3600". Cookie is set to expire after one ho ur.

$path - path on the server where cookie will be availab le. For example, if the path is set to "/", the cookie will be avail able through out the whole site. If the cookie is set to say "/n ews/", the cookie will only be available under /news/ and all its sub-directories. If no path is given, cookie in created under the current directory.

$domain - domain where cookie will be available. Instead of path you can use domain settings. For example, if the domain is set to ".yourdomian.com", the cookie will be available wit hin the domain and all its sub-domains, example news.yourdomain.co m. If the cookie is set say "www.yourdomian.com" the cookie w ill be available under all www sub-domains, example " www.yourdomian.com/news"

$secure - true if cookie is being set over a secure "http s" server, false otherwise, Default value is false.

<?php setcookie("username", "john", time()+3600); ?> <html> <body> </body> </html>

Cookie username is set with value john which is set to expire after one hour on users computer.

The function time() retrieves the current timestamp . Appending 3600 seconds (one hour) to the current time to make the cookie to exp ire after one hour.

Note: A cookie must be set before any HTML code as shown above.

Creating a permanent cookie

Lets create a cookie which is set to last for 1 yea r.

<?php setcookie("username", "john", time()+(60*60*24*365) ); ?>

Retrieving a cookie

Cookie information is retrieved using the predefine d $_COOKIE array . The following will retrieve our username cookie value

Page 36: Php-Mini-Guide

Jan Zumwalt – neatinfo.com rev April 1, 2010 Pg 36 of 55

<?php echo $_COOKIE["username"]; ?>

Result:

john

To print the entire $_COOKIE array, you can do the following

<?php echo "<pre>"; print_r($_COOKIE); echo "</pre>"; ?>

Result:

Array ( [username] => john )

Deleting a Cookie

In order to delete cookies, you just set the cookie to expire in the past date.

Following will delete our username cookie.

<?php setcookie("username", "john", time()-(60*60*24*365) ); ?>

Page 37: Php-Mini-Guide

Jan Zumwalt – neatinfo.com rev April 1, 2010 Pg 37 of 55

MySql

� MySQL Functions

� mysql_affected_rows — Get number of affected rows in previous MySQL op eration

� mysql_client_encoding — Returns the name of the character set

� mysql_close — Close MySQL connection

� mysql_connect — Open a connection to a MySQL Server

� mysql_create_db — Create a MySQL database

� mysql_data_seek — Move internal result pointer

� mysql_db_name — Get result data

� mysql_db_query — Send a MySQL query

� mysql_drop_db — Drop (delete) a MySQL database

� mysql_errno — Returns the numerical value of the error message from previous MySQL operation

� mysql_error — Returns the text of the error message from previ ous MySQL operation

� mysql_escape_string — Escapes a string for use in a mysql_query

� mysql_fetch_array — Fetch a result row as an associative array, a nu meric array, or both

� mysql_fetch_assoc — Fetch a result row as an associative array

� mysql_fetch_field — Get column information from a result and return as an object

� mysql_fetch_lengths — Get the length of each output in a result

� mysql_fetch_object — Fetch a result row as an object

� mysql_fetch_row — Get a result row as an enumerated array

� mysql_field_flags — Get the flags associated with the specified fiel d in a result

� mysql_field_len — Returns the length of the specified field

� mysql_field_name — Get the name of the specified field in a result

� mysql_field_seek — Set result pointer to a specified field offset

� mysql_field_table — Get name of the table the specified field is in

� mysql_field_type — Get the type of the specified field in a result

� mysql_free_result — Free result memory

� mysql_get_client_info — Get MySQL client info

� mysql_get_host_info — Get MySQL host info

� mysql_get_proto_info — Get MySQL protocol info

� mysql_get_server_info — Get MySQL server info

� mysql_info — Get information about the most recent query

� mysql_insert_id — Get the ID generated in the last query

� mysql_list_dbs — List databases available on a MySQL server

� mysql_list_fields — List MySQL table fields

� mysql_list_processes — List MySQL processes

� mysql_list_tables — List tables in a MySQL database

� mysql_num_fields — Get number of fields in result

� mysql_num_rows — Get number of rows in result

� mysql_pconnect — Open a persistent connection to a MySQL server

� mysql_ping — Ping a server connection or reconnect if there i s no connection

� mysql_query — Send a MySQL query

� mysql_real_escape_string — Escapes special characters in a string for use i n a SQL statement

� mysql_result — Get result data

� mysql_select_db — Select a MySQL database

� mysql_set_charset — Sets the client character set

� mysql_stat — Get current system status

� mysql_tablename — Get table name of field

� mysql_thread_id — Return the current thread ID

� mysql_unbuffered_query — Send SQL query to MySQL w/out fetching and buffe ring the result rows.

Page 38: Php-Mini-Guide

Jan Zumwalt – neatinfo.com rev April 1, 2010 Pg 38 of 55

Setting Up The Database

There is a simple test for both PHP and MySQL. Open a text editor and type in the following: <? phpinfo(); ?> and save it as phpinfo.php Database Construction MySQL databases have a standard setup. They are made up of a database, in which is contained tables. Each of these tables is quite separate and can have different fields etc. even though it is part of one database. Each table contains records which are made up of fields. Databases And Logins The process of setting up a MySQL database varies from host to host, you will however end up with a database name, a user name and a password. This information will be required to log in to the database. If you have PHPMyAdmin (or a similar program) installed you can just go to it to log in with your user name and password. If not you must do all your database administration using PHP scripts. Creating A Table Before you can do anything with your database, you must create a table. A table is a section of the database for storing related information. In a table you will set up the different fields which will be used in that table. Because of this construction, nearly all of a site's database needs can be satisfied using just one database. Creating a table in PHPMyAdmin is simple, just type the name, select the number of fields and click the button. You will then be taken to a setup screen where you must create the fields for the database. If you are using a PHP script to create your database, the whole creation and setup will be done in one command. Fields There are a wide variety of fields and attributes available in MySQL and I will cover a few of these here:

Field Type Description TINYINT Small Integer Number SMALLINT Small Integer Number MEDIUMINT Integer Number INT Integer Number VARCHAR Text (maximum 256 characters) TEXT Text

These are just a few of the fields which are availa ble. A search on the internet will provide lists of all the field types allowed. Creating A Table With PHP To create a table in PHP is slightly more difficult than with MySQL. It takes the following format:

Page 39: Php-Mini-Guide

Jan Zumwalt – neatinfo.com rev April 1, 2010 Pg 39 of 55

CREATE TABLE tablename { Fields } The fields are defined as follows: fieldname type(length) extra info, The final field entered should not have a comma aft er it. I will give full an example of using these later in the section. The Contacts Database The contacts database will contain all the conact i nformation for the people you enter and the information will be able to be edited and viewed on the internet. The following fields will be used in the database:

Name Type Length Description id INT 6 A unique identifier for each

record first VARCHAR 15 The person's first name last VARCHAR 15 The person's last name phone VARCHAR 20 The person's phone number mobile VARCHAR 20 The person's mobile number fax VARCHAR 20 The person's fax number email VARCHAR 30 The person's e-mail address web VARCHAR 30 The person's web address

You may be wondering why I have used VARCHAR fields for the phone/fax numbers even though they are made up of digits. You could use IN T fields but I prefer to use VARCHAR as it will allow dashes and spaces in the n umber, as well as textual numbers (like 1800-COMPANY) and as we will not be i nitiating phone calls from the web it is not a problem. There is one other thing you should be aware of in this database. The id field will also be set as PRIMARY, INDEX, UNIQUE and will be set to auto_increment (found under Extra in PH PMyAdmin). The reason for this is that this will be the field identifier (primary and index) and so must be unique. The auto incremen t setting means that whenever you add a record, as long as you don't specify an i d, it will be given the next number. If you are using PHPMyAdmin or a management program you can now create this in a table called contacts. Creating The Table In PHP The following code should be used to create this ta ble in PHP. Some of the code has not been covered yet but I will explain it full y in the next part.

<? $user="username"; $password="password"; $database="database"; mysql_connect(localhost,$user,$password); @mysql_select_db($database) or die( "Unable to sele ct database"); $query="CREATE TABLE contacts (id int(6) NOT NULL a uto_increment,first varchar(15) NOT NULL,last varchar(15) NOT NULL,phone varchar(20) NO T NULL,mobile varchar(20) NOT NULL,fax varchar(20) NOT NULL,email varchar(30) NOT NULL,web varchar(30) NOT NULL,PRIMARY KEY

Page 40: Php-Mini-Guide

Jan Zumwalt – neatinfo.com rev April 1, 2010 Pg 40 of 55

(id),UNIQUE id (id),KEY id_2 (id))"; mysql_query($query); mysql_close(); ?> Enter your database, MySQL username and MySQL passw ord in the appropriate positions on the first three lines above.

Page 41: Php-Mini-Guide

Jan Zumwalt – neatinfo.com rev April 1, 2010 Pg 41 of 55

Inserting Information Over the past two parts I have explained what I am planning to do in this tutorial and have shown you how to create a database to use with the tutorial. In this part I will be showing you how to insert some informatio n into your database so that it is more useful. Connecting To The Database The first thing you must do before you can do any w ork at all is to connect to the MySQL database. This is an extremely important step as, if you are not connected, your commands to the database will fail. Good practice for using databases is to specify the username, password and database name first so that if you change any of th em at a later date you will only have to change one line: $username="username"; $password="password"; $database="your_database"; At this point you may be wondering if it is a secur ity risk, keeping your password in the file. You don't need to worry, though, becau se the PHP scource code is processed aby the server before being sent to the b rowser so it is impossible for the user to see the script's source. Next, you will need to issue the command to start a database connection: mysql_connect(localhost,$username,$password); This line tells PHP to connect to the MySQL databas e server at 'localhost' (localhost means the server that the site is runnin g one. Unless you web host tells you otherwise you should use localhost. If yo u are given a server address (such as sql.myserver.com you should replace localh ost with "sql.myserver.com" (including the quotes)) using the username stored i n $username and the password in $password. Before I show you how to work with the database, I will show you one more command: mysql_close(); This is a very important command as it closes the c onnection to the database server. Your script will still run if you do not in clude this command but too many open MySQL connections can cause problems for a web host. It is good practice to always include this line once you have issued all y our commands to the database, to keep the server running well. Selecting The Database After you have connected to the database server you must then select the database you wish to use. This must be a database to which y our username has access. The following command: @mysql_select_db($database) or die( "Unable to sele ct database"); is used to do this. This tells PHP to select the da tabase stored in the variable $database (which you set earlier). If it cannot con nect it will stop executing the script and output the text: Unable to select database This extra 'or die' part is good to leave in as it provides a little error control

Page 42: Php-Mini-Guide

Jan Zumwalt – neatinfo.com rev April 1, 2010 Pg 42 of 55

but it is not essential. Executing Commands Now you have connected to the server and selected t he database you want to work with you can begin executing commands on the server . There are two ways of executing a command. One is t o just enter the command in PHP. This way is used if there will be no results f rom the operation. The other way is to define the command as a variabl e. This will set the variable with the results of the operation. In this part of the tutorial we will use the first way as we are not expecting a response from the database. The command will look l ike this: mysql_query($query); The useful thing about using this form of the comma nd is that you can just repeat the same command over and over again without learni ng new ones. All you need to do is to change the variable. Inserting Data For this part of the tutorial I will return to the contacts database which we created in the last part. We will now add our first information to the database: First: John Last: Smith Phone: 01234 567890 Mobile: 00112 334455 Fax: 01234 567891 E-mail: [email protected] Web: http://www.gowansnet.com This will all be put in with one command: $query = "INSERT INTO contacts VALUES ('','John','S mith','01234 567890','00112 334455','01234 567891','[email protected]','h ttp://www.gowansnet.com')"; This may look a little confusing at first so I will explain what it all means. Firstly $query= is there because we are assigning t his to the variable $query (see the section above). The next part: INSERT INTO contacts VALUES is quite easy to understand. It tells the PHP to in sert into the table called contacts the values in the brackets which follow. The part in the brackets contains all the informati on to add. It uses all the fields in order and inserts the information from be tween the quotes. For example: John will be inserted into the 2nd field which, in this table, is the 'first' field. You may have noticed that you are not inserting any value into the first field in the database (id). This is because this field is go ing to act as an index field. No two records in the database will have the same I D. Because of this, when we set up the database we set ID to 'Auto Increment'. This means that if you assign it no value it will take the next number in the series. T his means that this first record will have the ID 1.

Page 43: Php-Mini-Guide

Jan Zumwalt – neatinfo.com rev April 1, 2010 Pg 43 of 55

Displaying Data So far in this tutorial, you have created a databas e and put information into it. In this part I will show you how to create an input page for your database, and how to display the whole contents. HTML Input Inputing the data using HTML pages is almost identi cal to inserting it using a PHP script. The benefit, though, is that you do not nee d to change the script for each piece of data you want to input and you can also al low your users to input their own data. The following code will show an HTML page with text boxes to enter the appropriate details: <form action="insert.php" method="post"> First Name: <input type="text" name="first"><br> Last Name: <input type="text" name="last"><br> Phone: <input type="text" name="phone"><br> Mobile: <input type="text" name="mobile"><br> Fax: <input type="text" name="fax"><br> E-mail: <input type="text" name="email"><br> Web: <input type="text" name="web"><br> <input type="Submit"> </form> This page could, of course, be formatted and have o ther changes made to it. It is just a basic form to get you started. Next you will need to edit the script from last week. Instead of using information to input in to the database, you will instead use variables: <? $username="username"; $password="password"; $database="your_database"; $first=$_POST['first']; $last=$_POST['last']; $phone=$_POST['phone']; $mobile=$_POST['mobile']; $fax=$_POST['fax']; $email=$_POST['email']; $web=$_POST['web']; mysql_connect(localhost,$username,$password); @mysql_select_db($database) or die( "Unable to sele ct database"); $query = "INSERT INTO contacts VALUES ('','$first','$last','$phone','$mobile','$fax','$em ail','$web')"; mysql_query($query); mysql_close(); ?> This script should then be saved as insert.php so t hat it can be called by the HTML form. It works because, instead of the data be ing entered locally, it is being entered into the form and stored in variables which are then passed to the PHP. You could also add to this script a message confirm ing the data input. This is basic PHP, though, and you should read the PHP tuto rial if you do not know how to do this. Outputting Data

Page 44: Php-Mini-Guide

Jan Zumwalt – neatinfo.com rev April 1, 2010 Pg 44 of 55

Now you have at least one record, if not many more, in your database you will be wanting to know how you can output this data using PHP. Before beginning, though you should be familiar with loops in PHP (you can f ind out about them in the tutorial on Free Webmaster Help) as they are used f or this way of outputting data. The first command you will need to use is a MySQL q uery made up like this: SELECT * FROM contacts This is a basic MySQL command which will tell the s cript to select all the records in the contacts table. Because there will be output from this command it must be executed with the results being assigned to a varia ble: $query="SELECT * FROM contacts"; $result=mysql_query($query); In this case the whole contents of the database is now contained in a special array with the name $result. Before you can output this data you must change each piece into a separate variable. There are two stage s to this. Counting Rows Before you can go through the data in your result v ariable, you must know how many database rows there are. You could, of course, just type this into your code but it is not a very good solution as the whole script would need to be changed every time a new row was added. Instead you can use the c ommand: $num=mysql_numrows($result); This will set the value of $num to be the number of rows stored in $result (the output you got from the database). This can then be used in a loop to get all the data and output it on the screen. Setting Up The Loop nYou must now set up a loop to take each row of the result and print out the data held there. By using $num, which you created above, you can loop through all the rows quite easily. In the code below, $i is the num ber of times the loop has run and is used to make sure the loop stops at the end of the results so there are no errors. $i=0; while ($i < $num) { CODE $i++; } This is a basic PHP loop and will execute the code the correct number of times. Each time $i will be one greater than the time befo re. This is useful, as $i can be used to tell the script which line of the result s should be read. As the first line in MySQL output is 0, this will work correctly . Assigning The Data To Variables The final part of this output script is to assign e ach piece of data to its own variable. The following code is used to do this: $variable=mysql_result($result,$i,"fieldname"); So to take each individual piece of data in our dat abase we would use the

Page 45: Php-Mini-Guide

Jan Zumwalt – neatinfo.com rev April 1, 2010 Pg 45 of 55

following: $first=mysql_result($result,$i,"first"); $last=mysql_result($result,$i,"last"); $phone=mysql_result($result,$i,"phone"); $mobile=mysql_result($result,$i,"mobile"); $fax=mysql_result($result,$i,"fax"); $email=mysql_result($result,$i,"email"); $web=mysql_result($result,$i,"web"); We do not need to get the ID field (although we cou ld have done) because we have no use for it in the current output page. Combining The Script We can now write a full script to output the data. In this script the data is not formatted when it is output: <? $username="username"; $password="password"; $database="your_database"; mysql_connect(localhost,$username,$password); @mysql_select_db($database) or die( "Unable to sele ct database"); $query="SELECT * FROM contacts"; $result=mysql_query($query); $num=mysql_numrows($result); mysql_close(); echo "<b><center>Database Output</center></b><br><b r>"; $i=0; while ($i < $num) { $first=mysql_result($result,$i,"first"); $last=mysql_result($result,$i,"last"); $phone=mysql_result($result,$i,"phone"); $mobile=mysql_result($result,$i,"mobile"); $fax=mysql_result($result,$i,"fax"); $email=mysql_result($result,$i,"email"); $web=mysql_result($result,$i,"web"); echo "<b>$first $last</b><br>Phone: $phone<br>Mobil e: $mobile<br>Fax: $fax<br>E-mail: $email<br>Web: $web<br><hr><br>"; $i++; } ?>

Page 46: Php-Mini-Guide

Jan Zumwalt – neatinfo.com rev April 1, 2010 Pg 46 of 55

More Outputs Throughout this tutorial you have learnt how to cre ate a database and table, insert information and display the database informa tion. In this part I will show you more ways of displaying and outputting the info rmation in the database. Formatting Output In the last part of the tutorial we output a list o f all the people stored in the database. This just gave us a very basic output, th ough and is not particularly useful for a working website. Instead, it would be better if we could format it into a table and display it like this. Doing this formatting is not particularly complicat ed. All you need to do is use PHP to output HTML and include your variables in th e correct spaces. The easiest way to do this is by closing your PHP tag and enter ing the HTML normally. When you reach a variable position, include it as follows: <? echo $variablename; ?> in the correct position in your code. You can also use the PHP loop to repeat the appropr iate code and include it as part of a larger table. For example, using a sectio n of the code from part 4 which looped to output the database you can format it to display it in one large table: <table border="0" cellspacing="2" cellpadding="2"> <tr> <th><font face="Arial, Helvetica, sans-serif">Name< /font></th> <th><font face="Arial, Helvetica, sans-serif">Phone </font></th> <th><font face="Arial, Helvetica, sans-serif">Mobil e</font></th> <th><font face="Arial, Helvetica, sans-serif">Fax</ font></th> <th><font face="Arial, Helvetica, sans-serif">E-mai l</font></th> <th><font face="Arial, Helvetica, sans-serif">Websi te</font></th> </tr> <? $i=0; while ($i < $num) { $first=mysql_result($result,$i,"first"); $last=mysql_result($result,$i,"last"); $phone=mysql_result($result,$i,"phone"); $mobile=mysql_result($result,$i,"mobile"); $fax=mysql_result($result,$i,"fax"); $email=mysql_result($result,$i,"email"); $web=mysql_result($result,$i,"web"); ?> <tr> <td><font face="Arial, Helvetica, sans-serif"><? ec ho $first." ".$last; ?></font></td> <td><font face="Arial, Helvetica, sans-serif"><? ec ho $phone; ?></font></td> <td><font face="Arial, Helvetica, sans-serif"><? ec ho $mobile; ?></font></td> <td><font face="Arial, Helvetica, sans-serif"><? ec ho $fax; ?></font></td> <td><font face="Arial, Helvetica, sans-serif"><a hr ef="mailto:<? echo $email; ?>">E-mail</a></font></td> <td><font face="Arial, Helvetica, sans-serif"><a hr ef="<? echo $web; ?>">Website</a></font></td> </tr> <? $i++; }

Page 47: Php-Mini-Guide

Jan Zumwalt – neatinfo.com rev April 1, 2010 Pg 47 of 55

echo "</table>"; This code will print out table headers, then add an extra row for each record in the database, formatting the data as it is output. As long as you are familiar with PHP and HTML the c ode is probably pretty self explanatory but I will just point out the last two lines in the table, for example: <a href="mailto:<? echo $email; ?>">E-mail</a> This shows one of the useful features of using PHP to include MySQL data as you can use it to output parts of your code and make pa ges fully dynamic. Selecting Pieces of Data As well as showing the whole database, PHP can be u sed to select individual records, or records which match certian criteria. T o do this you must use a variation of the SELECT query. To display the whole table we used the query: SELECT * FROM contacts If we just wanted to select ones who had the first name 'John' you would use the following query: SELECT * FROM contacts WHERE first='john' As with other MySQL queries, it is almost like plai n english. In the same way you could select records based on any field in the data base. You can also select ones with more than one field by adding more: field='value' sections onto the query. Although I won't go int o great depth about it in this section, you can als o use variables to give the database criteria. For example, if you had a search form you could get the last name people wanted to search for and store it in a variable called $searchlast. Then you could execute the following piece of code: $query="SELECT * FROM contacts WHERE last='$searchl ast'"; $result=mysql_query($query); Please note that at the end of the first line there is a ' followed by a " before the semicolon. Security At this point it should be noted that you must be v ery careful in using the technique given above. Without correct secuirty mea sures, it would be very easy for someone to access data on your server, or even make changes to the database. This can occur if the user sets the variable to a v alue which edits the SQL string being generated in such a way that it can be used f or their own purposes. I won't go into full details here, but there are many websi tes which give full details (search for 'sql injection attack'). This security hole is easy to plug with a bit of wo rk. Always check input data for invalid chanracters and use PHP's built in function s to remove control characters and HTML code etc. Again, there are many websites w hich go into this in depth.

Page 48: Php-Mini-Guide

Jan Zumwalt – neatinfo.com rev April 1, 2010 Pg 48 of 55

Single Records & Error Trapping In the past two parts of this tutorial I have shown you how to take data out of the database and display it on screen. In this part I will enter into the final aspect of this data displaying, selecting one piece of data and stopping errors from happening when you output data. Error Trapping By outputting all the information from the database , it is quite unlikely that there will be no data, but if you allow updating an d deleting of records, it is certainly a possibility. Luckily, with PHP and MySQ L, there is an easy way round this using: $num=mysql_numrows($result); where $result contains the result of a query on the database (like selecting all the records). As I expalined before, this will set the value of $num as the number of rows in the result (and it was used in a loop in part 4). Because of this you can make a simple error trap using an IF statement: if ($num==0) { echo "The database contains no contacts yet"; } else { Output Loop } You can expand on this more by making it more user friendly (for example by providing a link to the Add Data page if no contact s exist). Ordering Data Not only can you output data based on the contents of a field, but you can also order the output based on a field (for example plac ing users in alphabetical order). By default, the output from your queries wi ll be in order of the id field, going from 1 upwards. You can sort it on any field, though. For example, a useful sort would be to place all th e users in alphabetical order based on their last name. For those not familiar wi th standard databases, this would be in Ascending order as it goes from A to Z. (Ascending order is also for 1-10 etc. and descending order provides Z to A and 10-1). To do this you would use the following query: SELECT * FROM contacts ORDER BY last ASC You could also use DESC to order the data in Descen ding order. More Uses Of mysql_numrows and Sorting The value you have assigned to $num is very imiport ant as, apart from error trapping and loops, it has many other uses. An exam ple of this would be to print out only the last 5 records added to a database. Fi rstly, they would need to be placed into order based on the id field (as the one with the latest ID would have been added last. This would require them to be in D escending order. Now you have them in order of newest to oldest but this does not restrict the script to only showing the first 5. To do this, you would need to set your loop to run to 5 instead of $num (as this would only run th e loop 5 times so only 5 records would be output). Of course, before doing this, it would be important to check that $num was greater

Page 49: Php-Mini-Guide

Jan Zumwalt – neatinfo.com rev April 1, 2010 Pg 49 of 55

than 5, as if you ran the loop 5 times and there we re only 3 rows you would get an error. This is easy to do though and the following code is an example of the sort of thing you would want to have: if ($num>5) { $to=5; }else{ $to=$num; } $i=0; while ($i < $to) { REST OF CODE This code would check if there were more than 5 row s in the database. If there were, the loop would be set to run 5 times. If ther e were less than 5 rows the loop would run the correct number of times to outpu t the whole database. The ID Field If you remember back to creating the database for t he contacts at the beginning of this tutorial, you will remember that we included a numerical field called id. This field was set as auto_increment as well as bei ng the primary field. I have already explained how this field is unique for ever y single record in the database, but I will now take this a stage further by explaining how this can be used to select an individual record from a database . Selecting A Single Record At the end of the last part of this tutorial, I s howed you how to select records from the database b ased on the contents of partiular fields using: SELECT * FROM contacts WHERE field='value' Now, by using the unique ID field we can select any record from our database using: SELECT * FROM contacts WHERE id='$id' Where $id is a variable holding a number of a recor d. This may seem to be a little worthless as it is, but you can use this very effec tively in a number of different ways. For example, if you wanted to have a dynamica lly generated site run through a database and a single PHP script, you could write the script to include the database data into the design. Then, using the id f ield, you could select each individual page and put it into the output. You can even use the page's URL to specify the record you want e.g. http://www.yoursite.com/news/items.php?item=7393 And then have the PHP script look up the record wit h the id corresponding to $item, which in this case would be 7393 Links For Single Records Using this method of choosing a record using the UR L to select the record can be expanded further by generating the URL dynamically. This sounds a bit complicated so I will elaborate. In the contacts script we are writing, I will be showing you how to create an Update page where the user can upd ate the contact details. To do this, another column will be included in the output column, with an Update link in it. This update link will point to a page a llowing the user to update the record. To select the record in this page, we will put:

Page 50: Php-Mini-Guide

Jan Zumwalt – neatinfo.com rev April 1, 2010 Pg 50 of 55

?id=$id By getting the id of the record along with the othe r information when we are outputting the information from the database, this code will create a link which has each record's ID number in it. Then, on the upd ate page, there can be code to just select this item.

Page 51: Php-Mini-Guide

Jan Zumwalt – neatinfo.com rev April 1, 2010 Pg 51 of 55

Updating & Deleting So far you have learnt how to put information into your MySQL database, view the information in it and select which information you would like to view. In this part I will show you how to do the two final action s, updating your database and deleting records from it. The Update Script Last week I explained how to create a link for each record to point to your update script. By using the $id variable you output links which would pass the correct ID to the script so that it can update the database. U sing this you can then create the update script, which will actually have two sec tions to it. Displaying The Update Page The first part of the update script uses the single record selection from last week but adds a little HTML to it to make it more u seful. First of all, we connect to the database and select the appropriate record. $id=$_GET['id']; $username="username"; $password="password"; $database="your_database"; mysql_connect(localhost,$username,$password); $query=" SELECT * FROM contacts WHERE id='$id'"; $result=mysql_query($query); $num=mysql_numrows($result); mysql_close(); $i=0; while ($i < $num) { $first=mysql_result($result,$i,"first"); $last=mysql_result($result,$i,"last"); $phone=mysql_result($result,$i,"phone"); $mobile=mysql_result($result,$i,"mobile"); $fax=mysql_result($result,$i,"fax"); $email=mysql_result($result,$i,"email"); $web=mysql_result($result,$i,"web"); Space For Code ++$i; } Where 'Space For Code' is in this script is where t he code for the update page will go. This is, in fact, just HTML formatting for the output: <form action="updated.php" method="post"> <input type="hidden" name="ud_id" value="<? echo $i d; ?>"> First Name: <input type="text" name="ud_first" valu e="<? echo $first; ?>"><br> Last Name: <input type="text" name="ud_last" value= "<? echo $last; ?>"><br> Phone Number: <input type="text" name="ud_phone" va lue="<? echo $phone; ?>"><br> Mobile Number: <input type="text" name="ud_mobile" value="<? echo $mobile; ?>"><br> Fax Number: <input type="text" name="ud_fax" value= "<? echo $fax; ?>"><br> E-mail Address: <input type="text" name="ud_email" value="<? echo $email; ?>"><br> Web Address: <input type="text" name="ud_web" value ="<? echo $web; ?>"><br> <input type="Submit" value="Update"> </form> As you can see, this code will output a standard fo rm, but instead of having blank boxes like on the form for inserting a new record, this one already has the current information from the database inserted into it. This makes it much more

Page 52: Php-Mini-Guide

Jan Zumwalt – neatinfo.com rev April 1, 2010 Pg 52 of 55

effective for an update script. Updating The Database The next stage of this script is to actually update the database. This is a simple operation and just involves a new query for the dat abase: $query = "UPDATE contacts SET first = '$ud_first', last = '$ud_last', phone = '$ud_phone', mobile = '$ud_mobile', fax = '$ud_fax', email = '$u d_email', web = '$ud_web' WHERE id = '$ud_id'"; This query tells the database to update the contact s table where the ID is the same as the value stored in $ud_id (which as you ca n see from the form on the previous page was set as the id of the record we ar e updating) and to set the following fields to the specified values (which wer e set using the form on the previous page). This query could then be integrated into a simple s cript: $ud_id=$_POST['ud_id']; $ud_first=$_POST['ud_first']; $ud_last=$_POST['ud_last']; $ud_phone=$_POST['ud_phone']; $ud_mobile=$_POST['ud_mobile']; $ud_fax=$_POST['ud_fax']; $ud_email=$_POST['ud_email']; $ud_web=$_POST['ud_web']; $username="username"; $password="password"; $database="your_database"; mysql_connect(localhost,$username,$password); $query="UPDATE contacts SET first='$ud_first', last ='$ud_last', phone='$ud_phone', mobile='$ud_mobile', fax='$ud_fax', email='$ud_emai l', web='$ud_web' WHERE id='$ud_id'"; mysql_query($query); echo "Record Updated"; mysql_close(); This code would update the database and give the us er a confirmation. Deleting Records The final part of the contacts database which needs to be created is a page to delete records. As with the Update page, this shoul d have a record ID sent to it in the URL e.g.: delete.php?id=9 The code to do this is the same as to update the da tabase, except with a slightly different MySQL query. Instead of the UPDATE query you should use: DELETE FROM contacts WHERE id='$id' This would then be used with the connection and con firmation code as above. Loops At this time it seems appropriate to mention anothe r use of loops with a database. As well as using a loop to get information from a d atabase as we have before, you can also use loops to execute queries. For example, if you wanted to change all the records in the database with the last name Smit h to have the website www.smith.com:

Page 53: Php-Mini-Guide

Jan Zumwalt – neatinfo.com rev April 1, 2010 Pg 53 of 55

Standard Database Connection Code $query=" SELECT * FROM contacts WHERE last='Smith'" ; $result=mysql_query($query); $num=mysql_numrows($result); $i=0; while ($i < $num) { $id=mysql_result($result,$i,"id"); $query1="UPDATE contacts SET web='http://www.smith. com' WHERE id='$id'"; mysql_query($query); ++$i; } mysql_close();

Of course, this could have been achived far easier and quicker using:

$query1="UPDATE contacts SET web='http://www.smith. com' WHERE last='Smith'";

and no loop.

Page 54: Php-Mini-Guide

Jan Zumwalt – neatinfo.com rev April 1, 2010 Pg 54 of 55

Finishing The Script Throughout this tutorial I have taught you how to u se PHP to interact with a MySQL (or SQL) database and how to use the most common co mmands available. I have, throughout this tutorial, also shown you how to cre ate a basic contacts management system to illustrate some of the options you can us e. In this part I will show you some final MySQL tips and will give you a final ver sion of the script. Saving Time When creating complex scripts using databases you w ill find that the most common thing you are doing is connecting to a database. Be cause of this, you can actually save time by creating either a username/password fi le or a connection file. For example for a username/password file you would crea te a file called: dbinfo.inc.php and put the following in it: <? $username="databaseusername"; $password="databasepassword"; $database="databasename"; ?> Replacing the appropriate sections. Then in your ph p files use the following code: include("dbinfo.inc.php"); or include("/full/path/to/file/dbinfo.inc.php"); at the beginning. Then, you can use the variables $ username, $password and $database throughout your scripts without having to define them every time. Also, if you ever change this information, for example if you move to another web host, there is only one file to change. You can use the same principal to connect to the da tabase, by putting the connection code in the file, but you must always be sure to close the connection in each file or you may have problems with your MyS QL server. Searching A limited form of searching can also be performed o n your database using a built in MySQL function. This is by using the LIKE functi on as follows: SELECT * FROM tablename WHERE fieldname LIKE '%$str ing%' To explain furhter, LIKE tells the database to perf orm its 'searching' feature. The % signs mean that any other data could appear i n their place and $string would hold your search string. In this place could be a w ord or number as well e.g.: LIKE '%piano%' which would output any rows with piano in the speci fied field. Similarly, you can leave out one of the % signs so that you can specify the position of the string e.g.: LIKE 'piano%'

Page 55: Php-Mini-Guide

Jan Zumwalt – neatinfo.com rev April 1, 2010 Pg 55 of 55

Will only output rows where the specified field beg ins with piano, so: The piano is next to the table. Would not show up. The Finished Script Throughout this tutorial I have given you pieces of code to make a contacts database script. You can download the full script a s a zip file so that you can examine the code (see Related Links). Conclusion From this tutorial you should now know the basics o f using PHP and MySQL together to create database-enabled websites and programs. U sing databases with the web opens up a huge new selection of things you can do and can make a simple website much more powerful, saving time updating the site, allowing user interaction and feedback and much more.