Help:COAP-3180/week5: Difference between revisions
Jump to navigation
Jump to search
Line 42: | Line 42: | ||
/* Made by Daniel K. Schneider, TECFA Jan 2010. This is freeware | /* Made by Daniel K. Schneider, TECFA Jan 2010. This is freeware | ||
Will connect to a MySQL database, execute an SQL statement and | Will connect to a MySQL database, execute an SQL statement and | ||
then return the result as valid XML | then return the result as valid XML. | ||
*/ | */ | ||
error_reporting(E_ALL); | error_reporting(E_ALL); | ||
Line 48: | Line 48: | ||
// --------------------------- Configuration section | // --------------------------- Configuration section | ||
// Fill in according to your db settings | // Fill in according to your db settings (example is for a local and locked "play" WAMP server) | ||
// Make sure to keep the ; and the "" | // Make sure to keep the ; and the "" | ||
$host = "localhost"; | $host = "localhost"; | ||
Line 54: | Line 54: | ||
$pass = ""; | $pass = ""; | ||
$database = "exam"; | $database = "exam"; | ||
// Replace by a query that matches your database | // Replace by a query that matches your database | ||
$SQL_query = "SELECT * FROM question,response_item WHERE question.id = response_item.id_question"; | $SQL_query = "SELECT * FROM question,response_item WHERE question.id = response_item.id_question"; | ||
// Optional: add the name of XSLT file. | |||
$xslt_file = ""; | |||
//$xslt_file = "mysql-result.xsl"; | |||
// -------------------------- no changes needed below | // -------------------------- no changes needed below | ||
Line 70: | Line 68: | ||
$result = mysql_query ($SQL_query, $DB_link) or die ("Data not found. Your SQL query didn't work... "); | $result = mysql_query ($SQL_query, $DB_link) or die ("Data not found. Your SQL query didn't work... "); | ||
// we produce XML | |||
header("Content-type: text/xml"); | |||
$XML = "<?xml version=\"1.0\"?>\n"; | |||
if ($xslt_file) $XML .= "<?xml-stylesheet href=\"$xslt_file\" type=\"text/xsl\" ?>\n"; | |||
// root node | // root node | ||
$XML .= "<result>\n"; | |||
// rows | // rows | ||
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { | while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { | ||
$XML .= "\t | $XML .= "\t<row>\n"; | ||
$i = 0; | $i = 0; | ||
// cells | // cells | ||
foreach ($row as $cell) { | foreach ($row as $cell) { | ||
// Escaping illegal characters | // Escaping illegal characters - not tested actually ;) | ||
$cell = str_replace("&", "&", $cell); | $cell = str_replace("&", "&", $cell); | ||
$cell = str_replace("<", "<", $cell); | $cell = str_replace("<", "<", $cell); | ||
Line 101: | Line 87: | ||
$cell = str_replace("\"", """, $cell); | $cell = str_replace("\"", """, $cell); | ||
$col_name = mysql_field_name($result,$i); | $col_name = mysql_field_name($result,$i); | ||
// creates the "<tag>contents</tag>" representing the column | // creates the "<tag>contents</tag>" representing the column | ||
$XML .= "\t\t" | $XML .= "\t\t<" . $col_name . ">" . $cell . "</" . $col_name . ">\n"; | ||
$i++; | $i++; | ||
} | } | ||
$XML .= "\t | $XML .= "\t</row>\n"; | ||
} | } | ||
$XML .= "</result>\n"; | |||
// output the whole XML string | |||
echo $XML; | echo $XML; | ||
?> | ?> | ||
</source> | </source> | ||
Revision as of 22:16, 8 February 2010
Week 5 - COAP 3180
ATTENTION: Monday week 6 class is cancelled. Replacement has to be negociated..
Topics Covered
- Homework and mid-term exam
- Quick feedback
- Termproject
- Each student should now have a "must-have" and "nice-to-have" list of features
- Demonstration of the Wordpress extension "Formidable"
- Crashcourse on XML
- XML - The formalism
- XML - where is it used
- XSLT - XML transformations
- XPath - identify elements in a tree (used by XPath and XQuery)
Classroom activities
(1) Term project
- Must have and nice to have features
- Remark: There must an embedded "database", i.e. a data-collection / presentation module
(2) Wordpress
- Fire up MoWes and enter wordpress as admin
- Install "Formidable" if not already done so
- Best method is to click on Plugins in the Dashboard
- Else, use the "manual" method described by its developer.
(3) Produce XML output from an SQL query with php
- copy this code to a mowes/web/ directoty
- call it for example: mysql-to-xml.php
- configure and test
<?php
/* Made by Daniel K. Schneider, TECFA Jan 2010. This is freeware
Will connect to a MySQL database, execute an SQL statement and
then return the result as valid XML.
*/
error_reporting(E_ALL);
// --------------------------- Configuration section
// Fill in according to your db settings (example is for a local and locked "play" WAMP server)
// Make sure to keep the ; and the ""
$host = "localhost";
$user = "root";
$pass = "";
$database = "exam";
// Replace by a query that matches your database
$SQL_query = "SELECT * FROM question,response_item WHERE question.id = response_item.id_question";
// Optional: add the name of XSLT file.
$xslt_file = "";
//$xslt_file = "mysql-result.xsl";
// -------------------------- no changes needed below
$DB_link = mysql_connect($host, $user, $pass) or die("Could not connect to host.");
mysql_select_db($database, $DB_link) or die ("Could not find or access the database.");
$result = mysql_query ($SQL_query, $DB_link) or die ("Data not found. Your SQL query didn't work... ");
// we produce XML
header("Content-type: text/xml");
$XML = "<?xml version=\"1.0\"?>\n";
if ($xslt_file) $XML .= "<?xml-stylesheet href=\"$xslt_file\" type=\"text/xsl\" ?>\n";
// root node
$XML .= "<result>\n";
// rows
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$XML .= "\t<row>\n";
$i = 0;
// cells
foreach ($row as $cell) {
// Escaping illegal characters - not tested actually ;)
$cell = str_replace("&", "&", $cell);
$cell = str_replace("<", "<", $cell);
$cell = str_replace(">", ">", $cell);
$cell = str_replace("\"", """, $cell);
$col_name = mysql_field_name($result,$i);
// creates the "<tag>contents</tag>" representing the column
$XML .= "\t\t<" . $col_name . ">" . $cell . "</" . $col_name . ">\n";
$i++;
}
$XML .= "\t</row>\n";
}
$XML .= "</result>\n";
// output the whole XML string
echo $XML;
?>
(4) Edit an XML file (Wednesday)
(5) Modify an XSLT file
- Filter data with XSLT
Homework 5
Details to be announced on Wednesday ...
- Pull out data in XML format from a database
- Produce an XSLT file that will display the data (any maybe do some filtering)
- Associate the XSLT file either server-side or client side.
The instructor will provide a php file that does the extraction.
Submission Dates
- This homework is due at start of wed week 6
- Students must provide the URL (where the instructor can see the widget) in the world classroom
- Each homework counts 10% in your global evaluation. The four best homeworks will be taken into account.
Evaluation
Tips for the homework
Links and teaching materials
- Software
- A good XML editor, e.g. XML exchanger light
- Online software
- none
- Teaching materials
- XML (exam topic, must know)
- DTD tutorial (understand how to use/read a DTD only)
- XSLT Tutorial - Basics (exam topic, must know)
- XPath tutorial - basics (exam topic, must know partly)
- XQuery tutorial - basics (week 6 preview, exam topic, must know)
- PHP-MySQL tutorial -basics (in particular the section about XML output)
- PHP - MySQL - XML tutorial - basics (must be able to use the code)
- Teaching materials (older slides)
- http://tecfa.unige.ch/guides/te/files/xml-intro-edit.pdf
- http://tecfa.unige.ch/guides/te/files/xml-ns.pdf (optional)
- http://tecfa.unige.ch/guides/te/files/xslt-basics.pdf
- Optional reading
- Donald Bourret (2005). XML and Databases, http://www.rpbourret.com/xml/XMLAndDatabases.htm
- Darshan Singh, Essential XQuery - The XML Query Language, http://www.yukonxml.com/articles/xquery/
- XQuery http://en.wikipedia.org/wiki/XQuery (Wikipedia)