Intermediate PHP & MySQL Welcome This slideshow presentation is designed to introduce you to some intermediate PHP concepts and an introduction to MySQL. It is the second of two PHP workshops available at www.tinyurl.com/rpi123. In addition to the two PHP workshops, there are also workshops on HTML and CSS. These slides are based on source material found at the w3schools.com website. You are encouraged to visit the site – it is a great resource. Let's dive right in, shall we? PHP Date() Function The PHP date() function formats a timestamp to a more readable date and time. PHP Date() Function The required format parameter in the date() function specifies how to format the date/time. d - Represents the day of the month (01 to 31) m - Represents a month (01 to 12) Y - Represents a year (in four digits) Other characters, like"/", ".", or "-" can also be inserted between the letters to add additional formatting. PHP Date() Function PHP Date() Function The optional timestamp parameter in the date() function specifies a timestamp. If you do not specify a timestamp, the current date and time will be used. The mktime() function returns the Unix timestamp for a date. The Unix timestamp contains the number of seconds between the Unix Epoch (January 1 1970 00:00:00 GMT) and the time specified. PHP Date() Function PHP Server Side Includes (SSI) You can insert the content of one PHP file into another PHP file before the server executes it, with the include() or require() function. > include() generates a warning, but the script will continue execution > require() generates a fatal error, and the script will stop PHP Server Side Includes (SSI) These two functions are used to create functions, headers, footers, or elements that will be reused on multiple pages. SSI saves a lot of work. This means that you can create a standard header, footer, or menu file for all your web pages. When the header needs to be updated, you update the include file, or when you add a new page to your site, you can simply change the menu file (instead of updating the links on all your web pages). PHP include() Function The include() function takes all the content in a specified file and includes it in the current file. If an error occurs, the include() function generates a warning, but the script will continue execution. Here's what the error output might look like... PHP include() Function error Warning: include() [function.include]: URL file-access is disabled in the server configuration in /home/user/public_html/page.php on line xx Warning: include(http://www.somedomain.com/file.php) [function.include]: failed to open stream: no suitable wrapper could be found in /home/user/public_html/page.php on line xx Warning: include() [function.include]: Failed opening 'http://www.somedomain.com/file.php' for inclusion (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/user/public_html/page.php on line xx PHP include() Function Assume that you have a standard header file, called "header.php". To include the header file in a page, use the include() function: PHP include() Function Assume we have a standard menu file, called "menu.php", that should be used on all pages: And this is how you'd include it... PHP: include() Function Here's what the output HTML would look like... PHP: include() Function PHP require() Function The require() function is identical to include(), except that it handles errors differently. If an error occurs, the include() function generates a warning, but the script will continue execution. The require() generates a fatal error, and the script will stop. PHP require() Function So, if we use include()... PHP require() Function The errors show, but the code still gets executed. See how it echoed “Hello World”. PHP require() Function But, if we use require() instead... PHP require() Function We get only the error message – and the code doesn't get executed. PHP Cookies A cookie is often used to identify a user. A cookie is a small file that the server embeds on the user's computer. Each time the same computer requests a page with a browser, it will send the cookie, too. With PHP, you can both create and retrieve cookie values. PHP setcookie() Function The setcookie() function is used to set a cookie. Note: The setcookie() function must appear BEFORE the <html> tag. PHP setcookie() Function In the example below, we will create a cookie named "user" and assign the value "Alex Porter" to it. We also specify that the cookie should expire after one hour: PHP setcookie() Function You can also set the expiration time of the cookie in another way. It may be easier than using seconds. PHP $_COOKIE The PHP $_COOKIE variable is used to retrieve a cookie value. In the example below, we retrieve the value of the cookie named "user" and display it on a page: PHP $_COOKIE If the cookie is set, receive a personal welcome – if not, it echoes a generic greeting. And now for something Completely different... (Instant “A” for those who got the Monty Python reference) A brief but fascinating introduction to MySQL FYI The Logo The new MySQL logo - a jumping dolphin symbolizes the speed, power, precision and good nature of the MySQL database and community. Michael "Monty" Widenius (creator of MySQL): "I am personally concerned about the survival of endangered species, and I liked the idea of the dolphin as soon as it came up. It combines great symbol value with a powerful, modern design." FYI The Name The My in MySQL is not like the i in iPad. It is actually the name of Monty's daughter. Yes, her name is My. The SQL part stands for Structured Query Language. MySQL Introduction MySQL is a database. The data in MySQL is stored in database objects called tables. A table is a collection of related data entries and it consists of columns and rows. MySQL Tables A database most often contains one or more tables. Each table is identified by a name (e.g. "Customers" or "Orders"). Tables contain records (rows) with data. Below is an example of a table called "Persons": MySQL Queries A query is a question or a request. With MySQL, we can query a database for specific information and have a recordset returned. Look at the following query: MySQL Queries The query above selects all the data in the "LastName" column from the "Persons" table, and will return a recordset like this: MySQL mysql_connect() Before you can access data in a database, you must create a connection to the database. In PHP, this is done with the mysql_connect() function. MySQL mysql_connect() In the following example we store the connection in a variable ($con) for later use in the script. The "die" part will be executed if the connection fails: MySQL mysql_close() The connection will be closed automatically when the script ends. To close the connection before, use the mysql_close() function: MySQL Create a Database The CREATE DATABASE statement is used to create a database in MySQL. To get PHP to execute the statement above we must use the mysql_query() function. This function is used to send a query or command to a MySQL connection. MySQL Create a Database MySQL Create a Table The CREATE TABLE statement is used to create a table in MySQL. We must add the CREATE TABLE statement to the mysql_query() function to execute the command. MySQL Create a Table This is the top part of the file. The CREATE TABLE code is on the next slide... MySQL Create a Table MySQL Create a Table Important: A database must be selected before a table can be created. The database is selected with the mysql_select_db() function. Note: When you create a database field of type varchar, you must specify the maximum length of the field, e.g. varchar(15). MySQL Create a Table About Primary Keys and Auto Increment Fields: Each table should have a primary key field. A primary key is used to uniquely identify the rows in a table. Each primary key value must be unique within the table. Furthermore, the primary key field cannot be null because the database engine requires a value to locate the record. MySQL Create a Table The following example sets the personID field as the primary key field. The primary key field is often an ID number, and is often used with the AUTO_INCREMENT setting. AUTO_INCREMENT automatically increases the value of the field by 1 each time a new record is added. To ensure that the primary key field cannot be null, we must add the NOT NULL setting to the field. MySQL Create a Table MySQL Inserting Data The INSERT INTO statement is used to add new records to a database table. Syntax It is possible to write the INSERT INTO statement in two forms. MySQL Inserting Data The first form doesn't specify the column names where the data will be inserted, only their values: The second form specifies both the column names and the values to be inserted: MySQL Inserting Data To get PHP to execute the statements above we must use the mysql_query() function. This function is used to send a query or command to a MySQL connection. Previously we created a table named "Persons", with three columns; "Firstname", "Lastname" and "Age". We will use the same table in this example. The following example adds two new records to the "Persons" table: MySQL Inserting Data MySQL Inserting Data - forms Now we will create an HTML form that can be used to add new records to the "Persons" table. MySQL Inserting Data - forms When a user clicks the submit button in the HTML form in the example above, the form data is sent to "insert.php". The "insert.php" file connects to a database, and retrieves the values from the form with the PHP $_POST variables. Then, the mysql_query() function executes the INSERT INTO statement, and a new record will be added to the "Persons" table. MySQL Inserting Data - forms MySQL Selecting Data The SELECT statement is used to select data from a database. To get PHP to execute the statement above we must use the mysql_query() function. This function is used to send a query or command to a MySQL connection. MySQL Selecting Data MySQL Selecting Data The example above stores the data returned by the mysql_query() function in the $result variable. Next, we use the mysql_fetch_array() function to return the first row from the recordset as an array. Each call to mysql_fetch_array() returns the next row in the recordset. The while loop loops through all the records in the recordset. To print the value of each row, we use the PHP $row variable ($row['FirstName'] and $row['LastName']). MySQL Selecting Data The output of the code from two slides back is: Here's how to return the data in an HTML table: MySQL Selecting Data MySQL Selecting Data Here's another cool table... MySQL Selecting Data The WHERE clause is used to extract only those records that fulfill a specified criterion. To get PHP to execute the statement above we must use the mysql_query() function. This function is used to send a query or command to a MySQL connection. MySQL Selecting Data MySQL Ordering The ORDER BY keyword is used to sort the data in a recordset. The ORDER BY keyword sorts the records in ascending order by default. If you want to sort the records in a descending order, you can use the DESC keyword. MySQL Ordering MySQL Ordering It is also possible to order by more than one column. When ordering by more than one column, the second column is only used if the values in the first column are equal: MySQL Updating The UPDATE statement is used to update existing records in a table. MySQL Updating Note: Notice the WHERE clause in the UPDATE syntax. The WHERE clause specifies which record or records that should be updated. If you omit the WHERE clause, all records will be updated! To get PHP to execute the statement above we must use the mysql_query() function. This function is used to send a query or command to a MySQL connection. MySQL Updating MySQL Deleting The DELETE FROM statement is used to delete records from a database table. MySQL Deleting Note: Notice the WHERE clause in the DELETE syntax. The WHERE clause specifies which record or records that should be deleted. If you omit the WHERE clause, all records will be deleted! To get PHP to execute the statement above we must use the mysql_query() function. This function is used to send a query or command to a MySQL connection. MySQL Deleting End of the Workshop More web workshops can be found at www.tinyurl.com/rpi123