240 likes | 382 Views
Creating Databases for Web Applications. State capitals quiz Classwork: design a new quiz Homework: Make sure you can upload files and have MySQL database. Get a simple quiz working like the state capital quiz. Post unique source on REGULAR expressions. multi-purpose php files.
E N D
Creating Databases for Web Applications State capitals quiz Classwork: design a new quiz Homework: Make sure you can upload files and have MySQL database. Get a simple quiz working like the state capital quiz. Post unique source on REGULAR expressions.
multi-purpose php files • Used to both present a form and • check the input in a form. • Replacement for html and php pair. • Advantages: • don’t have to coordinate two files • less files to handle • Disadvantages • need to include coding to make determination
Use of @ sign • The @ sign is used to suppress error messages. • We will use it in the code to test if something, namely a form input, exists. • if it does, then control goes to the code for handling the form • otherwise, control goes to the code for displaying the form
rand • Built-in php function. • Takes two arguments. • rand(a, b), a and b integers, returns random value from a, … b. • Check out shuffle, mt_rand. Extra credit posting opportunity to explain.
State capital quiz • http://socialsoftware.purchase.edu/jeanine.meyer/statecapquizask.php • Choose what to be asked • Note: how can this be worded better???? • Ask • Check the answer • Give chance to try again or • Go back to get new question
State capitals quiz • Implementation: three php files. Two of the php files call themselves and include the other file. • statecapitals.php • This file is include[d] in the others. It sets up 2 parallel arrays holding the names of the states and the capital cities. • statecapquizask.php • This is a multi-purpose file. • statecapquizcheck.php • This is also a multi-purpose file. Checks answer. Allows for another guess or goes back to statecapquizask.php
State capitals storyboard Include file: statecapitals.php statecapquiz.php statecapquizcheck.php
Programming practices • Parallel structures, in this case the array of states corresponding to the array of capitals, is a common programming device. Think of it as an alternative to a database or xml for very simple cases. • Repeat: multi-purpose, self-referencing of php scripts is a common practice • benefits: reduces number of files. Information in one place • negatives: the one file is more complex
statecapitals.php <?php $states = Array(); $capitals = Array(); $states[]="Alabama"; //adds to array $capitals[]="Montgomery"; $states[]="Alaska"; $capitals[]="Juneau"; …
statecapquizask.php <html> <head> <title>State capitals quiz: check</title> </head> <body> <h1>State Capital Quiz </h1><p> <?php $saywhich=@$_GET['saywhich']; if ($saywhich){ include("statecapitals.php"); $which=$_GET['which']; $choice=rand(0, sizeOf($states)-1);
if ($which=='state') { $state = $states[$choice]; print("What is the capital of $state?<br>"); print("<form action='statecapquizcheck.php' method='get'>\n"); print("<input type='text' name='capital'><br>\n"); print("<input type='hidden' name='which' value=$which>\n"); print("<input type='hidden' name='choice' value=$choice>\n"); print("<input type='submit' value='Submit Answer'>"); print("</form>\n"); }
else { $capital = $capitals[$choice]; print("$capital is the capital of which state?<br>"); print("<form action='statecapquizcheck.php' method='get'>\n"); print("<input type='text' name='state'><br>\n"); print("<input type='hidden' name='which' value=$which>\n"); print("<input type='hidden' name='choice' value=$choice>\n"); print("<input type='submit' value='Submit Answer'>"); print("</form>\n"); } }
else { print("Choose form of question: do you want to be given the state or the capital?<br>"); print("<form action='statecapquizask.php' method='get'>\n"); print("Ask <input type='radio' name='which' value='state'>State"); print(" <input type='radio' name='which' value='capital'>Capital\n"); print("<input type='hidden' name='saywhich' value='true'>\n"); print("<input type='submit' value='Submit choice'>"); print("</form>"); } ?> </body> </html>
statecapquizcheck.php <html> <head> <title>State capitals quiz: check</title> </head> <body> <?php include('statecapitals.php'); $choice=$_GET['choice']; $state=$_GET['state']; $capital=$_GET['capital']; $which=$_GET['which']; $correctstate=$states[$choice]; $correctcapital=$capitals[$choice];
if ($which=='state') { if ($capital == $correctcapital) { print("Correct! $correctcapital is the capital of $correctstate!"); print("<p><a href='statecapquizask.php'>Play again </a>"); }
else { print("WRONG!<p>\n"); print("<a href='statecapquizask.php'>New turn </a><p>\n"); print("OR try again: What is the capital of $correctstate?<br>"); print("<form action='statecapquizcheck.php' method='get'>\n"); print("<input type='text' name='capital'><br>\n"); print("<input type='hidden' name='state' value=$state>\n"); print("<input type='hidden' name='which' value=$which>\n"); print("<input type='hidden' name='choice' value=$choice>\n"); print("<input type='submit' value='Submit Answer'>"); print("</form>\n"); } }
else { if ($state == $correctstate) { print("Correct! The capital of $correctstate is $correctcapital!"); $saywhich='false'; print("<p><a href='statecapquizask.php'>Play again </a>"); }
else { print("WRONG!<p>\n"); print("<a href='statecapquizask.php'>New turn </a><p>\n"); print("OR try again: $correctcapital is the capital of what state?<br>"); print("<form action='statecapquizcheck.php' method='get'>\n"); print("<input type='text' name='state'><br>\n"); print("<input type='hidden' name='capital' value=$capital>\n"); print("<input type='hidden' name='which' value=$which>\n"); print("<input type='hidden' name='choice' value=$choice>\n"); print("<input type='submit' value='Submit Answer'>"); print("</form>\n"); } } ?>
else { $capital = $capitals[$choice]; print("$capital is the capital of which state?<br>"); print("<form action='statecapquizcheck.php' method='get'>\n"); print("<input type='text' name='state'><br>\n"); print("<input type='hidden' name='which' value=$which>\n"); print("<input type='hidden' name='choice' value=$choice>\n"); print("<input type='submit' value='Submit Answer'>"); print("</form>\n"); } }
else { print("Choose form of question: do you want to be given the state or the capital?<br>"); print("<form action='statecapquizask.php' method='get'>\n"); print("Ask <input type='radio' name='which' value='state'>State"); print(" <input type='radio' name='which' value='capital'>Capital\n"); print("<input type='hidden' name='saywhich' value='true'>\n"); print("<input type='submit' value='Submit choice'>"); print("</form>"); } ?> </body></html>
Reprise • if statements within if statements • php produces the appropriate html, including the form element • The php is printing (producing) html. It is not operating the quiz! • There are ways to enhance this program • perhaps limit the number of re-tries • prevent browser from showing previous inputs • see next slide…
Note • Answer must be exact! • Sometimes this is not appropriate. • Consider NOT requiring exact case. • Extra credit opportunity • Consider something else, such as inexact spelling. What is close enough? How to measure? • Use of regular expression is a way to present a pattern of answers as opposed to a set answer. • Later: we will cover the use of LIKE as an operator in MySql statements
Classwork (teams) Design simple quiz • like the state capital quiz, using parallel arrays for questions and answers • Ideas? OR • make significant enhancement to my quiz, like adding scoring, limiting re-tries OR • some other quiz!
Homework • Get your quiz working. Post link in posting to the General Discussion Forum. • Research and post unique source on Regular expressions on moodle. We use regular expressions • to validate input and extract information from input. • potential for quizzes.