79
PHP & MYSQL The basics Thursday, November 15, 12

2012 | PHP by Jochem

  • Upload
    educie

  • View
    1.088

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 2012 | PHP by Jochem

PHP & MYSQLThe basics

Thursday, November 15, 12

Page 2: 2012 | PHP by Jochem

purpose of this course

You can only master web-development by doing it a lot

This course enables you to start doing it (a lot)

Learn the language

Walk through the possibilities

Know the (online) references for the future

Thursday, November 15, 12

Page 3: 2012 | PHP by Jochem

end of this week

?Thursday, November 15, 12

Page 4: 2012 | PHP by Jochem

planning

Day 1: PHP

Day 2: CodeIgniter

Day 3: MySQL

Day 4: Form Handling & AJAX

Day 5: Integrating (login system)

Thursday, November 15, 12

Page 5: 2012 | PHP by Jochem

today

Overview web-development

PHP

Thursday, November 15, 12

Page 6: 2012 | PHP by Jochem

OVERVIEW WEB-DEVELOPMENTWhat does it take to build a website

Thursday, November 15, 12

Page 7: 2012 | PHP by Jochem

Browser / Frontend

HTML

CSS

Java-script

Content

Style

Behavior

Thursday, November 15, 12

Page 8: 2012 | PHP by Jochem

Server / Backend

PHP

database

Thursday, November 15, 12

Page 9: 2012 | PHP by Jochem

Front-end & Back-endFrontend

HTML CSS Java-script

Backend

PHP database

generate

Thursday, November 15, 12

Page 10: 2012 | PHP by Jochem

PHPScripting

Thursday, November 15, 12

Page 11: 2012 | PHP by Jochem

PHP Hypertext Preprocessing

Executed on server

Communication with database

Handle data

Parsing (parts of) HTML

Thursday, November 15, 12

Page 12: 2012 | PHP by Jochem

PHP file

write in text-editor

.php

HTML & PHP code

Executed on request by browser

Return HTML to browser

Thursday, November 15, 12

Page 13: 2012 | PHP by Jochem

Syntax

<?php

the php code..;

?>

localhost/day1/hello.php

Thursday, November 15, 12

Page 14: 2012 | PHP by Jochem

Commenting

One line comment: //...

Multiple line comment: /* ... */

Thursday, November 15, 12

Page 15: 2012 | PHP by Jochem

Variables

Store a value in a variable

Use/change the value later on

PHP var starts with $

Name begins with letter or underscore

Name may contain A-z, 0-9, _

Case sensitive

Thursday, November 15, 12

Page 16: 2012 | PHP by Jochem

year.php

Thursday, November 15, 12

Page 17: 2012 | PHP by Jochem

Main varsint

number

$x = 25;

$y = 25.5;

string

text

$x = “Hello”;

combine with .

$y = “world”;

$z = $x . $y;

array

list of values

$x = array(1,24,12);

to be continued..

Thursday, November 15, 12

Page 18: 2012 | PHP by Jochem

Single & double quotes

Thursday, November 15, 12

Page 19: 2012 | PHP by Jochem

Exercise

......

Use double quotes for $sentence 1

Use single quotes for $sentence 2

Thursday, November 15, 12

Page 20: 2012 | PHP by Jochem

Arithmetic operators

Thursday, November 15, 12

Page 21: 2012 | PHP by Jochem

Shortcuts

Thursday, November 15, 12

Page 22: 2012 | PHP by Jochem

If

Thursday, November 15, 12

Page 23: 2012 | PHP by Jochem

Else

Thursday, November 15, 12

Page 24: 2012 | PHP by Jochem

Elseif

Thursday, November 15, 12

Page 25: 2012 | PHP by Jochem

Exercise

Thursday, November 15, 12

Page 26: 2012 | PHP by Jochem

Logical operators

Thursday, November 15, 12

Page 27: 2012 | PHP by Jochem

Exercise

find largest

use AND or &&

indicate if no largest

Thursday, November 15, 12

Page 28: 2012 | PHP by Jochem

Arrays

List of values

Stored in 1 variable

Each value has its own index

Thursday, November 15, 12

Page 29: 2012 | PHP by Jochem

Numeric Array

Each index is a number

Thursday, November 15, 12

Page 30: 2012 | PHP by Jochem

Associative Array

Each index is a word

Thursday, November 15, 12

Page 31: 2012 | PHP by Jochem

For loop

Run block of code several times

for(init; condition; increment){

}

optional: stop with break;

Thursday, November 15, 12

Page 32: 2012 | PHP by Jochem

Loop over Array

Thursday, November 15, 12

