PHP on a Fast Track

californiamandrillΛογισμικό & κατασκευή λογ/κού

13 Δεκ 2013 (πριν από 3 χρόνια και 8 μήνες)

83 εμφανίσεις

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?

The goal of this lecture is

to show that PHP is

not a good technology

PHP


Scripting language for web development


Created by
Rasmus

Lerdorf

16 years ago


Currently phasing out


Easy to learn but time
-
consuming to use

Let’s write

a shopping cart application

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

W
indows, Linux,
MacOS
...

A
ppache
, IIS,
WEBrick
...

M
ySQL
,
Postgres
,
SQLite
, Oracle...

P
HP, Perl, Python, Ruby, C#, Java...

What do we need?


Operating System


Web Server


Database



Scripring

Language

L
inux, Windows,
MacOS
...

A
ppache
, IIS,
WEBrick
...

M
ySQL
,
Postgres
,
SQLite
, Oracle...

P
HP, Perl, Python, Ruby, C#, Java...

What do we need?


Operating System


Web Server


Database



Scripring

Language

M
acOS
, Windows, Linux...

A
ppache
, IIS,
WEBrick
...

M
ySQL
,
Postgres
,
SQLite
, Oracle...

P
HP, 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 protocol

protocol with no memory of who you are


Cookies


Sessions


Session variables



$_SESSION['
cart
']


Name of the
variable

Collection of
session variables

Make information persistent

<?
php

session_start
(); ?>





m
ust appear in the
first line (before
DOCTYPE)

cart.php

Make information persistent

<?
php

session_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>";

?>


m
ust 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: &pound;$price</p>";


}

?>

cart.php

Final
Polishings

cart.php:


Better HTML formatting


Total price of the cart calculated


i
ndex.php:


Connected to the database

<?
php

session_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>&pound;$price</td></
tr
>";


}


echo
"<
tr
><td><strong>Total</strong></td><td><strong>&pound
;$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>&pound;$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 created

with Ruby on Rails

watch at:

http://vimeo.com/30927971