| Preface |
|
xxiii | |
| 1 Introduction to Dynamic Web Content |
|
1 | (16) |
|
HTTP and HTML: Berners-Lee's Basics |
|
|
2 | (1) |
|
The Request/Response Procedure |
|
|
2 | (3) |
|
The Benefits of PHP, MySQL, JavaScript, CSS, and HTML5 |
|
|
5 | (5) |
|
|
|
6 | (1) |
|
|
|
6 | (1) |
|
|
|
7 | (1) |
|
|
|
8 | (2) |
|
|
|
10 | (1) |
|
|
|
10 | (1) |
|
|
|
11 | (1) |
|
|
|
12 | (1) |
|
|
|
12 | (1) |
|
|
|
13 | (1) |
|
|
|
14 | (3) |
| 2 Setting Up a Development Server |
|
17 | (18) |
|
What Is a WAMP, MAMP, or LAMP? |
|
|
18 | (1) |
|
Installing AMPPS on Windows |
|
|
18 | (8) |
|
|
|
22 | (2) |
|
Accessing the Document Root (Windows) |
|
|
24 | (1) |
|
|
|
25 | (1) |
|
Installing AMPPS on macOS |
|
|
26 | (2) |
|
Accessing the Document Root (macOS) |
|
|
27 | (1) |
|
Installing a LAMP on Linux |
|
|
28 | (1) |
|
|
|
28 | (2) |
|
|
|
29 | (1) |
|
|
|
29 | (1) |
|
|
|
30 | (1) |
|
|
|
31 | (2) |
|
|
|
33 | (2) |
| 3 Introduction to PHP |
|
35 | (28) |
|
Incorporating PHP Within HTML |
|
|
35 | (2) |
|
|
|
37 | (1) |
|
|
|
38 | (24) |
|
|
|
38 | (1) |
|
|
|
39 | (1) |
|
|
|
40 | (5) |
|
|
|
45 | (3) |
|
|
|
48 | (2) |
|
|
|
50 | (2) |
|
|
|
52 | (1) |
|
|
|
53 | (1) |
|
|
|
54 | (1) |
|
The Difference Between the echo and print Commands |
|
|
55 | (1) |
|
|
|
55 | (1) |
|
|
|
56 | (6) |
|
|
|
62 | (1) |
| 4 Expressions and Control Flow in PHP |
|
63 | (32) |
|
|
|
63 | (3) |
|
|
|
64 | (1) |
|
|
|
65 | (1) |
|
|
|
66 | (8) |
|
|
|
67 | (2) |
|
|
|
69 | (1) |
|
|
|
70 | (4) |
|
|
|
74 | (9) |
|
|
|
75 | (1) |
|
|
|
76 | (2) |
|
|
|
78 | (1) |
|
|
|
79 | (3) |
|
|
|
82 | (1) |
|
|
|
83 | (7) |
|
|
|
84 | (2) |
|
|
|
86 | (1) |
|
|
|
86 | (2) |
|
|
|
88 | (1) |
|
|
|
89 | (1) |
|
Implicit and Explicit Casting |
|
|
90 | (1) |
|
|
|
91 | (1) |
|
Dynamic Linking in Action |
|
|
92 | (1) |
|
|
|
93 | (2) |
| 5 PHP Functions and Objects |
|
95 | (28) |
|
|
|
96 | (7) |
|
|
|
97 | (1) |
|
|
|
98 | (1) |
|
|
|
99 | (1) |
|
Passing Arguments by Reference |
|
|
100 | (2) |
|
Returning Global Variables |
|
|
102 | (1) |
|
|
|
102 | (1) |
|
Including and Requiring Files |
|
|
103 | (1) |
|
|
|
103 | (1) |
|
|
|
103 | (1) |
|
Using require and require_once |
|
|
104 | (1) |
|
PHP Version Compatibility |
|
|
104 | (1) |
|
|
|
105 | (15) |
|
|
|
106 | (1) |
|
|
|
107 | (1) |
|
|
|
108 | (1) |
|
|
|
108 | (2) |
|
|
|
110 | (1) |
|
|
|
111 | (1) |
|
|
|
111 | (1) |
|
|
|
112 | (1) |
|
|
|
113 | (1) |
|
|
|
113 | (1) |
|
Property and Method Scope |
|
|
114 | (1) |
|
|
|
115 | (1) |
|
|
|
116 | (1) |
|
|
|
117 | (3) |
|
|
|
120 | (3) |
| 6 PHP Arrays |
|
123 | (16) |
|
|
|
123 | (4) |
|
Numerically Indexed Arrays |
|
|
123 | (2) |
|
|
|
125 | (1) |
|
Assignment Using the array Keyword |
|
|
126 | (1) |
|
|
|
127 | (2) |
|
|
|
129 | (3) |
|
|
|
132 | (5) |
|
|
|
132 | (1) |
|
|
|
132 | (1) |
|
|
|
133 | (1) |
|
|
|
133 | (1) |
|
|
|
133 | (1) |
|
|
|
134 | (1) |
|
|
|
135 | (1) |
|
|
|
136 | (1) |
|
|
|
136 | (1) |
|
|
|
137 | (2) |
| 7 Practical PHP |
|
139 | (26) |
|
|
|
139 | (4) |
|
|
|
140 | (2) |
|
|
|
142 | (1) |
|
|
|
143 | (1) |
|
|
|
143 | (4) |
|
|
|
146 | (1) |
|
|
|
146 | (1) |
|
|
|
147 | (14) |
|
Checking Whether a File Exists |
|
|
147 | (1) |
|
|
|
147 | (2) |
|
|
|
149 | (1) |
|
|
|
150 | (1) |
|
|
|
150 | (1) |
|
|
|
151 | (1) |
|
|
|
151 | (2) |
|
Locking Files for Multiple Accesses |
|
|
153 | (1) |
|
|
|
154 | (1) |
|
|
|
155 | (6) |
|
|
|
161 | (1) |
|
|
|
162 | (1) |
|
|
|
163 | (2) |
| 8 Introduction to MySQL |
|
165 | (44) |
|
|
|
165 | (1) |
|
Summary of Database Terms |
|
|
166 | (1) |
|
Accessing MySQL via the Command Line |
|
|
166 | (21) |
|
Starting the Command-Line Interface |
|
|
167 | (4) |
|
Using the Command-Line Interface |
|
|
171 | (1) |
|
|
|
172 | (5) |
|
|
|
177 | (10) |
|
|
|
187 | (19) |
|
|
|
187 | (6) |
|
Querying a MySQL Database |
|
|
193 | (10) |
|
|
|
203 | (2) |
|
|
|
205 | (1) |
|
|
|
206 | (1) |
|
Accessing MySQL via phpMyAdmin |
|
|
206 | (1) |
|
|
|
207 | (2) |
| 9 Mastering MySQI |
|
209 | (26) |
|
|
|
209 | (2) |
|
Primary Keys: The Keys to Relational Databases |
|
|
210 | (1) |
|
|
|
211 | (8) |
|
|
|
212 | (2) |
|
|
|
214 | (2) |
|
|
|
216 | (2) |
|
When Not to Use Normalization |
|
|
218 | (1) |
|
|
|
219 | (4) |
|
|
|
219 | (1) |
|
|
|
220 | (1) |
|
|
|
221 | (1) |
|
|
|
222 | (1) |
|
|
|
223 | (3) |
|
Transaction Storage Engines |
|
|
223 | (1) |
|
|
|
224 | (1) |
|
|
|
225 | (1) |
|
|
|
225 | (1) |
|
|
|
226 | (1) |
|
|
|
227 | (5) |
|
|
|
227 | (2) |
|
|
|
229 | (2) |
|
Restoring from a Backup File |
|
|
231 | (1) |
|
Dumping Data in CSV Format |
|
|
231 | (1) |
|
|
|
232 | (1) |
|
|
|
232 | (3) |
| 10 Accessing MySQI Using PHP |
|
235 | (32) |
|
Querying a MySQL Database with PHP |
|
|
235 | (8) |
|
|
|
235 | (1) |
|
|
|
236 | (1) |
|
Connecting to a MySQL Database |
|
|
237 | (6) |
|
|
|
243 | (7) |
|
|
|
246 | (1) |
|
|
|
247 | (1) |
|
|
|
247 | (1) |
|
|
|
248 | (1) |
|
|
|
249 | (1) |
|
|
|
250 | (8) |
|
|
|
251 | (1) |
|
|
|
251 | (1) |
|
|
|
252 | (1) |
|
|
|
253 | (1) |
|
|
|
254 | (1) |
|
|
|
255 | (1) |
|
|
|
255 | (1) |
|
|
|
256 | (1) |
|
Performing Additional Queries |
|
|
257 | (1) |
|
Preventing Hacking Attempts |
|
|
258 | (6) |
|
|
|
259 | (1) |
|
|
|
260 | (3) |
|
Preventing HTML Injection |
|
|
263 | (1) |
|
Using mysqli Procedurally |
|
|
264 | (2) |
|
|
|
266 | (1) |
| 11 Form Handling |
|
267 | (20) |
|
|
|
267 | (2) |
|
Retrieving Submitted Data |
|
|
269 | (11) |
|
|
|
270 | (1) |
|
|
|
271 | (7) |
|
|
|
278 | (2) |
|
|
|
280 | (3) |
|
|
|
283 | (3) |
|
The autocomplete Attribute |
|
|
283 | (1) |
|
|
|
283 | (1) |
|
The placeholder Attribute |
|
|
283 | (1) |
|
|
|
284 | (1) |
|
|
|
284 | (1) |
|
The width and height Attributes |
|
|
284 | (1) |
|
The min and max Attributes |
|
|
284 | (1) |
|
|
|
284 | (1) |
|
|
|
285 | (1) |
|
|
|
285 | (1) |
|
|
|
285 | (1) |
|
The number and range Input Types |
|
|
285 | (1) |
|
|
|
286 | (1) |
|
|
|
286 | (1) |
| 12 Cookies, Sessions, and Authentication |
|
287 | (22) |
|
|
|
287 | (3) |
|
|
|
289 | (1) |
|
|
|
290 | (1) |
|
|
|
290 | (1) |
|
|
|
290 | (9) |
|
Storing Usernames and Passwords |
|
|
294 | (2) |
|
|
|
296 | (3) |
|
|
|
299 | (8) |
|
|
|
299 | (3) |
|
|
|
302 | (1) |
|
|
|
303 | (1) |
|
|
|
304 | (3) |
|
|
|
307 | (2) |
| 13 Exploring JavaScript |
|
309 | (20) |
|
|
|
310 | (4) |
|
Using Scripts Within a Document Head |
|
|
311 | (1) |
|
Older and Nonstandard Browsers |
|
|
311 | (1) |
|
Including JavaScript Files |
|
|
312 | (1) |
|
Debugging JavaScript Errors |
|
|
313 | (1) |
|
|
|
314 | (1) |
|
|
|
314 | (1) |
|
|
|
314 | (2) |
|
|
|
315 | (1) |
|
|
|
315 | (1) |
|
|
|
316 | (1) |
|
|
|
316 | (3) |
|
|
|
317 | (1) |
|
|
|
317 | (1) |
|
|
|
318 | (1) |
|
|
|
318 | (1) |
|
Incrementing, Decrementing, and Shorthand Assignment |
|
|
318 | (1) |
|
|
|
318 | (1) |
|
|
|
319 | (1) |
|
|
|
319 | (2) |
|
|
|
321 | (1) |
|
|
|
321 | (1) |
|
|
|
321 | (1) |
|
The Document Object Model |
|
|
322 | (4) |
|
Another Use for the $ Symbol |
|
|
324 | (1) |
|
|
|
325 | (1) |
|
|
|
326 | (1) |
|
|
|
326 | (1) |
|
|
|
326 | (1) |
|
|
|
326 | (1) |
|
|
|
327 | (1) |
|
|
|
327 | (2) |
| 14 Expressions and Control Flow in JavaScript |
|
329 | (20) |
|
|
|
329 | (1) |
|
|
|
330 | (1) |
|
|
|
331 | (5) |
|
|
|
332 | (1) |
|
|
|
332 | (1) |
|
|
|
333 | (3) |
|
|
|
336 | (1) |
|
|
|
337 | (1) |
|
|
|
338 | (1) |
|
|
|
339 | (3) |
|
|
|
339 | (1) |
|
|
|
339 | (1) |
|
|
|
340 | (2) |
|
|
|
342 | (1) |
|
|
|
342 | (4) |
|
|
|
342 | (1) |
|
|
|
343 | (1) |
|
|
|
344 | (1) |
|
|
|
345 | (1) |
|
|
|
345 | (1) |
|
|
|
346 | (1) |
|
|
|
347 | (2) |
| 15 JavaScript Functions, Objects, and Arrays |
|
349 | (22) |
|
|
|
349 | (5) |
|
|
|
349 | (2) |
|
|
|
351 | (2) |
|
|
|
353 | (1) |
|
|
|
354 | (5) |
|
|
|
354 | (2) |
|
|
|
356 | (1) |
|
|
|
356 | (1) |
|
|
|
356 | (3) |
|
|
|
359 | (9) |
|
|
|
360 | (1) |
|
|
|
361 | (1) |
|
|
|
362 | (1) |
|
|
|
363 | (5) |
|
|
|
368 | (3) |
| 16 JavaScript and PHP Validation and Error Handling |
|
371 | (24) |
|
Validating User Input with JavaScript |
|
|
371 | (6) |
|
The validate.html Document (Part 1) |
|
|
372 | (2) |
|
The validate.html Document (Part 2) |
|
|
374 | (3) |
|
|
|
377 | (10) |
|
Matching Through Metacharacters |
|
|
378 | (1) |
|
|
|
378 | (1) |
|
Grouping Through Parentheses |
|
|
379 | (1) |
|
|
|
380 | (1) |
|
|
|
380 | (1) |
|
|
|
380 | (1) |
|
Some More Complicated Examples |
|
|
381 | (2) |
|
Summary of Metacharacters |
|
|
383 | (2) |
|
|
|
385 | (1) |
|
Using Regular Expressions in JavaScript |
|
|
385 | (1) |
|
Using Regular Expressions in PHP |
|
|
386 | (1) |
|
Redisplaying a Form After PHP Validation |
|
|
387 | (6) |
|
|
|
393 | (2) |
| 17 Using Asynchronous Communication |
|
395 | (18) |
|
What Is Asynchronous Communication? |
|
|
396 | (1) |
|
|
|
396 | (15) |
|
Your First Asynchronous Program |
|
|
399 | (4) |
|
Using GET Instead of POST |
|
|
403 | (3) |
|
|
|
406 | (5) |
|
Using Frameworks for Asynchronous Communication |
|
|
411 | (1) |
|
|
|
411 | (2) |
| 18 Introduction to CSS |
|
413 | (40) |
|
|
|
414 | (1) |
|
Importing CSS from Within HTML |
|
|
414 | (1) |
|
|
|
415 | (1) |
|
|
|
415 | (1) |
|
|
|
415 | (1) |
|
|
|
416 | (1) |
|
|
|
416 | (2) |
|
|
|
416 | (1) |
|
|
|
417 | (1) |
|
|
|
418 | (2) |
|
|
|
418 | (1) |
|
|
|
418 | (1) |
|
|
|
419 | (1) |
|
|
|
419 | (1) |
|
|
|
420 | (1) |
|
|
|
420 | (5) |
|
|
|
420 | (1) |
|
|
|
420 | (1) |
|
|
|
421 | (1) |
|
|
|
422 | (1) |
|
|
|
423 | (1) |
|
|
|
424 | (1) |
|
|
|
424 | (1) |
|
|
|
425 | (1) |
|
|
|
425 | (4) |
|
|
|
426 | (1) |
|
|
|
426 | (1) |
|
|
|
427 | (2) |
|
The Difference Between div and span Elements |
|
|
429 | (2) |
|
|
|
431 | (2) |
|
|
|
433 | (2) |
|
|
|
433 | (1) |
|
|
|
434 | (1) |
|
|
|
434 | (1) |
|
|
|
435 | (1) |
|
|
|
435 | (2) |
|
|
|
435 | (1) |
|
|
|
436 | (1) |
|
|
|
436 | (1) |
|
|
|
436 | (1) |
|
|
|
436 | (1) |
|
|
|
437 | (3) |
|
|
|
438 | (1) |
|
|
|
438 | (2) |
|
|
|
440 | (3) |
|
|
|
440 | (1) |
|
|
|
440 | (1) |
|
|
|
441 | (2) |
|
|
|
443 | (2) |
|
|
|
445 | (1) |
|
|
|
446 | (5) |
|
|
|
446 | (2) |
|
|
|
448 | (1) |
|
|
|
449 | (2) |
|
|
|
451 | (1) |
|
|
|
451 | (2) |
| 19 Advanced CSS with CSS3 |
|
453 | (28) |
|
|
|
454 | (1) |
|
Matching Parts of Strings |
|
|
454 | (1) |
|
|
|
455 | (1) |
|
|
|
456 | (5) |
|
The background-clip Property |
|
|
456 | (2) |
|
The background-origin Property |
|
|
458 | (1) |
|
The background-size Property |
|
|
458 | (1) |
|
|
|
459 | (1) |
|
|
|
459 | (2) |
|
|
|
461 | (4) |
|
The border-color Property |
|
|
461 | (1) |
|
The border-radius Property |
|
|
461 | (4) |
|
|
|
465 | (1) |
|
|
|
466 | (1) |
|
|
|
466 | (2) |
|
|
|
468 | (2) |
|
|
|
468 | (1) |
|
|
|
469 | (1) |
|
|
|
469 | (1) |
|
|
|
469 | (1) |
|
|
|
470 | (1) |
|
|
|
470 | (2) |
|
|
|
470 | (1) |
|
The text-overflow Property |
|
|
470 | (1) |
|
|
|
471 | (1) |
|
|
|
472 | (2) |
|
|
|
473 | (1) |
|
|
|
474 | (2) |
|
|
|
475 | (1) |
|
|
|
476 | (4) |
|
|
|
477 | (1) |
|
|
|
477 | (1) |
|
|
|
477 | (1) |
|
|
|
477 | (1) |
|
|
|
478 | (2) |
|
|
|
480 | (1) |
| 20 Accessing CSS from JavaScript |
|
481 | (20) |
|
Revisiting the getElementByld Function |
|
|
481 | (3) |
|
|
|
481 | (1) |
|
|
|
482 | (1) |
|
|
|
483 | (1) |
|
|
|
484 | (1) |
|
Accessing CSS Properties from JavaScript |
|
|
484 | (4) |
|
|
|
485 | (1) |
|
|
|
486 | (2) |
|
|
|
488 | (3) |
|
|
|
488 | (1) |
|
Attaching Events to Objects in a Script |
|
|
489 | (1) |
|
Attaching to Other Events |
|
|
490 | (1) |
|
|
|
491 | (3) |
|
|
|
492 | (1) |
|
Alternatives to Adding and Removing Elements |
|
|
493 | (1) |
|
|
|
494 | (5) |
|
|
|
494 | (1) |
|
|
|
495 | (1) |
|
|
|
495 | (2) |
|
Using Interrupts for Animation |
|
|
497 | (2) |
|
|
|
499 | (2) |
| 21 Introduction to jQuery |
|
501 | (58) |
|
|
|
501 | (1) |
|
|
|
502 | (3) |
|
Choosing the Right Version |
|
|
502 | (2) |
|
|
|
504 | (1) |
|
Using a Content Delivery Network |
|
|
504 | (1) |
|
|
|
505 | (1) |
|
|
|
505 | (2) |
|
|
|
506 | (1) |
|
Avoiding Library Conflicts |
|
|
507 | (1) |
|
|
|
507 | (3) |
|
|
|
508 | (1) |
|
|
|
508 | (1) |
|
|
|
509 | (1) |
|
|
|
509 | (1) |
|
|
|
509 | (1) |
|
|
|
510 | (1) |
|
Waiting Until the Document Is Ready |
|
|
511 | (1) |
|
Event Functions and Properties |
|
|
512 | (11) |
|
The blur and focus Events |
|
|
513 | (1) |
|
|
|
514 | (1) |
|
The click and dblclick Events |
|
|
514 | (1) |
|
|
|
515 | (2) |
|
|
|
517 | (1) |
|
|
|
517 | (3) |
|
|
|
520 | (1) |
|
Alternative Mouse Methods |
|
|
521 | (1) |
|
|
|
522 | (1) |
|
|
|
523 | (9) |
|
|
|
524 | (1) |
|
|
|
525 | (1) |
|
|
|
526 | (1) |
|
Sliding Elements Up and Down |
|
|
527 | (1) |
|
|
|
528 | (3) |
|
|
|
531 | (1) |
|
|
|
532 | (5) |
|
The Difference Between the text and html Methods |
|
|
533 | (1) |
|
|
|
533 | (2) |
|
Adding and Removing Elements |
|
|
535 | (2) |
|
Dynamically Applying Classes |
|
|
537 | (1) |
|
|
|
537 | (4) |
|
The width and height Methods |
|
|
538 | (2) |
|
The innerWidth and innerHeight Methods |
|
|
540 | (1) |
|
The outerWidth and OuterHeight Methods |
|
|
540 | (1) |
|
|
|
541 | (11) |
|
|
|
541 | (4) |
|
|
|
545 | (1) |
|
|
|
545 | (2) |
|
Selecting the Next and Previous Elements |
|
|
547 | (2) |
|
Traversing jQuery Selections |
|
|
549 | (1) |
|
|
|
550 | (2) |
|
Using jQuery Without Selectors |
|
|
552 | (2) |
|
|
|
552 | (1) |
|
|
|
553 | (1) |
|
Using Asynchronous Communication |
|
|
554 | (1) |
|
|
|
554 | (1) |
|
|
|
555 | (1) |
|
|
|
555 | (1) |
|
|
|
556 | (1) |
|
|
|
556 | (1) |
|
|
|
556 | (3) |
| 22 Introduction to jQuery Mobile |
|
559 | (20) |
|
|
|
560 | (1) |
|
|
|
561 | (2) |
|
|
|
563 | (5) |
|
|
|
563 | (1) |
|
Linking Within a Multipage Document |
|
|
564 | (1) |
|
|
|
565 | (3) |
|
|
|
568 | (3) |
|
|
|
571 | (6) |
|
|
|
572 | (2) |
|
|
|
574 | (3) |
|
|
|
577 | (1) |
|
|
|
577 | (2) |
| 23 Introduction to HTML5 |
|
579 | (8) |
|
|
|
579 | (2) |
|
|
|
581 | (2) |
|
|
|
583 | (1) |
|
|
|
584 | (1) |
|
|
|
585 | (1) |
|
|
|
585 | (1) |
|
|
|
585 | (1) |
|
|
|
586 | (1) |
| 24 The HTML5 Canvas |
|
587 | (54) |
|
Creating and Accessing a Canvas |
|
|
587 | (13) |
|
|
|
589 | (2) |
|
|
|
591 | (1) |
|
|
|
591 | (1) |
|
|
|
591 | (1) |
|
|
|
592 | (1) |
|
|
|
592 | (1) |
|
The createLinearGradient Method |
|
|
593 | (2) |
|
The addColorStop Method in Detail |
|
|
595 | (1) |
|
The createRadialGradient Method |
|
|
596 | (2) |
|
|
|
598 | (2) |
|
Writing Text to the Canvas |
|
|
600 | (3) |
|
|
|
600 | (1) |
|
The textBaseLine Property |
|
|
601 | (1) |
|
|
|
601 | (1) |
|
|
|
601 | (1) |
|
|
|
602 | (1) |
|
|
|
603 | (1) |
|
|
|
603 | (3) |
|
|
|
604 | (1) |
|
The lineCap and linejoin Properties |
|
|
604 | (2) |
|
|
|
606 | (1) |
|
|
|
606 | (2) |
|
The moveTo and lineTo Methods |
|
|
607 | (1) |
|
|
|
607 | (1) |
|
|
|
608 | (1) |
|
|
|
608 | (2) |
|
|
|
610 | (3) |
|
|
|
613 | (1) |
|
|
|
614 | (6) |
|
|
|
614 | (3) |
|
|
|
617 | (1) |
|
The quadraticCurveTo Method |
|
|
618 | (1) |
|
|
|
619 | (1) |
|
|
|
620 | (5) |
|
|
|
620 | (1) |
|
|
|
621 | (1) |
|
|
|
621 | (2) |
|
|
|
623 | (1) |
|
|
|
623 | (2) |
|
Editing at the Pixel Level |
|
|
625 | (4) |
|
|
|
625 | (3) |
|
|
|
628 | (1) |
|
The createlmageData Method |
|
|
628 | (1) |
|
Advanced Graphical Effects |
|
|
629 | (3) |
|
The globalCompositeOperation Property |
|
|
629 | (3) |
|
|
|
632 | (1) |
|
|
|
632 | (7) |
|
|
|
633 | (1) |
|
The save and restore Methods |
|
|
634 | (1) |
|
|
|
634 | (1) |
|
|
|
635 | (1) |
|
|
|
636 | (2) |
|
|
|
638 | (1) |
|
|
|
639 | (2) |
| 25 HTML5 Audio and Video |
|
641 | (14) |
|
|
|
642 | (1) |
|
|
|
643 | (3) |
|
Supporting Non-HTML5 Browsers |
|
|
646 | (1) |
|
|
|
647 | (6) |
|
|
|
648 | (3) |
|
Supporting Older Browsers |
|
|
651 | (2) |
|
|
|
653 | (2) |
| 26 Other HTML5 Features |
|
655 | (20) |
|
Geolocation and the GPS Service |
|
|
655 | (1) |
|
|
|
656 | (1) |
|
|
|
657 | (3) |
|
|
|
660 | (3) |
|
|
|
661 | (1) |
|
|
|
661 | (2) |
|
|
|
663 | (3) |
|
|
|
666 | (2) |
|
|
|
668 | (4) |
|
|
|
672 | (1) |
|
|
|
673 | (2) |
| 27 Bringing It All Together |
|
675 | (38) |
|
Designing a Social Networking App |
|
|
676 | (1) |
|
|
|
676 | (1) |
|
|
|
676 | (3) |
|
|
|
677 | (2) |
|
|
|
679 | (3) |
|
|
|
682 | (1) |
|
|
|
683 | (1) |
|
|
|
684 | (4) |
|
Checking for Username Availability |
|
|
685 | (1) |
|
|
|
685 | (3) |
|
|
|
688 | (1) |
|
|
|
689 | (2) |
|
|
|
691 | (5) |
|
Adding the "About Me" Text |
|
|
692 | (1) |
|
|
|
692 | (1) |
|
|
|
692 | (1) |
|
Displaying the Current Profile |
|
|
693 | (3) |
|
|
|
696 | (4) |
|
|
|
696 | (1) |
|
Adding and Dropping Friends |
|
|
697 | (1) |
|
|
|
697 | (3) |
|
|
|
700 | (3) |
|
|
|
703 | (3) |
|
|
|
706 | (2) |
|
|
|
708 | (2) |
|
|
|
710 | (3) |
A Solutions to the Chapter Questions |
|
713 | (22) |
| B Online Resources |
|
735 | (4) |
| C MySQL's FULLTEXT Stopwords |
|
739 | (4) |
| D MySQL Functions |
|
743 | (10) |
| E jQuery Selectors, Objects, and Methods |
|
753 | (24) |
| Index |
|
777 | |