Help:COAP-3180: Difference between revisions
mNo edit summary |
|||
Line 63: | Line 63: | ||
* [[Wordpress installation and configuration]] | * [[Wordpress installation and configuration]] | ||
* [[SQL and MySQL tutorial]] | * [[SQL and MySQL tutorial]] | ||
* [[XML]] | |||
* [[DTD tutorial]] (understand how to use/read a DTD only) | |||
* [[XSLT Tutorial - Basics]] | |||
* [[XPath tutorial - basics]] | |||
* [[PHP-MySQL tutorial -basics]] | |||
* [[PHP - MySQL - XML tutorial - basics]] | |||
* [[XQuery tutorial - basics]] | |||
=== Other teaching resources === | === Other teaching resources === |
Revision as of 22:13, 8 February 2010
<pageby nominor="false" comments="false"/>
Introduction
Disclaimer: This is a resource page for my Spring 2010 I Web Databases course (COAP 3180) at Webster University, Geneva. This page does neither replace the official syllabus nor the information in the official learning management system (WorldClassroom/Blackboard). It allows students to navigate more efficiently through the materials in this wiki.
The program and materials are provisional and will be adjusted on a weekly basis.
Course level outcomes
At the completion of this course students will be able to:
- Add a Webpage Database to an HTML page
- Manipulate data using SQL operations
- Publish both static and dynamic data on the Web
- Convert text files to XML databases
- Be able to query XML data using XQuery
- Be able to work with relational data as XML
These outcomes defined in the syllabus can be translated to more practical outcomes:
- Use simple Web 2.0 database services and integrate it into a webpage.
- Manipulate data using SQL operations and create simple SQL databases in a DBMS.
- Understand the architecture of a simple web application (HTML client / Web server / Script / Database).
- Be able use a LAMP/WAMP software bundle and to install and to configure web applications, e.g. a CMS. This can evolve into a term project.
- Generate a very simple web application that can connect to a database management system (DBMS) though an ODBC API.
- Understand/recall XML basics, like converting text files and database output to XML, editing an XML file using a schema and displaying XML data.
- Be able to query and update XML data files and XML Databases using XQuery dand XQuery Update.
- Understand the general architecture and purpose of LDAP address and authentication servers and light-weight solutions like OpenID.
Week 1 - COAP 3180
Topics Covered
(1) Introduction
- Internet, the WWW and web databases
- Slides: http://tecfa.unige.ch/guides/te/files/webdatabases-intro.pdf (PDF)
(2) Web 2.0 vs. "traditional Internet"
- An ever increasing amount of applications are available through the Internet. Many of these applications can be shared, others are by definition "social software" (e.g. wikis, YouTube, flickr, blogs).
- Reading (for students not familiar with the "web 2.0" concept): O'Reilly Tim (2005), What is Web 2.0, better take the print version.
- Additional resources for those who want to explore this topic further: This wiki, e.g. start from the rich internet application article.
(3) Simple on-line database services
- Learn how to create and use simple tabular databases with a web 2.0 service (http://creator.zoho.com)
- Practical details are explored in class and through homework one.
Classroom activities and homework
Synopsis:
(1) Take an account with Zoho (see also below)
- http://www.zoho.com/ or directly http://creator.zoho.com
- Create a database form and view with Zoho Creator
(2) Take an account with Netvibes (see also below)
- http://netvibes.com
- Create a new page (tab)
- Import the result view from Zoho
- Export this page to the public
(3) Turn in this homework in the WorldClassroom:
- Provide the NetVibes URL
- Define the objective of this application in 2-3 sentences (including the target audience)
Homework 1
- Think about a little database (i.e. a simple list of items that have features/properties) and that you would like to put on the web. Then make a list of properties that describe such a "item".
- Examples: A list of CDs, a list things you want to sell, your favorite list of flowers
- Implement a Zoho creator database form that allows to describe each item with a few properties (fields). Make sure to select the right data type for a given kind of item.
- Add some test data to this database. Revise the database definition if needed.
- Enter some more data (at least 5 items)
- Make the Zoho "view" that displays the results public (gathered data becomes public on the web). You also can change the way data are displayed.
- If you wish, you also can make the data gathering public
- Create a public NetVibes page and import your Zoho creator widget (advanced course participants may use another environment that allows insertion of web widgets, talk to the instructor ....)
- Add an explanation using some appropriate NetVibes "text" widget, i.e. describe to the reader what your pagecast (in particular the Zoho form) is good for.
- In order to achieve better user experience, you also should add some useful extra information/widgets to the Netvibes page (or equivalent), i.e. the page cast should include the Zoho database plus the "what's this" (previous point) plus some useful extra information.
- Submit your work as assignment in the Worldclassroom. Important: Urgently consult the librarian if you can't log into this Webster on-line environment. In the submission field:
- Provide the URL
- Define the objective of this application in 2-3 sentences (including the target audience)
Remarks:
- If you prefer to remain anonymous, do not leave Name, Firstname, professional email etc. or anything that can identify you on the public page.
- Tips that help you getting this homework done are below ...
Submission Dates
- This homework is due at start of Wednesday week 2 lesson
- 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
- Quality of Zoho database: Items should be described in a useful way with respect to your objectives and the target audience. You should use appropriate data types (but don't make it too big !)
- Quality of the Netvibes pagecast (is it usable and understandable ?)
- Worldclassroom upload (short definition of the objectives and correct URL)
Tip:
- Quality is essentially related to the idea that your applications are useful to a given range of users.
- Make sure that all required elements are present
Tips for the homework
Below is a rough outline of the procdure you should follow.
(1) Leave all the needed applications open in your browser
Make sure that you are logged to both applications.
- Netvibes with your login
- Zoho: Switch to Zoho Creator
Tip: It is best to work with 3 different web browser tabs: One for Netvibes, one for Zoho, and one for this page. If necessary, ask the instructor to explain tabbed browsing...
(2) Read the Help, in particular the Quick Start Guide for Zoho
Important starting points:
- http://help.creator.zoho.com/ - The most important thing to understand about Creator is that you will have two interfaces: One for defining the database table structure (form authoring) and another for gathering data and looking at the results (the view).
- http://tour.netvibes.com/overview.php - The most important thing to understand about NetVibes is that you must find a Netvibes widget called HTML/UWA, insert it in a pagecast and then enter the Zoho widget code through the Edit button.
(3) Make a Zoho widget public
To export a widget from Zoho:
- Click on Edit this application / Share
- Tick This application is: X public
(4) Exporting Zoho widget code To get the Zoho widget code for embedding in some other place
- Click on Access this application
- Select a view from the menu to the left
- Then use the pull-down menu More Actions->Embed in your Website
- Copy/Paste the code to another web application. E.g. the HTML Netvibes widget as explained below.
(5) Configuring Netvibes and widget import
Firstly (if this isn't already the case) create a new page in Netvibes
- Then make this Netvibes page public:
- Click on the Edit button (in the Tab of the page)
- Then click on "Share this Tab" / Publish on your page.
- Make sure to write down the URL (You will have to submit it as homework)
To import a Zoho Creator application (database) into Netvibes:
- Create a HTML/UWA Widget (you can find it under "HTML" in the list of essential widgets)
- Edit the widget
- Copy/Paste the widget code from Zoho
See also the Creating websites with online services article in this wiki. It provides an overview of some easy and free online services.
Links and teaching materials
- Online software
- http://creator.zoho.com/ (Zoho creator online database)
- http://help.creator.zoho.com/ (Help entry point)
- http://netvibes.com/ (NetVibes webtop)
- http://faq.netvibes.com/ (Help entry point)
- Teaching materials
- Creating websites with online services
- Using web widgets
- Slides for the overview talk (PDF)
Week 2 - COAP 3180
Topics Covered
We will explore (concurrently) the following topics:
Web application architecture overview
- Overview of web hosting alternatives
- Application architectures / frameworks overview
- WAMP/LAMP software bundles and applications, various options
- Use of a portable WAMP architecture (Mowes)
- The three tier model
Short overview of databases
- What is a Database and how is it used in Internet applications ?
- Relational data base management systems (RDBMS) and ownership of databases
- MySQL (databases, tables and users): First contact with this RDBMS
Portalware (Content management systems / light-weight web application frameworks)
- Short overview of typical LAMP-based systems systems (and similar)
- An overview of typical installation and configuration work.
Classroom activities
Monday
(1) Mix, download and install a Mowes combo'
(a) Download the Modular Webserver System (Mowes) server
- http://www.chsoftware.net/en/mowes/mowesportable/mowes.htm (Mix and download a server).
You will need at least the following modules
- Server software
- Apache 2_SE
- MySQL 5_SE
- PHP5
- Mission critical application software (!!)
- PHPMyAdmin
- Application software
- Drupal
- Joomla
- ModX
- Wordpress
(b) Dezip the downloaded archive to drive c:\temp2
- Ask a lab assistant or the instructor if you need help with 7zip
(c) Click on Mowes.exe
- This will install the Mowes server in the directory plus install all the downloaded application software. Be patient. This may take some time.
(d) You can add other portals by downloading a new module from MOWES. Drop the file to the top-level directory and restart the mowes application.
Getting your own copy
- You may copy the whole directory to a memory stick (may take a full hour to copy). Applications will continue to work. Mowes doesn't write anything to a system directory or the registry and will adapt to a new directory structure.
- Alternatively, you can re-enact the process at home on your personal computer...
- Donwlaod again from http://www.chsoftware.net/en/mowes/mowesportable/mowes.htm
(2) A tour of the Mowes WAMP system
- The instructor will show some features of the system and relate it to an introductory talk about web applications
(3) Playing with portalware
- Use http://php.opensourcecms.com/ according to instructions
- For homework, you also should consult the portalware article
(4) Configuration of portalware (Mowes)
- Mowes packages all include the same admin login and password.
Login = admin and password = password
- You may need to figure the admin URL for each application.
Wednesday
(1) Configuration of Wordpress
- Install Wordpress (if it is not alreday present in your MOWES install !). If you have to install:
- Get the package from http://www.chsoftware.net/en/mowes/mowesportable/mowes.htm (or from the instructor)
- Save the file into the mowes top-level directory (should look like below)
18348 09-24 15:25 GPL.txt 660 09-24 15:25 Licence.txt 0 01-12 22:08 apache2 0 01-12 22:07 mowes 409600 09-24 15:25 mowes.exe 0 01-12 22:08 mysql 0 01-12 22:08 php5 wordpress.pck <- newly added Mowes package 0 01-12 22:13 www
- (re)start the server. Wordpress will be automatically installed
- Update
- Log in as admin (password = password)
- Click on the update banner to automatically update Wordpress to a latest version. (also available in Tools->Upgrade)
(2) Configure wordpress
- Change the theme
- Change the contents of the first default article, then post an article
- Remove / add links
- Add the formidable plugin (http://wordpress.org/extend/plugins/formidable/)
- This will allow you to create forms (a bit like Zoho creator)
- Click on the "Formidable" icon at the bottom of the left-hand "Dashboard" column in the admin interface and define a form
- Create a page (click on pages), then add the "formidable" form inside. Use the following code to insert a form:
[ formidable id=x ]
- Add a user or two and test drive with these (using a different web browser)
(3) Installing applications that are not packaged by MOWES
- Create a database and a database user with PhpMyAdmin
- Download, dezip to mowes/www directory
- Install/configure the system according to instructions found
Students not familiar with this procedure should install a new version of wordpress.
- Make sure to dezip the system into another directory than .www/wordpress, e.g. call it .www/blog.
- Read wordpress installation and configuration
(3) Discussion about web hosting
Homework 2
Topic: High-level exploration of a portalware (CMS/CMF) / preparation of the term project
Task
Task Summary:
- Shortly sketch out a website project for a given targent audience
- Collect links about a portalware (not wordpress) that "may do the job" and create a resource about this select
- Finally, try to install it on a local webserver (or a provider) and make a simple test to see if it runs
Deliverable: Produce a resource (e.g. an HTML page) that includes the five following elements:
(1) Objectives and target population of a web site that you plan to create. This website must include some dynamic elements (e.g. the possibility to add contents for specified users). Here is nice little template from the wordpress codex:
and cover the topics of A, B, and C. The audience will
be __________ ________________ _______. I will be adding
posts every _____________ about ________ _______ ______________.
(2) Provide some links to useful information. Create a shortlist of three CMS/CMF systems that run under PHP/MySQL. Select the most promising one and add the following links:
- Download page of the software
- A link to two respectable websites that provide comments and evaluations of this system
- Link to the installation manual
- Link to the configuration manual (if different)
- 2-3 links to other useful help sites
(3) Make a simple test. Install the system with MOWES. If the installation fails, try to explain why and skip step 4.
(4) Create at least one form of content and explain what you had to do to get it down and tell us if it was difficult.
(5) Write a short general comment about the portware you looked at. Do you think that it might be suitable for your needs ?
Important: You are not allowed to choose Wordpress (WP) since I want to look at another system, but you may choose WP for the term project ...)
You can create this resource in three ways:
- Create a webpage on your PC and upload the web page to the worldclassroom (you don't need to hand code HTML, just use a tool like Kompozer)
- Create a netvibes pagecast and submit the URL (see hw 1)
- Use your own personal web site, e.g. create a blog post and submit the URL.
This homework is a preparation for the term project. Doing it will help you get started.
Submission Dates
- This homework is due on wednesday week 3 (before lesson start)
- Students must provide an URL or upload an HTML file in the world classroom (no Word!).
- Each homework counts 10% in your global evaluation. The four best homeworks will be taken into account.
Evaluation
see the grading form in the worldclassroom
Tips for the homework
- The easiest solution is to select a CMS/CMF system that is available as Mowes package, e.g. ModX, Typolight, Drupal, Joomla, Zikula (all CMS/CMF)
- Otherwise start from the links in the Portalware article. Do not google for finding a good CMS (too many websites you will have to sort out). Best bet is to start exploring OpensourceCMS.com. Ambitious students should try this strategy. It you help you become a CMS expert :)
Links and teaching materials
Software
- http://www.chsoftware.net/en/mowes/mowesportable/mowes.htm (Mix and download a server).
- See the portalware article for pointers regarding CMS/CMF systems
Teaching materials
- Slides: http://tecfa.unige.ch/guides/te/files/webdatabases-intro.pdf (PDF)
- See the next item for various links you may consult depending on your needs
Reading
I suggest that you have a look at the following articles. Reading is not mandatory, but may help you understand some concepts and issues.
- About Web hosting
- web hosting service
- Web Hosting Service (Wikipedia)
- Shared web hosting service
- About the LAMP/WAMP bundles
- About Web applications, content management frameworks and systems
- (short) Edutechwiki articles: web application, Portalware, content management system, Web application framework
- Wordpress installation and configuration
Week 3 - COAP 3180
Topics Covered
Portalware configuration (continued):
- discussion of homework 2 if needed
Relational databases: Introduction to SQL (part 1):
- Retrieving data
- Definition of SQL tables and use of the PhpMySQL tool
- Relational tables (principles)
- Main teaching materials
- Slides used: http://tecfa.unige.ch/guides/te/files/mysql-intro.pdf
- Lecture notes (very similar to slides): SQL and MySQL tutorial
Classroom activities
Monday
- Define a table with SQL code
- Learn how to inject SQL code in MySQL Admin (a web application to administer web databases) in order to create databases and tables
- Create a simple 1-table MySQL database with the database administration tool
Play time
Warning. Be careful with quotes and double quotes.
- Quotes must be straight (same for double quotes).
' = Ok ’ = BAD !!!
... So use a real text editor and not a word processor.
- (1) Demo 1 example
CREATE TABLE demo1 (
id int(10) NOT NULL auto_increment,
login char(10) DEFAULT '' NOT NULL,
password char(100),
fullname char(40) DEFAULT '' NOT NULL,
url char(60) DEFAULT '' NOT NULL,
food int(11) DEFAULT '0' NOT NULL,
work int(11) DEFAULT '0' NOT NULL,
love int(11) DEFAULT '0' NOT NULL,
leisure int(11) DEFAULT '0' NOT NULL,
sports int(11) DEFAULT '0' NOT NULL,
PRIMARY KEY (id),
KEY login (login)
);
- (2) Student database with 2 tables
DROP TABLE IF EXISTS student;
DROP TABLE IF EXISTS exercise;
CREATE TABLE student (
id int(10) NOT NULL auto_increment,
name char(40) DEFAULT '' NOT NULL,
first_name char(40) DEFAULT '' NOT NULL,
PRIMARY KEY (id)
);
INSERT INTO student VALUES (NULL,'Testeur','Bill');
INSERT INTO student VALUES (NULL,'Testeur','Joe');
INSERT INTO student VALUES (NULL,'Testeuse','Sophie');
CREATE TABLE exercise (
id int(10) NOT NULL auto_increment,
title char(40) DEFAULT '' NOT NULL,
student_id int(10) NOT NULL,
comments varchar(128),
url char(60) DEFAULT '' NOT NULL,
PRIMARY KEY (id),
KEY student_id (student_id)
);
INSERT INTO exercise VALUES (NULL,"Exercise 1",'1',"small comment",'http://tecfa.unige.ch/');
INSERT INTO exercise VALUES (NULL,"Exercise 2",'1',"no comment",'http://tecfa.unige.ch/');
Classroom activities Wednesday
- Continue creating a table (if needed)
- Relational databases with 2 or 3 tables (simple 1-N and N-N cases)
- Web hosting (discussion)
- The anatomy of Wordpress
Homework 3
Topic: Database definition (2-3 tables), Details to be announced on Wednesday.
Define an SQL file that will create 2-4 related tables. You can freely choose the application area, but it should somewhat relate to prior homework or the term project.
Minimal requirements:
- Minimum 2 tables and max. 4 tables. Make sure that the tables are related.
- At least 10 fields (for all tables together, e.g. 6 for table one and 4 for table 2)
- At least 1 integer and 1 varchar (for all tables)
- Each table must define a primary key
- You may look at real example and take inspiration from these under the condition that you make some modifications and that you quote the source in the comment !!
The SQL file must include some documentation on top that (1) explains the purpose of this database and of each table and that (2) provides some high-level design elements. See the SQL and MySQL tutorial for comment syntax.
Remarks and tips
This homework is not related to the term project, but it helps you preparing exams.
Before you submit your homework, make sure to test it, i.e. load it into the database, e.g. with PhPMyAdmin. If you this more than once, you must kill the old tables, use the following SQL command:
DROP TABLE IF EXISTS name_of_your_table;
E.g.
DROP TABLE IF EXISTS exercise;
To get the "2 related tables" structure right, think for example about a relationship between a person and what he can own or produce. E.g. One Author writes N books, One CD includes N titles.
An example discussed in Yarger et al. (1999:18ff) is a four tables structure: Artists - songs - CDs - Record labels. One artist can produce several songs. A CD contains several songs. A Record label publishes several CDs. A corresponding table structure would look like this:
Artist Artistid primary key name .... CD CDid primary key title .... LabelID foreign key Song Songid primary key name .... CDId foreign key ArtistId foreign key Label Labelid primary key name ....
Submission Dates
- This homework is due at start of wed week 4
- Students must upload the SQL file to the worldclassroom (don't forget the documentation inside this file).
- Each homework counts 10% in your global evaluation. The four best homeworks will be taken into account.
Evaluation
- See the worldclassroom
- A well documented and well designe two table design may also get an A (so you don't must go for a three our four table solution ...)
Teaching materials and further reading
- Online software
- We shall use MoWes again
- Teaching materials (slides and reading)
- Slides used: http://tecfa.unige.ch/guides/te/files/mysql-intro.pdf
- Lecture notes (very similar to slides): SQL and MySQL tutorial
You probably will have to complete my lecture notes with some extra reading. Pick one of the following. (Unfortunately, some of these articles are presented as multiple pages ....)
- Introduction to Structured Query Language: Version 4.11 by James Hoffman. Good bet if you like concise texts.
- Getting Started With SQL by Ted Brockwood, Web developper's journal. Good as first introduction.
- SQLCourse and SQLCourse2
- Introduction to Databases for the Web: Pt. 1 by Selena Sol, database journal (good, but too many distracting ads)
- Yarger et al. (1999). MySQL & MSQL, O'Reilly, Chapter 2 on database design (the rest is outdated).
Week 4 - COAP 3180
Topics Covered
HTML principles recalled
- HTML Forms
- (XMLhttprequest)
Introduction to PHP
- Principles of PHP programming
- HTML forms tutorial
- Simple PHP/MySQL interaction
Working with Apache/PHP/MySQL
- Web server organization (a look at Mowes)
Using PHP/MySQL webform generators:
- http://www.webformgenerator.com/ (Webform generator)
- http://www.sqlmaestro.com/products/mysql/phpgenerator/ (SQL Maestro PHP Generator)
Classroom activities
Classroom activities Monday
- HTML
- Recall of HTML principles (lecture)
- PHP
- Exploration of the PHP language (lecture)
- HTML-PHP Example
File form.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><title>Simple test with</title></head>
<body>
<h1>Simple test with PHP</h1><hr>
<form action="process-it.php" method="post">
What do you know about HTML ?
<input type="radio" name="choice" value="1" checked>little
<input type="radio" name="choice" value="2">some
<input type="radio" name="choice" value="3">everything
<br>
What is your programming experience ?
<input type="radio" name="choice2" value="1" checked>none
<input type="radio" name="choice2" value="2">some
<input type="radio" name="choice2" value="3">good
<P>
<input type="submit" value="See result!">
</form>
</body>
</html>
File process-it.php:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><title>Simple test with</title></head>
<body>
<h1>Simple test with PHP</h1><hr>
<?php
// Get variables from the form
$choice = $_POST['choice'];
$choice2 = $_POST['choice2'];
// Compute the score
$score = $choice + $choice2;
// Display the score
echo "<h3>Your score is " . $score . "</h3>";
if ($score < 3) {
echo "<p>You are a beginner</p>";
} elseif ($score < 5) {
echo "<p>You have some knowledge</p>";
} else {
echo "<p>You are an expert !</p>";
}
?>
<hr>
// phpinfo();
</body>
</html>
Classroom activities Wednesday
- PHP-MySQL (homework preparation)
- PHP MySQL functions (exploration of the online PHP manual / Slides) if time left only
- Use of the PHP Generator for MySQL (Maestro Group)
In order to profit from this generator, you should declare foreign keys and use the InnoDB engine as in the example below.
-- MySQL example with foreign keys.
-- Needs the InnoDB engine (see the table definitions)
--
-- Table 'student'
--
DROP TABLE IF EXISTS student;
CREATE TABLE IF NOT EXISTS student (
id int(10) NOT NULL AUTO_INCREMENT,
name char(40) NOT NULL DEFAULT '',
first_name char(40) NOT NULL DEFAULT '',
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Data for table 'student'
--
INSERT INTO student (id, name, first_name) VALUES
(1, 'Testeur', 'Bill'),
(2, 'Testeur', 'Joe'),
(3, 'Testeuse', 'Sophie'),
(4, 'Player', 'Jim');
--
-- Table 'exercise'
--
DROP TABLE IF EXISTS exercise;
CREATE TABLE IF NOT EXISTS exercise (
id int(10) NOT NULL AUTO_INCREMENT,
title char(40) NOT NULL DEFAULT '',
student_id int(10) NOT NULL,
comments varchar(128) DEFAULT NULL,
url char(60) NOT NULL DEFAULT '',
PRIMARY KEY (id),
KEY student_id (student_id),
FOREIGN KEY (student_id) REFERENCES student(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Table 'exercise'
--
INSERT INTO exercise (id, title, student_id, comments, url) VALUES
(1, 'Exercise 1', 1, 'small comment', 'http://tecfa.unige.ch/'),
(2, 'Exercise 2', 1, 'no comment', 'http://tecfa.unige.ch/'),
(3, 'exe four', 2, 'No comment', 'http://localhost/'),
(4, 'exe four', 2, 'No comment', 'http://localhost/');
- Term project
- Q/A
Midterm exam (Wednesday)
Main subjects will be SQL and a little bit of database design. "Minor" subject will be web application architecture (high level principles)
SQL:
- SELECT
- SELECT ... WHERE, INSERT ... ORDER
- Joins (select from two tables)
- CREATE
- Data types: Integer, Float, VarChar, text
- DEFAULT, NOT NULL, Auto increment
- Keys
- Primary keys
- INSERT (both forms(
- UPDATE / DELETE
- DROP
Database design:
- Simple 2-3 table architectures
- 1 to N and N to N relations between tables
Exam will be "open book". I will include a set of various tasks (e.g. a simple design problem, repair problems, conceptual questions)
Homework 4
Generate and configure a web application based on a SQL table definitions.
- Create between 1 and 4 SQL tables or reuse one or all tables from homework 3. Add foreign keys definitions if needed, because if you use foreign keys then the Generator will be able to generate pull-down menus in the edit interface.
- Use the Maestro PHP Generator to create an interface that allows to view and to edit data.
- Explore the features of this tool (most are actually disabled in the free version)
Submission: choose either one
- Migrate the files to a service provider and submit the URL to the instructor together with a short list of features you implemented. You may paste the this list in the submission field of the Worldclassroom interface. Migration may require a little bit of PHP tweaking (edit the settings.php file).
- Create a short report with a short feature list plus screen captures of the most important screens a user will see and submit either an URL with an online text or an HTML file to the instructor. If you submit an HTML file, make sure to create a zip file that includes all the pictures.
In other words: I need (a) a list of what you have done and (b) either a URL where I can see the application or a zipped HTML + screen captures zip file.
Submission Dates
- This homework is due at start of Wednesday week 5
- Students must provide either an URL for the application, an URL for documentation or an HTML file with documentation.
- Each homework counts 10% in your global evaluation. The four best homeworks will be taken into account.
Evaluation
- Same principle as homework 1. Make sure to get both the table definition(s) and the user interface/ergonomics right.
- See WorldClasroom
Tips for the homework
Make sure to get the bulk of the homework done by Monday, Week 5. I will reserve some time for questions.
- SQL
- Use foreign keys and the InnoDB engine if your tables a related. The foreign keys syntax to use is
FOREIGN KEY (field_in_this_table) REFERENCES other_table (primary_key_field)
Example: In a exercises table, each record has a student_id column that points to the id column of the student table.
FOREIGN KEY (student_id) REFERENCES student(id)
- PHP Generator
Entry screen:
- In the connection properties make sure to get the database name right
Objects screen:
- Select all tables you want the user to edit later on
Queries screen:
- Skip, unless you know SQL very well. In the latter case you may formulate a query that will sort data displayed (see the manual)
Pages screen:
- for each table, you can define which columns will be visible and editable. Hit the Edit button (top right)
Color scheme:
- Select a theme
- You may customize the CSS
Last screen (important !)
- Change default headers and footers (top). This allows you to add extra information in the generated pages.
- Define the output directory (bottom). We suggest to create a mowes/www/subdirectory and to put the files there directly.
If you plan to migrate to a an other provider (totally optional)
- Export the SQL from the database
- Edit file settings.php and change the return array values of the first function in the file.
- Import the SQL to the other MySQL
- Move all the files to the other web server.
Software, teaching materials and links
- Software (installed in the Lab)
- http://www.sqlmaestro.com/products/mysql/phpgenerator/ (SQL Maestro PHP Generator)
- (optional) http://www.webformgenerator.com/ (Webform generator - this program may break your navigator)
- A text editor
- (optional) http://www.irfanview.com/ (IrfanView, free image manipulation program, including screen captures)
- (optional) https://addons.mozilla.org/en-US/firefox/addon/1146 (Firefox screen capture add-on, works fine enough)
- Teaching materials
- HTML forms tutorial (HTML reminder about forms)
- http://tecfa.unige.ch/guides/te/files/php-mysql.pdf (slides)
- PHP with MySQL tutorials
Reading these is optional, since PHP coding will not be tested in an exam or in the term project. Below are a few PHP and PHP/MySQL tutorials that can be found on the net. There exist many others.
- Weiss, Aaron (2000) Welcome to PHP, somewhat outdated ...
- PHP Tutorial (W3C Schools, includes a section about PHP/MySQL).
- Gilfillan, Ian (2002). Using a MySQL database with PHP, Database Journal. (shorter 3-page tutorial)
- Yank, Kevin (2002) wrote a five part series in the Database Journal (Ok, but too much advertisement).
- Build Your Own Database Driven Website Using PHP & MySQL: Pt. 1 (Overview)
- Build Your Own Database Driven Website Using PHP & MySQL: Pt. 2 (yet another MySQL tutorial) ** Build Your Own Database Driven Website Using PHP & MySQL: Pt. 3 (PHP Introduction)
- Build Your Own Database Driven Website Using PHP & MySQL: Pt. 4. (Displaying information on a web page)
- MySQL PHP Web Database Tutorial (1999). Simple table, by web.blazonry
- Williams, Hugh, E. (2002). Tips for Building Web Database Applications with PHP and MySQL, onLamp article (O'Reilly Databases). HTML
- Sample chapter of Web Database Applications with PHP and MySQL website.
Week 5 - COAP 3180
ATTENTION: Monday week 6 class is cancelled. To catch up, we will add 20 minutes to each class.
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
- 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
Monday
(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 code below to a mowes/www/ directoty
- call the file for example: mysql-to-xml.php
- configure and test
- Alternatively, get it from: http://tecfa.unige.ch/guides/xml/examples/mysql-php-xml/mysql-to-xml-raw.php.txt (and rename the file to *.php)
<?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;
?>
Wednesday
(1) Term project
- Short demo of the Wordpress extension "Formidable"
(2) Editing an XML file (recall)
- Use an XML editor since it can test the well-formedness of an XML file. You may use a normal programming editor for fixing small contents in a raw XML file (that is just well-formed but not valid) ... but make sure that tags remain matched.
- For XML that can be validated, always use an XML editor and validate.
(5) Create/adapt an XSLT file
- Simple XSLT (adaptation of some code)
- Filtering data with XSLT, e.g. creating rules that will do nothing
- Copy/paste the following code to a file called mysql-result.xsl. This file must sit next to the PHP file above.
- Alternatively, get this from http://tecfa.unige.ch/guides/xml/examples/mysql-php-xml/mysql-result-template.xsl
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"
doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN"/>
<xsl:template match="result">
<html> <head> <title> Query results </title> </head>
<body bgcolor="#ffffff">
<h1>Query results</h1>
<table border="2" cellspacing="1" cellpadding="6">
<!-- Here you might insert a table heading row
<tr> <th>col1</th> <th>col2</th> <th>col 3</th> <th></th> </tr>
-->
<xsl:apply-templates select="row"/>
</table>
<hr />
</body>
</html>
</xsl:template>
<xsl:template match="row">
<tr> <xsl:apply-templates/> </tr>
</xsl:template>
<!-- copy/paste the rule below and replace by custom rules for various columns of your output -->
<xsl:template match="*">
<td> <xsl:apply-templates/> </td>
</xsl:template>
<xsl:template match="col2">
<!-- no real output -->
</xsl:template>
</xsl:stylesheet>
Homework 5
- Objectives
- Pull out data in XML format from a database. If you turned in homework 3, use its tables. Else you may use any other table you can find (but you need to import it to a database).
- Produce a XSLT file that will display the data in a nice way in HTML or XHTML. You also may do some filtering, i.e. only parts of the data. Finally, you also will have to add some extra information in the XSLT (at least a meaningful title)
- Associate the XSLT file with the XML produced by the PHP script given to you by the instructor.
- Steps
- Read PHP - MySQL - XML tutorial - basics
- Copy file http://tecfa.unige.ch/guides/xml/examples/mysql-php-xml/mysql-to-xml-raw.php.txt to a web directory of your WAMP server (or a PHP/MySQL provider). Alternatively you may copy/paste it from here. Then call it something like mysql-to-xml.php (I.e. file must end with .php!!)
- Change the values in the configuration section to make it work with one of your databases. You do not need to change anything else in this file.
- Test this PHP script. In your browser, you should see some raw XML.
- Then save the result as test.xml (for testing purposes). In your browser, open the mowes/xxx directory, then right-click on mysql-to-xml.php and "save target as" test.xml.
- Create an XSLT file that will translate test.xml to (X)HTML.
Test it with an XML editor and the test.xml file until you are pleased with the result. Remark: The XML file will be well-formed in principle, but you are likely to make XSLT syntax mistakes. Validate the XSLT file with the Exchanger light editor.
- Once you are done, copy this XSLT file to the directory of the PHP file.
- If necessary, edit the configuration of the PHP file and specify the name of the XSLT file.
If the above is not clear, look at the files in this directory (it includes the test files)
- XSLT - If things go wrong
Style-sheet error !
- Validate the style-sheet in your XML editor
- If it provides XSLT support, it will help you find the error spots
XHTML doesn’t display in Firefox !
- Firefox wants a namespace declaration in the XHMTL produced, do it (see above).
HTML doesn’t seem to be right !
- Transform the XML document within your XML editor and look at the HTML
In "Exchanger Lite", use Transform in the menu bar with the following parameters:
- Transform->Execute Advanced XSLT
- Input = current document
- XSLT = Use Processing instructions
- Output = to new file or to new document
- You also may validate the output HTML with an HTML validator !
There is various unformatted text in the output
- You forgot to write a rule for some XML element
HTML still doesn’t seem to be right !!
- Use a XSLT debugger/tracer to understand how your XSLT executes
- PHP - If something goes wrong
Blank page
- If you get a blank page, it is very likely that you have a syntax mistake. Mowes is configured not to display PHP errors. You must have a look at the Apache log files that you can find here:
... \mowes\apache2\logs\error.log
Submission Procedure and dates
You must upload the following files to the worldclassroom:
- The *.xsl file
- The *.sql file
- The *.php file
- This homework is due at start of Wed week 6
- Each homework counts 10% in your global evaluation. The four best homeworks will be taken into account.
Evaluation
See the worldclassroom.
Links and teaching materials
- Software
- A decent enough XML editor, e.g. XML exchanger light
- Apache/PHP/MySQL
- Online software
- (optional) A LAMP service provider
- 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 (good to know, but will not be tested)
- PHP - MySQL - XML tutorial - basics (must be able to use this code, i.e. configure)
- 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/xml-xslt.pdf (exam topic)
- 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)
List of all Coap 3180 pages
Weekly programs
- Help:COAP-3180/week1
- Help:COAP-3180/week2
- Help:COAP-3180/week3
- Help:COAP-3180/week4
- Help:COAP-3180/week5
- Help:COAP-3180/term project
- Help:COAP-3180/template (instructor only)
Most important wiki pages
- Creating websites with online services
- Using web widgets
- web application
- Portalware
- content management system
- Web application framework
- web hosting service
- Wordpress installation and configuration
- SQL and MySQL tutorial
- XML
- DTD tutorial (understand how to use/read a DTD only)
- XSLT Tutorial - Basics
- XPath tutorial - basics
- PHP-MySQL tutorial -basics
- PHP - MySQL - XML tutorial - basics
- XQuery tutorial - basics
Other teaching resources
- webdatabases-intro.pdf
- mysql-intro.pdf (but SQL and MySQL tutorial is better reading)
- php-mysql.pdf (quality is not great, consider reading one of the tutorials suggested on the week 4 page)
Most important software
- Some online services like Zoho and Netvibes.
- Modular Webserver System
- A text editor, e.g. Notetab light
- PHP Generator for MySQL (Maestro)