You are on page 1of 55

By: Jan Zumwalt

NeatInfo.com

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


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
Jan Zumwalt – neatinfo.com Pg 2 of 55 rev April 1, 2010
Updating & Deleting ................................................................................................................................. 51
Finishing The Script ................................................................................................................................. 54

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


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 put a semicolon, i.e. ";"
as you see in the above code. Otherwise PHP will report syntax error.

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


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 names.

<?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);
?>

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


String Functions
 addcslashes — Quote string with slashes in a C style
 addslashes — Quote string with slashes
 bin2hex — Convert binary data into hexadecimal representation
 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 another
 convert_uudecode — Decode a uuencoded string
 convert_uuencode — Uuencode a string
 count_chars — Return information about characters used in a string
 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 htmlspecialchars 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 characters
 htmlentities — Convert all applicable characters to HTML entities
 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 strings
 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 string
 quoted_printable_encode — Convert a 8 bit string to a quoted-printable string
 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 string
 str_repeat — Repeat a string
 str_replace — Replace all occurrences of the search string with the replacement string
 str_rot13 — Perform the rot13 transform on a string
 str_shuffle — Randomly shuffles a string

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


 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-insensitive string
 stripslashes — Un-quotes a quoted string
 stristr — Case-insensitive strstr
 strlen — Get string length
 strnatcasecmp — Case insensitive string comparisons using a "natural order" algorithm
 strnatcmp — String comparisons using a "natural order" algorithm
 strncasecmp — Binary safe case-insensitive string comparison of the first n characters
 strncmp — Binary safe string comparison of the first n characters
 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 string
 strrev — Reverse a string
 strripos — Find position of last occurrence of a case-insensitive 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 string 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 offset, 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 string. For example,
you can use a single quotes with in double quotes.

Special characters are escaped using backslash. Sometimes we need escape special
characters in our strings. We will learn about in the following section.
Jan Zumwalt – neatinfo.com Pg 7 of 55 rev April 1, 2010
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 preceding it with a backslash.

<?php
$str = "\"This is a PHP string examples in double quotes\"";
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="first_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;
?>

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


Concatenating

Sometimes while working with strings in our code, we need to join two strings. In
PHP, you can use '.' to concatenate two or more strings 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

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


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