Page 33: 2012 | PHP by Jochem

Foreach

Thursday, November 15, 12

Page 34: 2012 | PHP by Jochem

Exercise

Create 1 array with your family members

Find a way to store relation and name

Echo per member “I’ve got a relation named name”

So, “I’ve got a brother named Maarten”

Thursday, November 15, 12

Page 35: 2012 | PHP by Jochem

Multidimensional Arrays

Array in array

See multidimensional.php

Thursday, November 15, 12

Page 36: 2012 | PHP by Jochem

Function

700+ predefined functions

Self-made functions

Thursday, November 15, 12

Page 37: 2012 | PHP by Jochem

Create your own function

Thursday, November 15, 12

Page 38: 2012 | PHP by Jochem

Function parameters

Thursday, November 15, 12

Page 39: 2012 | PHP by Jochem

Default parameters

Thursday, November 15, 12

Page 40: 2012 | PHP by Jochem

Exercise

Create calculating function

3 parameter: 2 numbers and the operator (text)

Function returns result

Example: calc(2,3,‘multiply’); //returns 6

Hint: use switch()

Thursday, November 15, 12

Page 41: 2012 | PHP by Jochem

Form Handling

PHP can handle the data of an HTML form

Data is communicated in a array named $_POST

See post.php

Thursday, November 15, 12

Page 42: 2012 | PHP by Jochem

CODEIGNITERPHP framework

Thursday, November 15, 12

Page 43: 2012 | PHP by Jochem

PHP Framework

Set of folders & PHP files

Predefined structure

Many predefined functions

Thursday, November 15, 12

Page 44: 2012 | PHP by Jochem

Model View Controller

Separate Lay-out, Logic & Database traffic

Lay-out / view: HTML

Logic / controller: PHP

Database / model: MySQL

Controller

Model View

Request Answer

Thursday, November 15, 12

Page 45: 2012 | PHP by Jochem

Model View Controller

Separate Lay-out, Logic & Database traffic

Lay-out / view: HTML

Logic / controller: PHP

Database / model: MySQL

Controller

Model View

Request Answer

database

Thursday, November 15, 12

Page 46: 2012 | PHP by Jochem

Sales TextsProductsUsersModels

Product BuyCatalogHomeControllers History

ProductBuyCatalogHomeViews History

Thursday, November 15, 12

Page 47: 2012 | PHP by Jochem

Sales TextsProductsUsersModels

Product BuyCatalogHomeControllers History

BuyCatalogHomeViews HistoryProduct

x5

Thursday, November 15, 12

Page 48: 2012 | PHP by Jochem

Sales TextsProductsUsersModels

Product BuyCatalogHomeControllers History

BuyCatalogHomeViews HistoryProduct

x1

Thursday, November 15, 12

Page 49: 2012 | PHP by Jochem

Install

www.codeigniter.com

download

unzip

place content in folder day2 (in www or htdocs)

go to http://localhost/day2

Thursday, November 15, 12

Page 50: 2012 | PHP by Jochem

From URL to Controller

Go to http://localhost/day2/index.php/welcome/index

Site url Controller Function

http://localhost/day2/index.php welcome index

Check it in application/controllers/welcome.php

Thursday, November 15, 12

Page 51: 2012 | PHP by Jochem

Loading views

$this->load->view()

CI knows where the views folder is

Thursday, November 15, 12

Page 52: 2012 | PHP by Jochem

Sending variables

Create associative array

Send as second parameter in $this->load->view()

Thursday, November 15, 12

Page 53: 2012 | PHP by Jochem

Creating more controllers

Duplicate existing

Change filename

Change ClassName (Capitalized)

function index() is called if no function is called in URL

Thursday, November 15, 12

Page 54: 2012 | PHP by Jochem

Creating more functions

Create a public function ...()

Load a view

Create the view

Go to URL

Thursday, November 15, 12

Page 55: 2012 | PHP by Jochem

Configuring your website

applications/config/config.php

applications/config/autoload.php

applications/config/routes.php

Thursday, November 15, 12

Page 56: 2012 | PHP by Jochem

Config.php

Information for CI

URL of the website

Thursday, November 15, 12

Page 57: 2012 | PHP by Jochem

Autoload.php

Load libraries & helpers

E.g. Database, Session

Load in autoload.php for site-wide

Load in controller for only that page

Thursday, November 15, 12

Page 58: 2012 | PHP by Jochem

Routes.php

Convert URLs to controllers

Point /about-me to controller about

Thursday, November 15, 12

Page 59: 2012 | PHP by Jochem

Navigating through your site

Create a view ‘menu_view.php’

