Data load og udtræk. 2. iteration: implmentation (test af backend) PHP mysql. Loade og parse XML (SimpleXML, Xpath) Filhåndtering i PHP JSON



Relaterede dokumenter
Data lagring. 2. iteration (implement backend)

PHP 3 UGERS FORLØB PHP, MYSQL & SQL

HTML, PHP, SQL, webserver, hvad er hvad??

Loginsystem (med MySQL)

PHP Snippets. De små korte. Skrevet af Daniel Pedersen

PHP Crash course. Databaser

Design Diaries.

Hack of the Month opgave 2

Denne rapport er skrevet af:

Bemærk! Et PHP script har kun brug for at forbinde én gang til databaseserveren. Det kan så sagtens udføre flere kommandoer vha. denne forbindelse.

Dynamisk PHP design OPDATERET

Reeksamen, DSDS, forår 2008

Eksamen, DSDS, efterår 2007

Indholdsfortegnelse Databaser og PHP... 3 Opgave... 4 Opgave... 5 Opgave... 6 Sidste opgave er en lille gæstebog... 7 Kilder og nyttige links:...

PHP guide af Daniel Pedersen

The Design Diaries Project 3 2. Semester. Blog om designprincipper

Eksamen, DSDS, forår 2009

The Design Diaries PHP projekt

Loginsystem med PHP4, klasser, sessions og MySQL database

MySQL C API. Denne artikel beskriver hvordan man bruger MySQL C API. Der er beskrivelse af build med forskellige compilere.

PROJEKT 3. The Design Diaries. LINK TIL BLOG: Af Mikkel Borg Svendsen & Sebastian Frank MUL B

Som sagt kræves der helst lidt viden om OOP hvis man virkelig vil lærer noget, og ikke bare lave copypaste

Interaktionsudvikling

Terese B. Thomsen 1.semester Formidling, projektarbejde og webdesign ITU DMD d. 02/

Dagens program. Domæner. change log- screen shots hver gang I har arbejdet med themet. Arkitekturen bag en wp blog. Hvad er widgets.

A11: Last Year s Exam

Responsivt Design - DMAA0213. Afgangsprojekt DMAA0213

Software Projekt NoSQL vs RMDB

Rigtig SQL Programmering

Programmering I Java/C#

Den forudsætter kendskab til C++ og lidt kendskab til SQL og MySQL C API.

Abstrakte datatyper C#-version

Introduktion til ActionScript, fortsat

Software Construction 1 semester (SWC) Spørgsmål 1

Webservice til upload af produktionstilladelser

Eksamen, DSDS, efterår 2008

Start på javascript. Denne guide er oprindeligt udgivet på Eksperten.dk. Skrevet den 03. Feb 2009 af webstuff I kategorien Programmering / JavaScript

1.1 Formål Webservicen gør det muligt for eksterne parter, at fremsøge informationer om elevers fravær.

Begrynder til at lave log ind system

I mit script tager jeg højde for det problem ved, at gemme et unikt tal mellem 0-9 på 6 cifre og derved vil de så blive vist som 2 online.

applikation----x----odbc driver manager----foobar ODBC driver----foobar database

Java Klasse nedarvninger

Udvikling af DOTNET applikationer til MicroStation i C#

Database for udviklere. Jan Lund Madsen PBS10107

Da jeg selv bruger Windows, så vil programmer osv. være til Windows, og beskrevet ud fra en Windowsbrugers

/05/2013 Tilføjet dokumentation af bvn input for GetEngagementDetailed

Emner. Baggrund Flash s historie, udbredelse, scene og anvendelse.

Hvorfor skal vi bruge objekt orienteret databaser?

PHP Pagination. Denne guide er oprindeligt udgivet på Eksperten.dk. Skrevet den 01. May 2011 af dab93 I kategorien Programmering / Andre

CFunding-IT. Web DB Multimediedesigner 3. Semester Gruppe 15

Procesbeskrivelse - Webprogrammering

PHP Quick Teknisk Ordbog

Listen over reserverede ord er meget lang, men de væsentligste vil jeg beskrive her i denne artikel:

Software Construction 1. semester (SWC) januar 2014 Spørgsmål 1

DM507 Algoritmer og datastrukturer

Projekt 3: Interaktionsudvikling 11/04.14