Result: "hello!"

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


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 conditions, 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")
{
Jan Zumwalt – neatinfo.com Pg 11 of 55 rev April 1, 2010
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>

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


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 third 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 increment 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 PHP 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 alternate colors. This is how we
would do it.

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

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


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 to 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

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


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 numeric 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_names[0];


echo "<br>";
echo "The second employee's name is ".$employee_names[1];
echo "<br>";
echo "The third employee's name is ".$employee_names[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_names[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) syntax


<?php
$employee_names = array("Dana" => "Owner", "Matt" => "Manager", "Susan" => "Cashier");

echo "Matt is the ".$employee_names["Matt"];


?>

Result: "Matt is the Manger".


Jan Zumwalt – neatinfo.com Pg 15 of 55 rev April 1, 2010
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 employees table in an array?
Simple. PHP allows us to do that using multidimensional 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 multidimensional 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 name 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",
),

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


"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 name 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 PHP 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 printing an array as shown
above otherwise the result is not very reader friendly.

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


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

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


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 the beginning of the file.
Open for reading and writing; place the file pointer at the beginning of the
'r+'
file.
Open for writing only; place the file pointer at the beginning of the file and
'w' truncate the file to zero length. If the file does not exist, it attempt to
create it.
Open for read/write; file pointer at beginning of file and truncate the file
'w+'
to zero length. If file does not exist, create it.
Open for write only; file pointer at the end of the file. If file does not
'a'
exist, create it.

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


Open for reading and writing; place the file pointer at the end of the file.
'a+'
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 $fh will return false. If you
like to create the file in case it doesn't exist, you 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 beginning of file.

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

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

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

fgets() – Read Line

The fgets() functions is used to read a line from a file. Using this function we
either read the entire line into a string or specify 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 parameter is the file pointer
and the 2nd parameter which is optional is the number of bytes to read in one
call. If the 2nd parameter is not giving, the function 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 to read only up to maximum


of 1024 characters at a time for not using up lot of memory.

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


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 want to read. Therefore, the
entire line is read.

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

Reading number of bytes

In this second example, we use the same method to read 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 then reads the next 64 characters
in the line.

Reading file line by line

Using the fgets() function we can also read the entire file line by line in one
loop. Let's look at two different examples to see how 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);
?>

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


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 file at once. Reading the file
line by line is probably more work in that case.

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

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

<?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 read big files in one go. Either
you should split the file into two or more pieces or 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 use 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 file handle, the string to be
written and the number of bytes to be written, which is optional.

• $handle – the file stream


• $string – string to be written in file
• $length – optional. Number of bytes to write in file.

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

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


Write text to a file

The first example demonstrates how to write a single 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 writable 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 create a new file.

Write at the beginning of a file

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

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

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

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

When you open a file with mode 'a+', the file pointer 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 use 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 end
$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

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


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+" automatically places the file pointer
at the end of the file so we don't have to do anything 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 end
$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 straight line. What if we want line
breaks?

Well, we can write text one per line in a file by using 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" regardless 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 end
$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";
Jan Zumwalt – neatinfo.com Pg 24 of 55 rev April 1, 2010
$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 writing 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 with new string.

For our example below we will assume we have file which 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 write mode using "r+". Next, we
read the file line by line using fgets function until we reach the student gpa
line. We then use string replace function to replace 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 anymore
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", "Student GPA: 3.1", $line);
}
else
{
//set file content to a string

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


$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 gpa 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 to 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 very useful when developing. I
would advise to do some practice examples to get a hang of things before moving
on.

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


Remote File IO
fsockopen($hostname, $port, $errno, $errstr, $timeout);

where:
$hostname - location or URL of the file or page.
$port - the default port is 80, unless otherwise told.
$errno - optional, contains error number during connection.
$errstr - optional. contains error message during connection
$timeout - optional. seconds before connection timeout 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 for reading and writing. In the
next tutorial, we will cover how to read from files and how to write to files.

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


Forms
Processing a remote form is a two step process. First 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</title></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</title></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>

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


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 format 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("youraddress@domain.com", "recpeient@domain.com",
"someone@domain.com", "hidden_email@domain.com",
$subject ,
$message);
?>

In our send_email function we set the appropriate headers. 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 out the email.

Sending HTML Email

The following function will send out an HTML formatted 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 {
Jan Zumwalt – neatinfo.com Pg 29 of 55 rev April 1, 2010
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("youraddress@domain.com", "recpeient@domain.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 server 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 sent 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 $ipi ?>" />


<input type="hidden" name="httpref" value="<?php echo $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 Billing </option>
<option value=" General Support ">General Support </option>
<option value=" Technical Support ">Technical Support </option>
<option value=" Webmaster ">Webmaster </option>
</select>
<br /><br />
Mail Message:
<br />
<textarea name="notes" rows="4" cols="40"></textarea>
<br /><br />
<input type="submit" value="Send Mail" />
<br />
</form>

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


</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 email -->

<?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 $visitormail ?> )
<br />
Jan Zumwalt – neatinfo.com Pg 31 of 55 rev April 1, 2010
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>

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


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 (PHPSESSID) for each visitor/user is
created. You can access the session id using the PHP 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 the <html> tag

Storing information in a session

To store information is a session variable, you must 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 easy. You can access the stored
session information on any page without doing anything extra.

<?php
session_start();

echo $_SESSION["username"];
echo "<br/>";
echo $_SESSION["color"];

?>

Result:

Johny
blue

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


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 session 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();
?>

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


Cookies
A cookie is often used to store data which can be used 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 goes to a webpage, all cookie
information is sent too. This is used to identify who 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 expire. Example:
time()+"3600". Cookie is set to expire after one hour.
$path - path on the server where cookie will be available. For example,
if the path is set to "/", the cookie will be available through
out the whole site. If the cookie is set to say "/news/", 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 within the domain
and all its sub-domains, example news.yourdomain.com. If the
cookie is set say "www.yourdomian.com" the cookie will be
available under all www sub-domains, example "
www.yourdomian.com/news"
$secure - true if cookie is being set over a secure "https" 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 expire 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 year.

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

Retrieving a cookie

Cookie information is retrieved using the predefined $_COOKIE array. The following
will retrieve our username cookie value
Jan Zumwalt – neatinfo.com Pg 35 of 55 rev April 1, 2010
<?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));
?>

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


MySql
 MySQL Functions
 mysql_affected_rows — Get number of affected rows in previous MySQL operation
 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 previous 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 numeric 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 field 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 is no connection
 mysql_query — Send a MySQL query
 mysql_real_escape_string — Escapes special characters in a string for use in 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 buffering the result rows.

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


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 available. 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:
Jan Zumwalt – neatinfo.com Pg 38 of 55 rev April 1, 2010
CREATE TABLE tablename {
Fields
}

The fields are defined as follows:

fieldname type(length) extra info,

The final field entered should not have a comma after 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 information 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 INT fields but I prefer to use
VARCHAR as it will allow dashes and spaces in the number, as well as textual
numbers (like 1800-COMPANY) and as we will not be initiating 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 increment setting means that whenever
you add a record, as long as you don't specify an id, 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 table in PHP. Some of the code
has not been covered yet but I will explain it fully in the next part.

