290 likes | 406 Views
PHP on a F ast Track. a quick introduction to PHP programming b y Jarek Francik. Apologies to ECommerce students:. this will be more or less what you know. Possible Options. PHP ASP.NET Java Ruby on Rails Python Perl So, which way to go?.
E N D
PHP on a Fast Track a quick introduction to PHP programming by JarekFrancik
Apologies to ECommerce students: this will be more or less what you know...
Possible Options • PHP • ASP.NET • Java • Ruby on Rails • Python • Perl So, which way to go?
The goal of this lecture isto show that PHP isnot a good technology
PHP • Scripting language for web development • Created by RasmusLerdorf 16 years ago • Currently phasing out • Easy to learn but time-consuming to use
What do we need? • Operating System • Web Server • Database • Scripring Language Windows, Linux, MacOS... Appache, IIS, WEBrick... MySQL, Postgres, SQLite, Oracle... PHP, Perl, Python, Ruby, C#, Java...
What do we need? • Operating System • Web Server • Database • Scripring Language Windows, Linux, MacOS... Appache, IIS, WEBrick... MySQL, Postgres, SQLite, Oracle... PHP, Perl, Python, Ruby, C#, Java...
What do we need? • Operating System • Web Server • Database • Scripring Language Linux, Windows, MacOS... Appache, IIS, WEBrick... MySQL, Postgres, SQLite, Oracle... PHP, Perl, Python, Ruby, C#, Java...
What do we need? • Operating System • Web Server • Database • Scripring Language MacOS, Windows, Linux... Appache, IIS, WEBrick... MySQL, Postgres, SQLite, Oracle... PHP, Perl, Python, Ruby, C#, Java...
What do we need? • Operating System • Web Server • Database • Scripring Language X - Platform Appache MySQL PHP Perl
What do we need? • Operating System • Web Server • Database • Scripring Language X A M P P
First thing: The Database USE test; CREATE TABLE goods ( id int(6) unsigned NOT NULL auto_increment, item varchar(100) NOT NULL default '', price decimal(6,2) NOT NULL default '0.00', image varchar(100) NOT NULL default '', PRIMARY KEY (id) ); INSERT INTO goods VALUES (1, 'Soap', '4.99'); INSERT INTO goods VALUES (2, 'Strawberry Jam', '1.99'); INSERT INTO goods VALUES (3, 'Toothpaste', '2.49'); INSERT INTO goods VALUES (4, '8GB Memory Stick', '22.99');
The First PHP File <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Your Cart</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> </head> <body> <h1>Your Cart</h1> <?php ?> </body> </html> cart.php
The First PHP File <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Your Cart</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> </head> <body> <h1>Your Cart</h1> <?php echo "Hello, world!"; ?> </body> </html> cart.php
Another File: Front Page <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Your Shop</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> </head> <body> <h1>Your Shop</h1> <ul> <li><a href="cart.php?action=add&id=1">Add item #1 to the cart</a></li> <li><a href="cart.php?action=add&id=2">Add item #2 to the cart</a></li> <li><a href="cart.php?action=add&id=3">Add item #3 to the cart</a></li> <li><a href="cart.php?action=add&id=4">Add item #4 to the cart</a></li> </ul> <p><a href="cart.php?action=show">Show your cart</a></p> </body> </html> index.php
What the application should do • http://localhost/cart.php?action=show • http://localhost/cart.php?action=add&id=2
What the application should do • http://localhost/cart.php?action=show • http://localhost/cart.php?action=add&id=2 <?php $action = $_GET['action']; $id = $_GET['id']; echo "<p>DEBUG: Action to do is $action, and item id is $id.</p>"; ?> cart.php
Make information persistent • HTTP as a stateless protocolprotocol with no memory of who you are • Cookies • Sessions • Session variables $_SESSION['cart'] Collection of session variables Name of the variable
Make information persistent <?phpsession_start(); ?> must appear in the first line (before DOCTYPE) cart.php
Make information persistent <?phpsession_start(); ?> ...... <?php $cart = $_SESSION['cart']; $action = $_GET['action']; $id = $_GET['id']; echo "<p>DEBUG: Action to do is $action, and item id is $id.</p>"; if ($action == 'add') { $cart = $cart . ",$id"; $_SESSION['cart'] = $cart; } echo "<p>DEBUG: Cart is: $cart</p>"; ?> must appear in the first line (before DOCTYPE) cart.php
Display Your Cart <?php $cart = $_SESSION['cart']; $action = $_GET['action']; $id = $_GET['id']; if ($action == 'add') { $cart = $cart . ",$id"; $_SESSION['cart'] = $cart; } $myitems = explode(',', $cart); // explode using comma as a separator if (count($myitems) <= 1) echo "<p>Your cart is empty.<p>"; else foreach ($myitems as $i) if ($i != '') { echo "<p>Item id: $i</p>"; } ?> cart.php
Connect to the Database <?php $hostname = 'localhost'; // localhost is the URL of the server $username = 'root'; // the username in this example is root $password = 'elvis'; // put here your MySQL root password // connect to the database server $con = mysql_connect($hostname, $username, $password) or die ('Could not connect: ' . mysql_error()); // display if connection failed mysql_select_db("test", $con); // choose the test database ... cart.php
Connect to the Database <?php $hostname = 'localhost'; // localhost is the URL of the server $username = 'root'; // the username in this example is root $password = 'elvis'; // put here your MySQL root password // connect to the database server $con = mysql_connect($hostname, $username, $password) or die ('Could not connect: ' . mysql_error()); // display if connection failed mysql_select_db("test", $con); // choose the test database ... Provide the proper username & password (the latter maybe ‘’) cart.php
Display Your Items .... foreach ($myitems as $i) if ($i != '') { $result = mysql_query("SELECT * FROM goods WHERE id = $i"); $row = mysql_fetch_array($result); $item = $row['item']; $price = $row['price']; echo "<p>$item: £$price</p>"; } ?> cart.php
Final Polishings cart.php: • Better HTML formatting • Total price of the cart calculated index.php: • Connected to the database
<?phpsession_start(); ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Your title here</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <!--<link rel="stylesheet" type="text/css" href="style.css" />--> </head> <body> <h1>Your Cart</h1> <?php $hostname = 'localhost'; // localhost is the URL of the server $username = 'root'; // the username in this example is root $password = 'elvis'; // put here your MySQL root password // connect to the database server $con = mysql_connect($hostname, $username, $password) or die ('Could not connect: ' . mysql_error()); // display if failed mysql_select_db("test", $con); // choose the test database $cart = $_SESSION['cart']; $action = $_GET['action']; $id = $_GET['id']; if ($action == 'add') { $cart = $cart . ",$id"; $_SESSION['cart'] = $cart; } $myitems = explode(',', $cart); // explode using comma as a separator if (count($myitems) <= 1) echo "<p>Your cart is empty.<p>"; else { echo "<table>"; $total = 0; foreach ($myitems as $i) if ($i != '') { $result = mysql_query("SELECT * FROM goods WHERE id = $i"); $row = mysql_fetch_array($result); $item = $row['item']; $price = $row['price']; $total += $price; echo "<tr><td>$item</td><td>£$price</td></tr>"; } echo "<tr><td><strong>Total</strong></td><td><strong>£$total</strong></td>"; echo "</tr></table>"; } ?> <p>[<a href="index.php">Home Page</a>]</p> </body> </html> cart.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <?php $hostname = 'localhost'; // localhost is the URL of the server $username = 'root'; // the username in this example is root $password = 'elvis'; // put here your MySQL root password // connect to the database server $con = mysql_connect($hostname, $username, $password) or die ('Could not connect: ' . mysql_error()); // display if failed mysql_select_db("test", $con); // choose the test database ?> <html> <head> <title>Your Shop</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <!--<link rel="stylesheet" type="text/css" href="style.css" />--> </head> <body> <h1>Your Shop</h1> <table> <?php $result = mysql_query("SELECT * FROM goods"); while ($row = mysql_fetch_array($result)) { $id = $row['id']; $item = $row['item']; $price = $row['price']; echo "<tr>"; echo "<td>$item</td>"; echo "<td>£$price</td>"; echo "<td><a href=\"cart.php?action=add&id=$id\">add to cart</a></td>"; echo "</tr>"; }; mysql_free_result($result); ?> </table> <p><a href="cart.php?action=show">Show your cart</a></p> </body> </html> index.php
Second Part: Shop createdwith Ruby on Rails watch at:http://vimeo.com/30927971