b) Udvid din implementation af forme til at understøtte.equals. To objekter af samme form er ens hvis de har samme værdier i felterne.

Databaseadgang fra Java

Webkorpora: Yahoo API og perl

Indholdsfortegnelse. Rasmus R. Sørensen, Christina Svenstrup og Lasse Bager 1

Gæstebog med validering opbygget med MySQL

Eksamen, DSDS, forår 2008

LESSOR-5. Inquiry (teknisk beskrivelse) Tilgængelighed for andre systemer

23. maj 2011 Version 3.0 Sådan byder du ind på en SKI-rammeaftale via udbudssystemet ETHICS

DRONNINGER (QUEENS) Opgave 1

En Kort Introduktion til Oracle

Nintex Workflow UK/DK

ELEKTRONISK INDBERETNING BØRNEDATABASEN VIA DGWS 13/ VERSION 1.02

Introduktion til ActionScript

OIOREST webservice design. Guideline til design af REST-baserede webservices. Udgivet af: IT- & Telestyrelsen

Derfor vil jeg bygge dette eksempel på een table hvor der kan tilkyttes personer til ALLE noder og der kan tilføjes et vilkårligt antal niveauer

Website sikkerhed SQL Injections og mere...

Databasesystemer. IT Universitetet i København 16. januar 2006

Denne artikel gennemgår kort nogle mulighederne for brug af XML i ASP. Det sker ved brug af eksempler. Eksemplerne vil være i VBS.

I denne artikel, vil der blive gennemgået de grundlæggende PHP-funktioner, såsom udskrift til skærmen, tid og dato og if-sætningen.

Værktøjer fra værktøjskassen. Søren Breddam, Stevns Kommune

Open Data. Geo Fyns Dataportal

Databasesystemer. IT Universitetet i København 7. juni 2005

Løsningsforslag Skriftlig eksamen 5. januar 2011

DESIGN. Blog: Portfolioer: CPH-mails:

Eksamensopgaver datalogi, dlc 2011 side 1/5. 1. Lodtrækningssystem

Dynamisk hjemmeside: NeuTravel

Grænseflade til afhentning og indberetning af prøvekarakterer i dansk og matematik på Optagelse.dk

Webserverprogrammering

Ordbøgerne.dk. Navne: Andreas Foldager og Rasmus Bjerring Pedersen Fag: IT B Lærer: Karl Bjarnason Afleveringsdato:

ODIN-webservice ændringer release 2010 v2.0

The Design Diaries. Link til blog

Eksempel på en database: studenter, kurser, eksamener

Introduktion til OPC Access

Database tips. Den forudsætter lidt kendskab til SQL men er for mindre erfarne. Denne guide er oprindeligt udgivet på Eksperten.dk

Buildvejledning (Release, patch og testversion)

Algoritmer og invarianter

Log ind med PHP. Denne guide er oprindeligt udgivet på Eksperten.dk. Skrevet den 09. May 2011 af dab93 I kategorien Programmering / Andre

Projekt: Database. Multimedia Design: Semester 3 - projekt 01. Sabine Larsen cph-sl176@cphbusiness.dk. Anastasia Keller cph-ak186@cphbusiness.

Eksamens rapport Informationsteknologi B

BRP Kursusintroduktion og Java-oversigt

Øvelse 9. Klasser, objekter og sql-tabeller insert code here

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 3

Transkript:

Data load og udtræk 2. iteration: implmentation (test af backend) 1 PHP mysql Loade og parse XML (SimpleXML, Xpath) Filhåndtering i PHP JSON 2

