The secret is to store the current answer key in a hidden form element and pass this element to another program.. I stored the name of the puzzle in a field called puzzleNameand the enti
Trang 1The secret is to store the current answer key in a hidden form element and pass this element to another program I created a form with two hidden fields
I stored the name of the puzzle in a field called puzzleNameand the entire HTML
of the answer key in a field called key When the user presses the submitkey, it calls wordFindKey.
Printing the Answer Key
The wordFindKey program is very simplistic, because all the work of generating the answer key was done by the Word Search program wordFindKeyhas only to retrieve the puzzle name and answer key from form variables and print them out Since the key has even been formatted as a table, the wordFindKeyprogram needn’t do any heavy lifting.
<!doctype html public “-//W3C//DTD HTML 4.0 //EN”>
<html>
<head>
<title>Word Find Answer Key</title>
</head>
<body>
<?
//answer key for word find
//called from wordFind.php
178
l u
IN THE REAL WORLD
Passing the answer key to another program is a kind of dirty trick It works for
a couple of reasons First, since the key field is hidden and the form sends data through the post method, the user is unlikely to know that the answer to the puz-zle is literally under his nose Since I expect this program mainly to be used by teachers who would print the puzzle anyway, this is fine Even without the secrecy concerns, it is necessary to pass the key data by post because it is longer than the 256 characters allowed by the get method.
Sending the HTML-formatted answer key to the next program made the second program quite simple, but there is another advantage to this approach: It is dif-ficult to send entire arrays through form variables However, by creating the HTML table, all the array data was reduced to one string value, which can be passed to another program through a form.
Trang 2print <<<HERE
<center>
<h1>$puzzleName Answer key</h1>
$key
</center>
HERE;
?>
</body>
</html>
Summary
In this chapter you see how important it is to put together data in meaningful
ways You look at a number of more powerful arrays and tools to manipulate
them You learn how to use the foreachloop to look at each element of an array
in turn You can use string indices to generate associative arrays and make
two-dimensional arrays using both numeric and string indices You learn how to do
several kinds of string-manipulation tricks, including searching for one string
inside another, extracting substrings, and splitting a string into an array You put
all these skills together in an interesting and detailed application You should be
proud of your efforts.
179
l i
C H A L L E N G E S
1 Add the ability to use diagonals in your puzzles (Hint: You need only combine
the formulas I established You don’t need any new ones.)
2 Create a game of Battle Ship for two players on the same computer The
game prints a grid (Preset the fleet locations to make it easier.) Let the user
choose a location on the grid via a checkbox Report the result of his firing
back and then give the screen to the second user.
3 Write a version of Conway’s Life This program simulates cellular life on a
grid with three simple rules.
a Each cell with exactly three neighbors becomes or remains alive.
b Each cell currently alive with exactly two neighbors remains alive.
c All other cells die off.
4 Randomly generate the first cell and let the user press a button to generate
the next generation.
Trang 3This page intentionally left blank
Trang 4A s your experience in programming grows, the relative importance of data becomes increasingly apparent You began your understanding of data with
simple variables, but learned how simple and more complex arrays can make your programs more flexible and more powerful However, data stored in the computer’s memory is transient, especially in the server environment It is often necessary to store information in a form that is more permanent than the constructs you have learned so far PHP provides a number of powerful functions for working with text files With these skills, you create extremely useful programs Specifically, you learn how to:
• Open files for read, write, and append access
• Use file handles to manipulate text files
• Write data to a text file
• Read data from a text file
• Open an entire file into an array
• Modify text data on-the-fly
• Get information about all the files in a particular directory
• Get a subset of files based on filenames
Working with
Files
6
C H A P T E R
Trang 5l u
Previewing the Quiz Machine
This chapter’s main program is a fun and powerful tool that you can use in many different ways It is not simply one program, but a system of programs that work together to let you automatically create, administer, and grade multiple-choice quizzes.
Entering the Quiz Machine System
Figure 6.1 shows the system’s main page The user needs a password to take a test and an administrator password to edit a test In this case, I entered the adminis-trative password (it’s absolute—like in Absolute Beginner’s Guide ) into the appro-priate password box, and I’m going to edit the Monty Python quiz.
I refer to the quiz machine as a system rather than a program because it uses a number of programs intended to work together.
Editing a Quiz
The screen shown in Figure 6.2 appears when the user has the correct password You can see the requested quiz in a special format on the screen.
The quiz administrator can edit the quiz Each quiz has a name, instructor e-mail address, and password Each question is stored in a single line with the question, four possible answers, and the correct answer separated by colon (:) characters.
T R I C K
IN THE REAL WORLD
It is reasonably easy to build an HTML page that presents a quiz and a PHP program to grade only that quiz However, if you want several quizzes, it might
be worth the investment in time and energy to build a system that can automate the creation and administration of quizzes The real power of programming comes into play not just when you solve one immediate problem, but when you can produce a solution that can be applied to an entire range of related problems The quiz machine is an example of exactly such a system It takes a little more effort to build, but the effort really pays off when you have a system to reuse.