Upload
charlie-love
View
386
Download
2
Embed Size (px)
DESCRIPTION
My slides from Education Scotland's Computing Science Conference on 29th May.
Citation preview
Software development using Server-side scripting
• an integrated approach to Higher Computing Science.
• approaches to increase teaching time• reduce the assessment • strategies for integrated delivery blending
components of the SDD and ISDD units• use contemporary web technologies:
Apache/Mysql/PHP/JavaScript
Higher Computing Science
Software Design and
Development
Information Systems Design
and Development
Assessment
Assessment
Information Systems Design
and Development
Software Design and Development Integrating the delivery of
units using a server side scripting language
will increase teaching time and decrease time take for assessment
Get *AMP on your computers
• Education Scotland Blog post with information• http://glo.li/edscot-amp
• MAMP• EasyPHP• XAMMP• WAMP• etc.
Building solutions
• Agile methodologies • Interative prototyping • Design->Build->Test->Repeat• Working code• Limited Feature Set -> Expanded Feature Set
sub-programs/routines
defined by their name and arguments (inputs and outputs)• PHP uses functions which typically return a
single value.• Use of ¶meter passes values by
reference to the PHP function (essentially creating a subprogram)
including parameter passing (value and reference, formal and actual)
function read_users( $file, &$user_id, &$user_name, &$user_image, &$password_string, $index ) {
$textline = fgets($file); $textarray = explode(',',$textline);$user_id[$index] = trim($textarray[0])$user_name[$index] = trim($textarray[1]); $user_image[$index] = trim($textarray[2]);$password_string[$index] = trim($textarray[3]);
}
methods
• methods are subroutines associated with an object
• they have access to the objects data.• PHP includes support for object oriented
programming• Use the MySQL API to show methods on
database objects
If ($result = $mysqli->query("SELECT * FROM user WHERE user_id = '" . $login_user_id . "'")) { $obj = $result->fetch_object();$user_id = $obj->user_id;$user_name = $obj->user_name;$user_image = $obj->user_image; $result->close();}
Data types and structures• string • numeric
(integer and real)• Boolean
$mysting=“Some text”;$integer = 12;$real =15.232;$is_set = true;
• Records - Implement as an array of objectsclass Owner{
public $year; public $measure; public $month; public $name;
}$names = array('Lars', 'James', 'Kirk', 'Robert');
for ($i = 1 ; $i <= 3 ; $i++) {
$owner = new Owner(); $owner->year = 2012; $owner->measure = $i; $owner->month = rand(1,12); $owner->name = array_rand($names); $owners[] = $owner;}
• sequential files (open, create, read, write, close) • fopen(filename, mode) – Creates and/or opens file– Mode is read and/or write and moves file pointer to
start or end of file.– http://www.php.net/manual/en/function.fopen.php
• fwrite($file, $textline);– $file is the file handle from opening the file– $textline is the line of text to be written
• fgets($file)– Reads line of text from the file
• fclose($file) – close file
Standard Algorithms
• input validation (server side) / server-side validation of online form data – Set up form in html– Process and validate form on submission– Processing happens at server– User interaction is required to create validation
loop
<?php$username="”;if (isset($_GET[’username'])) {
$error_found = false;$message = "username is accepted”;$username = $_GET[’username’];if(strlen($username) < 8 ) {
$error_found = true;$message = “Enter 8 or more characters”;
}echo "<div>" . $message . "</div>";
} if (($error_found) || (!isset($error_found))) { //show form if err found or 1st visit
?><form action="<?php echo $_SERVER[‘PHP_SELF’];?>" method="get"><input type="text" name="username" value="<?php echo $username;?>"><input type="submit" value="Submit" name="update"/></form>
<? php } ?>
Linear search• linear search function linear_search($needle, $haystack) {
for($i = 0; $i < count($haystack); $i++) {if ($needle == $i)
return true;}return false;
}
$haystack = array(1,2,3,4);$needle = 3;$found = linear_search($needle, $haystack);
Finding minimum and maximumInbuilt max and min functions do it out of the box
function findmax($array_of_values) {$current_max = $array_of_values[0];for($i = 1; $i < count($array_of_values); $i++) {if ($array_of_values[$i] > $current_max) {$current_max = $array_of_values[$i];}}return $current_max;
}
$my_array= array(12,25,23,14);$biggest_number = findmax($my_array);
count occurrences function count_values($val_to_count, $array_of_values) {
$counter = 0;for($i = 0; $i < count($array_of_values); $i++) {
if ($array_of_values[$i] == $val_to_count) {$counter++;
}}return $counter;
}
$my_array= array(12,25,23,14,72,83,12,12,63,25,14);$count_of_values = count_values(12, $my_array);
Coding (ISDD)
• scripting (database/web pages) • client-side scripting• server-side scripting• server-side validation of online form data
Structures and Links (Database)• MySQL • phpMyAdmin - Database front end– Can be used to generate SQL for coding– Web based – simplifies database management
Structures and Links (Web)• PHP, HTML, CSS, JavaScript all play well together<html> <head> <title><?php echo $title;></title> <style>
hr {color:sienna;} p {margin-left:20px;} body {background-image:url(“bg.gif");}
</style> <script> function show_message() {
alert(“hello there”); } </script> <body onLoad=“show_message();”>….
PHP and MySQL
//connect to the database using mysqli API$mysqli = new mysqli("localhost", "root", "root", ”mydatabase");if ($mysqli->connect_errno) {
echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
die;}
Run a query and retrieve results
if ($result = $mysqli->query("SELECT * FROM my_table WHERE field_id = '" . $field_id . "'")){
$obj = $result->fetch_object();$my_field_id = $obj->field_id;$my_field1 = $obj->field1;$my_field2 = $obj->field2;
/* free result set */ $result->close();}
Write to the database$sql = mysqli('localhost','user','password','database');
$name = $_POST['name'];$age = $_POST['age']; $email = $_POST['email'];
$query = $sql->prepare("INSERT INTO `tablename` VALUES ('?','?','?');");
$query->bind_param("sis",$name,$age,$email); $query->execute();
Relationships in MySQL
Implemented using queries
SELECT * FROM table1, table2 WHERE table2.id = table1.hid
id field
12 Harry
13 Sally
14 Joe
15 Kirsty
id field hid3232 sweets 123233 candy 123234 chocolate 123235 popcorn 133236 soup 13
table1 table2
Search in MySQL
Implemented using queries
SELECT * FROM table1, table2 WHERE table1.id = 12;
SELECT * FROM table1, table2 WHERE table1.field LIKE “%Joe%”
AND WHERE table2.id = table1.hid ;
Assessment
• You need to show that the candidate has achieve all the Assessment Standards
• SDD Outcome 2 and ISDD Outcome 1 can be assessed in the same exercise
• Alternative evidence can be gathered as part of learning and teaching
• SDD Outcome 1 for part of this as well
Higher Assignment
• Assignment 1: Coding + Database (Diving Championship – available now)
• Assignment 2: Server Side Scripting – File handling– Linear Search– Server side scripting– Online database integration
• Assignment 3: Client Side Scripting– CSS– Browser based