Create simple navigation

Use site_url() in links

Load view in top of every view

Thursday, November 15, 12

Page 60: 2012 | PHP by Jochem

Using HTML template

Download ‘Template.php’ from dropbox

Place in application/libraries/

Add to $libraries in application/config/autoload.php

Change $this->load->view() to $this->template->load(‘template_view’, ‘viewfile’, vars)

Thursday, November 15, 12

Page 61: 2012 | PHP by Jochem

Creating HTML template

Create template_view.php

Add basic HTML structure

Load ‘menu_view.php’ in body

Thursday, November 15, 12

Page 62: 2012 | PHP by Jochem

Recreating Calculator

Create controller calculator.php

Add to menu

Create view calculator_view.php

HTML in view, Logic in controller

Thursday, November 15, 12

Page 63: 2012 | PHP by Jochem

Form Validation

Lookup at codeigniter reference

Create contact_view.php

Build email form with name, email, message, hidden, submit

Create controller contact.php

Load Form_validation in controller, set up and check for correct values

Thursday, November 15, 12

Page 64: 2012 | PHP by Jochem

Send email

Lookup at codeigniter reference

Load Email in controller contact.php

If correct values, send email

Thursday, November 15, 12

Page 65: 2012 | PHP by Jochem

Exercise

Create 5 page website (home, about me, portfolio, calculator, contact)

Use template and ‘menu_view.php’

Make calculator and contact work

Thursday, November 15, 12

Page 66: 2012 | PHP by Jochem

SQLDatabases

Thursday, November 15, 12

Page 67: 2012 | PHP by Jochem

Structured Query Language

Query is a request/command to a database

In our case, a MySQL database

Thursday, November 15, 12

Page 68: 2012 | PHP by Jochem

Possibilities

Retrieve data from DB

Insert data in DB

Update data in DB

Delete data from DB

Create tables in DB

> SELECT

> INSERT

> UPDATE

> DELETE

Thursday, November 15, 12

Page 69: 2012 | PHP by Jochem

Database

Database is build up in tables

Tables contain records (rows) with data

Thursday, November 15, 12

Page 70: 2012 | PHP by Jochem

Select

Select * FROM persons

Select LastName, FirstName FROM persons

Thursday, November 15, 12

Page 71: 2012 | PHP by Jochem

Where

SELECT * FROM persons WHERE City = Sandnes

SELECT LastName FROM Persons WHERE FirstName = Tove

= <> < > <= >=

Thursday, November 15, 12

Page 72: 2012 | PHP by Jochem

And

SELECT P_id FROM Persons WHERE FirstName = tove AND LastName = Svendson

Thursday, November 15, 12

Page 73: 2012 | PHP by Jochem

Order By

SELECT * FROM persons ORDER BY LastName

Thursday, November 15, 12

Page 74: 2012 | PHP by Jochem

Insert

INSERT INTO Persons VALUES (4,'Nilsen', 'Johan', 'Bakken 2', 'Stavanger')

Thursday, November 15, 12

Page 75: 2012 | PHP by Jochem

Update

UPDATE Persons

SET Address='Nissestien 67', City='Sandnes' WHERE LastName='Tjessem' AND FirstName='Jakob'

Thursday, November 15, 12

Page 76: 2012 | PHP by Jochem

Delete

DELETE FROM PersonsWHERE LastName='Tjessem' AND FirstName='Jakob'

Thursday, November 15, 12

Page 77: 2012 | PHP by Jochem

CodeIgniter

$this->db->select(‘*’);

$this->db->from(‘persons’);

$this->db->where(‘P_id’, 5);

$this->db->get()->row_array();

$this->db->where(‘P_id’, 5);

$this->db->get(‘persons’)->row_array();

Thursday, November 15, 12

Page 78: 2012 | PHP by Jochem

Configuring

application/config/database.php

Enter MySQL Username

Enter MySQL Password

Enter MySQL Database

Add ‘database’ to autoload.php in Libraries

Thursday, November 15, 12

Page 79: 2012 | PHP by Jochem

Security

INSERT INTO persons (FirstName, LastName) VALUES (‘Dirk’, ‘Hens’);

Text in FirstName input: Dirk’, ‘Hens’), (‘Jochem

INSERT INTO persons (FirstName, LastName) VALUES (‘Dirk’, ‘Hens’), (‘Jochem’, ‘van Kapel)

CodeIgniter auto adds “”: INSERT INTO persons (FirstName, LastName) VALUES (“‘Dirk’, ‘Hens’), (‘Jochem’”, “‘van Kapel’”);

Thursday, November 15, 12