info + web tech course

19
© Anselm Spoerri Info + Web Tech Course Information Technologies Info + Web Tech Course Anselm Spoerri PhD (MIT) SC&I @ Rutgers University [email protected] [email protected]

Upload: dacey

Post on 16-Jan-2016

28 views

Category:

Documents


0 download

DESCRIPTION

Info + Web Tech Course. Information Technologies. Anselm Spoerri PhD (MIT) SC&I @ Rutgers University [email protected] [email protected]. Lecture 11 - Overview. PHP, MySQL and CSS  Dynamic Website Exercise 5 Demo Credentials Management MySQL: Key Commands - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Info + Web Tech Course

© Anselm SpoerriInfo + Web Tech Course

InformationTechnologies

Info + Web Tech Course

Anselm Spoerri PhD (MIT)SC&I @ Rutgers University

[email protected]@gmail.com

Page 2: Info + Web Tech Course

© Anselm SpoerriInfo + Web Tech Course

Lecture 11 - Overview

PHP, MySQL and CSS Dynamic WebsiteExercise 5 Demo

– Credentials Management

– MySQL: Key Commands

– Recap: Login.php | connectDatabase.php

– Form with Radio Buttons | $_POST | PHP to Display $_POST

– Create MySQL Table for Data from Form with Radio Buttons

– Add Form Data to MySQL table (use MySQL Workbench to monitor)

– Use PHP to Display Data in MySQL Table

– Compute Average Score and Control Display with CSS

Lectures – Week 11 Contenthttp://comminfo.rutgers.edu/~aspoerri/Teaching/InfoTech/Lectures.html#week11

Page 3: Info + Web Tech Course

© Anselm SpoerriInfo + Web Tech Course

Recap – Credential Management

MySQL WorkbenchConnect to studentweb.comminfo.rutgers.edu

using NetID (or studentweb) credentials

Connect to MySQL using MySQL credentials

Can talk to server with MySQL database from your computer

SFTPConnect to studentweb.comminfo.rutgers.edu

using NetID (or studentweb) credentials

Can upload HTML and PHP pages to server with MySQL database

Set permissions

PHP‒ Create login_yourlastname.php file that stores MySQL credentials

so we can access MySQL from inside PHP code

Page 4: Info + Web Tech Course

© Anselm SpoerriInfo + Web Tech Course

Recap – Set Up Connection to PHP & MySQL Server

Open Filezilla and select Site created for “studentweb”

Host = “studentweb.comminfo.rutgers.edu”Select SFTP and Normal User = “yourNetIDusername” (or yourSCILSNETusername)

Password = “yourNetIDpassword” (or yourSCILSNETpassword)

Need to specify path to course folder in “Remote Site” slot in Filezilla:

/www/studentweb.comminfo.rutgers.edu/htdocs/YourCourseFolder/username

Example: YourCourseFolder = class-2012-1-17-610-550-90

When moving files to server, remember to set permissions 755

URL to test page in Browser:“http://studentweb.comminfo.rutgers.edu/YourCourseFolder/username/filename”

Example: http://studentweb.comminfo.rutgers.edu/class-2012-1-17-610-550-90

Page 5: Info + Web Tech Course

© Anselm SpoerriInfo + Web Tech Course

MySQL – Key Commands

Command Parameter(s) Meaning

ALTER DATABASE, TABLE Alter DATABASE or TABLE

BACKUP TABLE Back up TABLE

CREATE DATABASE, TABLE, Create DATABASE or TABLE

DELETE (expression with TABLE & ROW) Delete ROW from TABLE

DESCRIBE TABLE Describe the TABLE'S columns

DROP DATABASE,TABLE Delete DATABASE or TABLE

INSERT (expression with data) Insert data

RENAME TABLE Rename TABLE

SHOW (too many items to list) List item's details

UPDATE (expression with data) Update an existing record

USE database Use database

MySQL Resource: http://dev.mysql.com/doc/refman/5.5/en/index.html

Page 6: Info + Web Tech Course

© Anselm SpoerriInfo + Web Tech Course

Recap – MySQL & PHP: Process Steps

The process of using MySQL with PHP:

1. Connect to MySQL mysql_connect

2. Select the database to use mysql_select_db

3. Build a query string $query = "SELECT * FROM tableName";

4. Perform the query $result = mysql_query($query);