<?
$user="username";
$password="password";
$database="database";
mysql_connect(localhost,$user,$password);
@mysql_select_db($database) or die( "Unable to select database");
$query="CREATE TABLE contacts (id int(6) NOT NULL auto_increment,first varchar(15) NOT
NULL,last varchar(15) NOT NULL,phone varchar(20) NOT NULL,mobile varchar(20) NOT NULL,fax
varchar(20) NOT NULL,email varchar(30) NOT NULL,web varchar(30) NOT NULL,PRIMARY KEY
Jan Zumwalt – neatinfo.com Pg 39 of 55 rev April 1, 2010
(id),UNIQUE id (id),KEY id_2 (id))";
mysql_query($query);
mysql_close();
?>

Enter your database, MySQL username and MySQL password in the appropriate
positions on the first three lines above.

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


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 information into your database so that it
is more useful.

Connecting To The Database

The first thing you must do before you can do any work 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 them 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 security risk, keeping your password
in the file. You don't need to worry, though, because the PHP scource code is
processed aby the server before being sent to the browser 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 database server at 'localhost'
(localhost means the server that the site is running one. Unless you web host
tells you otherwise you should use localhost. If you are given a server address
(such as sql.myserver.com you should replace localhost with "sql.myserver.com"
(including the quotes)) using the username stored in $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 connection to the database


server. Your script will still run if you do not include 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 your 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 your username has access. The
following command:

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

is used to do this. This tells PHP to select the database stored in the variable
$database (which you set earlier). If it cannot connect 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
Jan Zumwalt – neatinfo.com Pg 41 of 55 rev April 1, 2010
but it is not essential.

Executing Commands

Now you have connected to the server and selected the database you want to work
with you can begin executing commands on the server.

There are two ways of executing a command. One is to just enter the command in
PHP. This way is used if there will be no results from the operation.

The other way is to define the command as a variable. 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 like this:

mysql_query($query);

The useful thing about using this form of the command is that you can just repeat
the same command over and over again without learning 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: johnsmith@gowansnet.com
Web: http://www.gowansnet.com

This will all be put in with one command:

$query = "INSERT INTO contacts VALUES ('','John','Smith','01234 567890','00112


334455','01234 567891','johnsmith@gowansnet.com','http://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 this 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 insert into the table called
contacts the values in the brackets which follow.

The part in the brackets contains all the information to add. It uses all the
fields in order and inserts the information from between 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 going to act as an index field.
No two records in the database will have the same ID. 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. This means that this first
record will have the ID 1.

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


Displaying Data

So far in this tutorial, you have created a database 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 identical to inserting it using a PHP
script. The benefit, though, is that you do not need to change the script for each
piece of data you want to input and you can also allow your users to input their
own data.

The following code will show an HTML page with textboxes 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 other 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 into 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 select database");

$query = "INSERT INTO contacts VALUES


('','$first','$last','$phone','$mobile','$fax','$email','$web')";
mysql_query($query);

mysql_close();
?>

This script should then be saved as insert.php so that it can be called by the
HTML form. It works because, instead of the data being 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 confirming the data input. This is
basic PHP, though, and you should read the PHP tutorial if you do not know how to
do this.

Outputting Data

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


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 find out about them in the
tutorial on Free Webmaster Help) as they are used for this way of outputting data.

The first command you will need to use is a MySQL query made up like this:

SELECT * FROM contacts

This is a basic MySQL command which will tell the script 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 variable:

$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 stages to this.

Counting Rows

Before you can go through the data in your result variable, 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 command:

$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 number 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 before. This is useful, as $i can
be used to tell the script which line of the results 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 each 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 database we would use the

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


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 could 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 select database");
$query="SELECT * FROM contacts";
$result=mysql_query($query);

$num=mysql_numrows($result);

mysql_close();

echo "<b><center>Database Output</center></b><br><br>";

$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>Mobile: $mobile<br>Fax: $fax<br>E-mail:


$email<br>Web: $web<br><hr><br>";

$i++;
}

?>

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


More Outputs

Throughout this tutorial you have learnt how to create a database and table,
insert information and display the database information. In this part I will show
you more ways of displaying and outputting the information in the database.

Formatting Output

In the last part of the tutorial we output a list of all the people stored in the
database. This just gave us a very basic output, though 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 complicated. All you need to do is use
PHP to output HTML and include your variables in the correct spaces. The easiest
way to do this is by closing your PHP tag and entering 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 appropriate code and include it as
part of a larger table. For example, using a section 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">Mobile</font></th>
<th><font face="Arial, Helvetica, sans-serif">Fax</font></th>
<th><font face="Arial, Helvetica, sans-serif">E-mail</font></th>
<th><font face="Arial, Helvetica, sans-serif">Website</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"><? echo $first." ".$last; ?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><? echo $phone; ?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><? echo $mobile; ?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><? echo $fax; ?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><a href="mailto:<? echo $email; ?>">E-
mail</a></font></td>
<td><font face="Arial, Helvetica, sans-serif"><a href="<? echo $web;
?>">Website</a></font></td>
</tr>