Data udtræk PHP mysql: Processen 1. Forbind til MySQL server 2. Vælg database 3. Byg query string 4. Send query 5. Hent resultat og vis data 3 <?php $hostname='localhost'; $username='root'; $password='root'; Login script $connection = mysql_connect($hostname,$username,$password); if(!$connection) { print("failed to establish connection to mysql server!"); exit();?> Sikkerhed. Genbrugelighed. 4

<?php require_once 'connect.php'; Load login script med include el. require?> //Select the database $db = mysql_select_db('mydb'); //Run the query $response=mysql_query('select * FROM users'); if(!$response) { print("query Error: ".mysql_error()); mysql_query() returnerer en speciel datatype (resource) mysql_error() returnerer en fejlmeddelelse fra databasen (sidste kald) 5 Indkapsler query i en metode så den kan kaldes med nye queries: function query($database, $querystr){ $db = mysql_select_db($database); //Run query $response=mysql_query($querystr); if(!$response) { print("query Error: ".mysql_error()); return $response; 6

MySQL resource data Metoder der anvender resource data mysql_fetch_row mysql_fetch_array mysql_fetch_assoc mysql_fetch_field mysql_fetch_object mysql_fetch_lengths mysql_set_charset mysql_result (læs om alle metoderne: http://dk.php.net/manual/en/ref.mysql.php) 7 mysql_fetch_row <?php include 'query.php'; $result = query("demo","select * FROM users"); while($row = mysql_fetch_row($result)){ echo $row[0]. ': '. $row[1] ;?> 8

Array datatypen En beholder til en samling variable Numeric Array: værdier er knyttet til et index nummer. Tilføje et element: $my_array[]="jacob"; 0 1 2 Hugo Kasper Mads Associative array: en værdi er knyttet til hvert index. Tilføje et element: $my_array[ moderator ]="Jacob"; admin edit read Hugo Kasper Mads 9 mysql_fetch_array <?php include 'query.php'; $result = query("demo","select * FROM users"); while($array = mysql_fetch_array($result,mysql_both)){ echo $array[0]. ' : '. $array['name'] ;?> Dette er ikke nævneværdigt langsommere end fetch_row metoden 10

mysql_fetch_object <?php include 'query.php'; $result = query("demo","select * FROM users", "array"); while ($object = mysql_fetch_object($result)) { echo $object->id. ': '. $object->name;?> 11 PHP Variable i query "SELECT * FROM users WHERE id='$id'" "SELECT". $field." FROM users WHERE id='$id'" 12

Strukturer koden function getusername($id){ [...] function displayusername($id){ $result = getusername($id); [...] displayusername(2); function getproducts($category){ [...] function displayproducts($category) { $result = getproducts($category); [...] displayproducts(); displayproducts("cat2"); 13 PHP og XML: Processen 1. load XML filen 2. find navnet på det første element 3. skriv et loop, der kører for hver childnode 4. output element-navn og data for hver childnode 14

SimpleXML en klasse i php til at loade og læse XML getname() children() attributes() <node attribut1="foo" attribut2="bar" > <childnode> </childnode> <childnode> </childnode> <childnode> </childnode> </node> 15 Simpelt XML dokument test.xml <?xml version="1.0" encoding="iso-8859-1"?> <note> <to>tove</to> <from>jani</from> <heading>reminder</heading> <body>don't forget me this weekend! </body> </note> 16

Load XML som string og konverter til XML: $xmlstr = file_get_contents("test.xml"); $xml = simplexml_load_string($xmlstr); Load en XML fil som XML: $xml = simplexml_load_file("test.xml"); Variablen $xml er instans af SimpleXMLElement klassen. Load ved at instansiere SimpleXMLElement: $xml = new SimpleXMLElement("test.xml",null,true); 17 Parse data i SimpleXMLElement objekter Relativt: $xml->getname(),$xml->children() Absolut: {$xml->body->content 18

Parse attributter Absolut: {$xml['lan'] Relativt: $xml->attributes() 19 test2.xml Komplex XML <?xml version="1.0" encoding="iso-8859-1"?> <note att1="foo" att2="bar" lan="english" > <to>tove</to> <from>jani</from> <heading>reminder</heading> <body> <content>don't forget me this weekend!</content> <footer><contact>contact me@domaine.com</contact> <disclaimer>lorem ipsum...</disclaimer></footer> <item>some item</item> </body> <date>03/09/10</date>> </note> 20

Rekursiv metode 1) Sørg for at der er en udvej (exit condition) - en del af metoden kan beregnes uden et nyt rekursivt kald. 2) Hvert rekursive kald skal være forskelligt fra det forrige. 3) Tro på at det virker :) pseudokode: function traverse_dir($node) { loop through array foreach node as $subnode { do something with $subnode traverse_dir($subnode) 21 Rekursiv parsing <?php $xml = simplexml_load_file("test.xml"); displaychildrenrecursive($xml); function displaychildrenrecursive($xmlobj,$depth=0) {?> foreach ($xmlobj->children() as $child) { echo $child->getname().': '.$child; displaychildrenrecursive($child,$depth+1); $child sendes med som argument i det rekursive kald 22

Xpath XPath: sprog til at søge efter bestemte elementer i et XML dokument <a> <b> <c>text</c> <c>stuff</c> </b> <d> <c>code</c> </d> </a> $result = $xml->xpath('/a/b/c'); Firkantede paranteser bruges til at knytte prædikater til en query: $result = $xml->xpath('/a/b/c[1]'); 23 Xpath syntax Tutorial til Xpath: http://www.w3schools.com/xpath/default.asp 24

Tilgå dynamisk data fra en textfil $fh = fopen("textfile.txt", 'r'); $line = fgets($fh); $characters = fread($fh,filesize ("textfile.txt")); $fh = file_get_contents("textfile.txt"); 25 tekst vs. XML vs. Database Lagringstype Fordele Ulemper tekstfil let, enkelt og intuitivt utilstrækkeligt ved større kompleksitet, sandsynlighed for fejl XML relativ enkelthed, genkendelighed, selvdokumenterende, læsbart, stringent syntax og parsing. mange ord, redundant, fylder meget, bruger meget båndbredde, svært at parse ujævne strukturer. MySql hurtigt at loade, skal ikke parses, reducerer redundans, konsistent, sikkerhed. svært at læse og editere 26

Data fra webservices Det mest almindelige responseformat er XML og JSON JSON = Javascript object Notation Et tekst format/serialiseringssprog, der bygger på universelle datastrukturer som Objekter og arrays. 27 { Et JSON Eksempel "type":"user", "count":1, "results": [ { "user_name":"testusername", "user_id":123456, "url":"http:\/\/www.etsy.com\/profile.php?user_id=123456", "image_id":78910, "image_url_25x25":"http:\/\/ny-image0.etsy.com\/iusa_25x25.78910.jpg", "city":"walla Walla, WA" ], "params": { "user_id":123456, "detail_level":"low", "type":"user" 28

{ JSON:Eksempel "type":"user", "count":1, "results": [ { "user_name":"testusername", "user_id":123456, "url":"http:\/\/www.etsy.com\/profile.php?user_id=123456", "image_id":78910, etsyresponse:object type:string count:int params:object "image_url_25x25":"http:\/\/ny-image0.etsy.com\/iusa_25x25.78910.jpg", "image_url_30x30":"http:\/\/ny-image0.etsy.com\/iusa_30x30.78910.jpg", "image_url_50x50":"http:\/\/ny-image0.etsy.com\/iusa_50x50.78910.jpg", user_id:int "image_url_75x75":"http:\/\/ny-image0.etsy.com\/iusa_75x75.78910.jpg", detail_level:string "join_epoch":1229379928.06, "city":"walla Walla, WA" ], "params": { results:array "user_id":123456, "detail_level":"low", 29 JSON:php parser json_decode ($json) $response = json_decode($json); echo $response->results[0]->city; 30

Øvelser Jvf. øvelser i sidste uge: Sørg for at I har en god (normaliseret) database med masser af test data. Opret et sikkert login script, sådan at forbindelse til databasen kun oprettes ét sted. Planlæg: Find ud af hvilke data der skal hentes ud af jeres database forskellige steder i systemet. (Fx - vis alle produkter, vis alle produkter inden for en given kategori eller vis alle brugernavne ). Lav gerne en liste, eller notér datakravene på en ny version af jeres sitemap. Skriv en query for hvert datakrav I har i jeres system. Det kan være en god idé at indkapsle hver query i en metode, så querien kan kaldes uvilkårligt. Brug en fetch metode til at hente resultatet og udskriv for at tjekke at det er den rigtige data I har fået fat i. Kig på Jeres wireframe. Skriv statisk interface data (copy, menupunkter, labels) i en tekstfil eller et XML dokument (hvis I ikke allerede har gjort det) og test at I kan få fat i det med PHP. 31 Ressourcer Tutorial om SimpleXML: http://debuggable.com/posts/parsing-xml-using-simplexml: 480f4dfe-6a58-4a17-a133-455acbdd56cb XPATH: http://www.w3schools.com/xpath/xpath_syntax.asp JSON: http://www.json.org/ 32