5. Retrieve the results and output it to a web page

– $rows = mysql_num_rows($result);

– $row = mysql_fetch_row($result);

6. Repeat Steps 3 to 5 until all desired data retrieved.

7. Disconnect from MySQL (usually done automatically)

Page 7: Info + Web Tech Course

© Anselm SpoerriInfo + Web Tech Course

Class Demos of MySQL & PHP

Steps 0-4 last lecture– login.php

– Connect to Your MySQL Database

– Run Query

– Display Results

– Display Results (faster)

Steps 5-10 this lecture– Form with Radio Buttons and Validate with JavaScript

– Use $_POST and PHP to Display $_POST

– Create MySQL Table for Data from Form with Radio Buttons

– Add Form Data to MySQL table (use MySQL Workbench to monitor)

– Use PHP to Display Data in MySQL Table

– Compute Average Score and Control Display with CSS

Page 8: Info + Web Tech Course

© Anselm SpoerriInfo + Web Tech Course

Recap – MySQL & PHP: login.php for your database – Step 0

Create login_lastname.php file

<?php // login_lastname.php make sure to place in personal folder

$db_hostname = 'localhost';

$db_database = 'YourCourseFolder_NetIDusername';

$db_username = 'yourMySQLusername';

$db_password = 'yourMySQLpassword';

?>

Upload to Server, Set Permissions, View Source in Browser

Now that you have login.php file saved, you can include it in any PHP files that will need to access the database by using the require_once statement.

Page 9: Info + Web Tech Course

© Anselm SpoerriInfo + Web Tech Course

Recap – MySQL & PHP: Connect to Database – Steps 1-4

<?php // query.php

require_once 'login_lastname.php';

$db_server = mysql_connect($db_hostname, $db_username, $db_password);

if (!$db_server) die("Unable to connect to MySQL: " . mysql_error()); 

mysql_select_db($db_database) or die("Unable to select database: " . mysql_error());

$query = "SELECT * FROM classics";

$result = mysql_query($query);

if (!$result) die ("Database access failed: " . mysql_error());

$rows = mysql_num_rows($result);