<?
$i++;
}

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


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 code 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 pages fully dynamic.

Selecting Pieces of Data

As well as showing the whole database, PHP can be used to select individual
records, or records which match certian criteria. To 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 plain english. In the same way you
could select records based on any field in the database. 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 also 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='$searchlast'";


$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 very careful in using the
technique given above. Without correct secuirty measures, 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 value which edits the SQL string
being generated in such a way that it can be used for their own purposes. I won't
go into full details here, but there are many websites which give full details
(search for 'sql injection attack').

This security hole is easy to plug with a bit of work. Always check input data for
invalid chanracters and use PHP's built in functions to remove control characters
and HTML code etc. Again, there are many websites which go into this in depth.

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


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 and deleting of records, it is
certainly a possibility. Luckily, with PHP and MySQL, 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 contacts 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 placing users in alphabetical
order). By default, the output from your queries will 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 the users in alphabetical order
based on their last name. For those not familiar with 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 Descending order.

More Uses Of mysql_numrows and Sorting

The value you have assigned to $num is very imiportant as, apart from error
trapping and loops, it has many other uses. An example of this would be to print
out only the last 5 records added to a database. Firstly, 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 Descending 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 the 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

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


than 5, as if you ran the loop 5 times and there were 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 rows in the database. If there
were, the loop would be set to run 5 times. If there were less than 5 rows the
loop would run the correct number of times to output the whole database.

The ID Field

If you remember back to creating the database for the 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 being the primary field. I have
already explained how this field is unique for every 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 based 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 record. This may seem to be a little
worthless as it is, but you can use this very effectively in a number of different
ways. For example, if you wanted to have a dynamically 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 field, 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 with 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 URL 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 update 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 allowing the user to update the
record. To select the record in this page, we will put:

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


?id=$id

By getting the id of the record along with the other 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 update page, there can be code to
just select this item.

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


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 actions, 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. Using this you can then create
the update script, which will actually have two sections 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 useful. 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 the 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 $id; ?>">
First Name: <input type="text" name="ud_first" value="<? echo $first; ?>"><br>
Last Name: <input type="text" name="ud_last" value="<? echo $last; ?>"><br>
Phone Number: <input type="text" name="ud_phone" value="<? 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 form, 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

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


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 database:

$query = "UPDATE contacts SET first = '$ud_first', last = '$ud_last', phone = '$ud_phone',
mobile = '$ud_mobile', fax = '$ud_fax', email = '$ud_email', web = '$ud_web' WHERE id =
'$ud_id'";

This query tells the database to update the contacts table where the ID is the
same as the value stored in $ud_id (which as you can see from the form on the
previous page was set as the id of the record we are updating) and to set the
following fields to the specified values (which were set using the form on the
previous page).

This query could then be integrated into a simple script:

$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_email', web='$ud_web' WHERE id='$ud_id'";
mysql_query($query);
echo "Record Updated";
mysql_close();

This code would update the database and give the user 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 should 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 database, 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 confirmation code as above.

Loops

At this time it seems appropriate to mention another use of loops with a database.
As well as using a loop to get information from a database 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 Smith to have the website
www.smith.com:

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


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.

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


Finishing The Script

Throughout this tutorial I have taught you how to use PHP to interact with a MySQL
(or SQL) database and how to use the most common commands available. I have,
throughout this tutorial, also shown you how to create a basic contacts management
system to illustrate some of the options you can use. In this part I will show you
some final MySQL tips and will give you a final version of the script.

Saving Time

When creating complex scripts using databases you will find that the most common
thing you are doing is connecting to a database. Because of this, you can actually
save time by creating either a username/password file or a connection file. For
example for a username/password file you would create 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 php 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 database, 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 MySQL server.

Searching

A limited form of searching can also be performed on your database using a built
in MySQL function. This is by using the LIKE function as follows:

SELECT * FROM tablename WHERE fieldname LIKE '%$string%'

To explain furhter, LIKE tells the database to perform its 'searching' feature.
The % signs mean that any other data could appear in their place and $string would
hold your search string. In this place could be a word or number as well e.g.:

LIKE '%piano%'

which would output any rows with piano in the specified field.

Similarly, you can leave out one of the % signs so that you can specify the
position of the string e.g.:

LIKE 'piano%'

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


Will only output rows where the specified field begins 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 as a zip file so that you can
examine the code (see Related Links).

Conclusion

From this tutorial you should now know the basics of using PHP and MySQL together
to create database-enabled websites and programs. Using 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.

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

You might also like