for ($j = 0 ; $j < $rows ; ++$j){$row = mysql_fetch_row($result);echo 'Author: ' . $row[0] . '<br />';echo 'Title: ' . $row[1] . '<br />';echo 'Year: ' . $row[3] . '<br />';echo 'ISBN: ' . $row[5] . '<br /><br />';

?>

Page 10: Info + Web Tech Course

© Anselm SpoerriInfo + Web Tech Course

Form & JavaScript – Step 5

Create Form with sets of Radio Buttons – Want to collect feedback about tools covered in class

– Need to assign name to each set of radio buttons

– Name used as attribute in MySQL database

– Use “tool1”, “tool2”, … to have flexibility

Validate Form with JavaScript– Want to make sure radio buttons selected … what to use?

– Use JavaScript function “radioButtonSelected”

– Create JavaScript function “validate”

Page 11: Info + Web Tech Course

© Anselm SpoerriInfo + Web Tech Course

Form & HTML5 Validation – Step 5

Create Form with sets of Radio Buttons – Want to collect feedback about tools covered in class

– Need to assign name to each set of radio buttons

– Name used as attribute in MySQL database

– Use “tool1”, “tool2”, … to have flexibility

Validate Form using HTML5– Need to use HTML5 doctype and encoding

– Want to make sure radio buttons selected … how to leverage HTML5?

– Include required in each input of type="radio"

<input type="radio" name="tool1" value="1" required />

Page 12: Info + Web Tech Course

© Anselm SpoerriInfo + Web Tech Course

$_POST

$_POST = All User Input– Web server bundles up all user input and puts it into an array

named $_POST.

$_POST is an associative array– Each field has an element in the array named after that field.

<form action="showResults.php" method="post">

<input type="radio" name="tool1">

</form>

in showResults.php

$tool1 = $_POST['tool1'];

Page 13: Info + Web Tech Course

© Anselm SpoerriInfo + Web Tech Course

$_POST and PHP – Step 6

Create PHP page to Display $_POSTSimple, but hand-coded way to display $_POST

– echo ("Info Tech Tool 1 = " . $_POST['tool1']);

Flexible way to display $_POST

– Create PHP function to display $_POST contents

foreach ($postarray as $tool => $score)

{

echo "$tool" . " = " . "$score<br/>";

}

Remember to use: formTest_step6.html and showResults_step6.phpas well as to update action in form and update reference for login_username.php

Page 14: Info + Web Tech Course

© Anselm SpoerriInfo + Web Tech Course

Create “tools” SQL Table – Step 7

Database = yourusername has been created for you

USE DatabaseToUse; // tells SQL which database to use

Note: if YourCourseFolder contains – hyphens then will trigger SQL error

You can use the grave mark ` to escape names that contain reserved lexical symbols such as - Example: USE `class-2012-1-17-610-550-90_studentUsername`;

Workaround in MySQL Workbench: Double-click icon of database to use in left-hand panel below “Schemas” to tell SQL which database to use.

CREATE TABLE tools (tool1 INT UNSIGNED,tool2 INT UNSIGNED,id INT UNSIGNED NOT NULL AUTO_INCREMENT KEY)ENGINE MyISAM;

DESCRIBE tools;

// Delete table if want to start fresh

DROP TABLE tools;

Page 15: Info + Web Tech Course

© Anselm SpoerriInfo + Web Tech Course

Connect to MySQL Database and Add Form Data – Step 8

Connect to MySQLSee Step 1 make sure to link to your login file

Make Sure Form Data Specified

isset($_POST['tool1'])

Sanitize Form Datafunction mysql_fix_string($string){ if (get_magic_quotes_gpc()) $string = stripslashes($string); return mysql_real_escape_string($string);}

Add Form Data to Table = tools test in MySQL Workbench

$query = "INSERT INTO tools (tool1, tool2) VALUES" . "('$tool1', '$tool2')";

Remember to use: formTest_step8.html and showResults_step8.phpas well as to update action in form and update reference for login_username.php

Page 16: Info + Web Tech Course

© Anselm SpoerriInfo + Web Tech Course

Display Table Contents – Step 9

Display Contents of Table = “tools”

See Steps 2-4

Make sure to link to your login file

Make sure to specify to use tools table

$query = "SELECT * FROM tools";$result = mysql_query($query, $db_server);if (!$result) die ("Database access failed: " . mysql_error());$rows = mysql_num_rows($result);for ($j = 0 ; $j < $rows ; ++$j){

$row = mysql_fetch_row($result);// need to consult table to identify correct index for fieldecho ' Tool 1: ' . $row[0] . '<br />';echo ' Tool 2: ' . $row[1] . '<br /><hr>';

}

Remember to use: formTest_step9.html and showResults_step9.phpas well as to update action in form and update reference for login_username.php

Page 17: Info + Web Tech Course

© Anselm SpoerriInfo + Web Tech Course

Display SUM and Average Scores using CSS – Step 10

Retrieve SUM data $query = "SELECT SUM(tool1), SUM(tool2) FROM tools";

Display SUM and Average$firstrow = mysql_fetch_row($result);

echo ' SUM for Info Tool 1: ' . $firstrow[0] . ' and AVE = ' . number_format($firstrow[0] / $rows, 2) . '<br />';

CSS class controls display of SUM and AverageDefine CSS class in style tag inside of head tag

Need to escape \ the quotation marks

echo '<div class=\'resultStyle\'>';

Remember to have closing tag </div>

Remember to use: formTest_step10.html and showResults_step10.phpas well as to update action in form and update reference for login_username.php

http://classes.comminfo.rutgers.edu/2010-1-550/aspoerri/formTest.html

Page 18: Info + Web Tech Course

© Anselm SpoerriInfo + Web Tech Course

Exercise 5 – Next Steps

Once step10 works, need to prepare to be able to track 10 tools

‒ “tools” table needs fields for tool1, …, tool10

‒ Drop existing “tools” table

‒ Create new “tools” table with the needed fields(modify SQL query in step 7)

‒ Form needs to be modified to collect data for 10 tools‒ validate function needs to be modified so that fields

for 10 tools are checked

‒ PHP code needs to be modified to examineand record, retrieve & display data from MySQL table for 10 tools

Page 19: Info + Web Tech Course

© Anselm SpoerriInfo + Web Tech Course

Reminders

Watch out

‒ Spelling Errors

‒ Filename Errors login.php action=“file.php”

‒ Missing Closing " or ) or }

‒ Missing ;

‒ Missing Permissions

‒ Saved in Wrong Location on Server

Check Easy Things First