Introduction |
|
|
Section 1 Get started fast with PHP and MySQL |
|
|
|
Chapter 1 Introduction to web development with PHP |
|
|
|
The architecture of a web application |
|
|
4 | (10) |
|
How a client-server architecture works |
|
|
4 | (2) |
|
How static web pages are processed |
|
|
6 | (2) |
|
How dynamic web pages are processed |
|
|
8 | (2) |
|
A survey of web application software |
|
|
10 | (2) |
|
Highlights in the history of PHP |
|
|
12 | (1) |
|
Highlights in the history of MySQL |
|
|
12 | (2) |
|
The Product Discount application |
|
|
14 | (8) |
|
|
14 | (2) |
|
|
16 | (2) |
|
|
18 | (2) |
|
|
20 | (2) |
|
How to edit and test a PHP application |
|
|
22 | (12) |
|
How to edit a PHP page with a text editor |
|
|
22 | (2) |
|
How to start and stop Apache and MySQL on your own computer |
|
|
24 | (2) |
|
How to deploy a PHP application |
|
|
26 | (2) |
|
How to run a PHP application |
|
|
28 | (2) |
|
How to test and debug a PHP page |
|
|
30 | (2) |
|
How to view the source code for a web page |
|
|
32 | (2) |
|
How to use NetBeans to develop a PHP application |
|
|
34 | (12) |
|
How to work with PHP projects and files |
|
|
34 | (2) |
|
How to edit and test a PHP application |
|
|
36 | (2) |
|
How to import and configure a PHP project |
|
|
38 | (8) |
|
Chapter 2 How to code a PHP application |
|
|
|
|
46 | (8) |
|
|
46 | (2) |
|
How to code comments and statements |
|
|
48 | (2) |
|
|
50 | (2) |
|
How to declare variables and constants |
|
|
52 | (2) |
|
How to get data from a request |
|
|
54 | (4) |
|
How to use the built-in $_GET array |
|
|
54 | (2) |
|
How to use the built-in $_POST array |
|
|
56 | (1) |
|
When to use the HTTP GET and POST methods |
|
|
56 | (2) |
|
|
58 | (8) |
|
How to code string expressions |
|
|
58 | (1) |
|
How to code echo statements |
|
|
58 | (2) |
|
How to code numeric expressions |
|
|
60 | (2) |
|
How to use the compound assignment operators |
|
|
62 | (2) |
|
How to use some built-in functions |
|
|
64 | (2) |
|
The Product Discount application |
|
|
66 | (4) |
|
|
66 | (1) |
|
The form in the HTML file |
|
|
66 | (2) |
|
|
68 | (2) |
|
How to code control statements |
|
|
70 | (8) |
|
How to code conditional expressions |
|
|
70 | (2) |
|
How to code if statements |
|
|
72 | (2) |
|
How to code while and for statements |
|
|
74 | (2) |
|
How to pass control to another page |
|
|
76 | (2) |
|
The Future Value application |
|
|
78 | (8) |
|
|
78 | (2) |
|
The code for the index.php file |
|
|
80 | (2) |
|
The code for the display_results.php file |
|
|
82 | (4) |
|
How to use the PHP documentation |
|
|
86 | (8) |
|
How to access the PHP manual |
|
|
86 | (1) |
|
How to find the documentation you need |
|
|
86 | (8) |
|
Chapter 3 Introduction to relational databases with MySQL |
|
|
|
An Introduction to relational databases |
|
|
94 | (6) |
|
How a database table is organized |
|
|
94 | (2) |
|
How the tables in a relational database are related |
|
|
96 | (2) |
|
How the columns in a table are defined |
|
|
98 | (2) |
|
The SQL statements for data manipulation |
|
|
100 | (6) |
|
How to select data from a single table |
|
|
100 | (2) |
|
How to select data from multiple tables |
|
|
102 | (2) |
|
How to insert, update, and delete data |
|
|
104 | (2) |
|
|
106 | (4) |
|
|
106 | (2) |
|
Two ways to work with MySQL |
|
|
108 | (2) |
|
|
110 | (14) |
|
|
110 | (1) |
|
How to log in, log out, and change your password |
|
|
110 | (2) |
|
How to import and run a SQL script that creates a database |
|
|
112 | (2) |
|
How to review the data and structure of a table |
|
|
114 | (2) |
|
How to run SQL statements |
|
|
116 | (2) |
|
How to create users with limited privileges |
|
|
118 | (6) |
|
Chapter 4 How to use PHP with a MySQL database |
|
|
|
PHP for working with MySQL |
|
|
124 | (8) |
|
How to connect to a MySQL database |
|
|
124 | (2) |
|
How to execute SELECT statements |
|
|
126 | (2) |
|
How to execute INSERT, UPDATE, and DELETE statements |
|
|
128 | (2) |
|
How to use a try/catch statement to handle exceptions |
|
|
130 | (2) |
|
How to get data from a result set |
|
|
132 | (6) |
|
|
132 | (2) |
|
How to get the data from the first row of a result set |
|
|
134 | (2) |
|
How to get the data from all the rows of a result set |
|
|
136 | (2) |
|
The Product Viewer application |
|
|
138 | (8) |
|
|
138 | (2) |
|
|
140 | (6) |
|
The Product Manager application |
|
|
146 | (14) |
|
|
146 | (2) |
|
|
148 | (12) |
|
Chapter 5 How to use the MVC pattern to organize your code |
|
|
|
How to use the MVC pattern |
|
|
160 | (6) |
|
An introduction to the MVC pattern |
|
|
160 | (2) |
|
|
162 | (2) |
|
|
164 | (2) |
|
The Product Manager application |
|
|
166 | (12) |
|
|
166 | (2) |
|
|
168 | (2) |
|
|
170 | (2) |
|
|
172 | (6) |
|
The Product Catalog application |
|
|
178 | (12) |
|
|
178 | (2) |
|
|
180 | (1) |
|
|
180 | (2) |
|
|
182 | (8) |
|
Chapter 6 How to test and debug a PHP application |
|
|
|
An introduction to testing and debugging |
|
|
190 | (6) |
|
Typical test phases for a PHP application |
|
|
190 | (1) |
|
The three types of errors that can occur |
|
|
190 | (2) |
|
|
192 | (2) |
|
An easy way to trace the execution of your PHP code |
|
|
194 | (2) |
|
How to debug with xDebug and NetBeans |
|
|
196 | (12) |
|
How to set and remove breakpoints |
|
|
196 | (2) |
|
|
198 | (1) |
|
|
198 | (2) |
|
How to inspect the stack trace |
|
|
200 | (8) |
|
Section 2 Master PHP programming |
|
|
|
Chapter 7 How to work with form data |
|
|
|
How to get data from a form |
|
|
208 | (14) |
|
How to get data from text boxes, password boxes, and hidden fields |
|
|
208 | (2) |
|
How to get data from a radio button |
|
|
210 | (2) |
|
How to get data from check box |
|
|
212 | (2) |
|
How to get data from an array of check boxes |
|
|
214 | (2) |
|
How to get data from a drop-down list |
|
|
216 | (2) |
|
How to get data from a list box |
|
|
218 | (2) |
|
How to get data from a text area |
|
|
220 | (2) |
|
How to display data on a web page |
|
|
222 | (10) |
|
How to format special characters |
|
|
222 | (2) |
|
How to format line breaks |
|
|
224 | (2) |
|
How to display data with echo and print statements |
|
|
226 | (6) |
|
Chapter 8 How to code control statements |
|
|
|
How to code conditional expressions |
|
|
232 | (6) |
|
How to use the equality and identity operators |
|
|
232 | (2) |
|
How to use the relational operators |
|
|
234 | (2) |
|
How to use the logical operators |
|
|
236 | (2) |
|
How to code the selection structures |
|
|
238 | (10) |
|
How to code if statements with else clauses |
|
|
238 | (2) |
|
How to code if statements with else if clauses |
|
|
240 | (2) |
|
How to use the conditional operator |
|
|
242 | (2) |
|
How to code switch statements |
|
|
244 | (2) |
|
How to use a switch statement in the controller |
|
|
246 | (2) |
|
How to code the iteration structures |
|
|
248 | (12) |
|
|
248 | (2) |
|
How to code do-while loops |
|
|
250 | (2) |
|
|
252 | (2) |
|
How to use the break and continue statements |
|
|
254 | (6) |
|
Chapter 9 How to work with strings and numbers |
|
|
|
|
260 | (14) |
|
|
260 | (2) |
|
How to use escape sequences |
|
|
262 | (2) |
|
How to work with string length and substrings |
|
|
264 | (2) |
|
|
266 | (1) |
|
How to replace part of a string |
|
|
266 | (2) |
|
|
268 | (2) |
|
How to convert strings to and from arrays |
|
|
270 | (1) |
|
How to convert strings to and from ASCII values |
|
|
270 | (2) |
|
|
272 | (2) |
|
|
274 | (8) |
|
|
274 | (2) |
|
How to assign floating-point values |
|
|
276 | (2) |
|
How to use the math functions |
|
|
278 | (2) |
|
How to generate random numbers |
|
|
280 | (2) |
|
Other skills for working with strings and numbers |
|
|
282 | (10) |
|
How to use the sprintf function to format strings and numbers |
|
|
282 | (4) |
|
How to convert strings to numbers |
|
|
286 | (6) |
|
Chapter 10 How to work with dates |
|
|
|
How to use timestamps to work with dates |
|
|
292 | (8) |
|
How to create and format timestamps |
|
|
292 | (2) |
|
How to work with timestamps |
|
|
294 | (2) |
|
How to use the strtotime function |
|
|
296 | (2) |
|
Examples of working with timestamps |
|
|
298 | (2) |
|
How to use objects to work with dates |
|
|
300 | (12) |
|
How to use the DateTime class |
|
|
300 | (2) |
|
How to use the DateInterval class |
|
|
302 | (2) |
|
How to use the DateInterval and DateTime classes together |
|
|
304 | (2) |
|
Examples of working with DateTime objects |
|
|
306 | (6) |
|
Chapter 11 How to create and use arrays |
|
|
|
|
312 | (6) |
|
How to add delete elements |
|
|
314 | (1) |
|
How to work with variable substitution |
|
|
314 | (2) |
|
How to use for loops to work with arrays |
|
|
316 | (2) |
|
How to create and use an associative array |
|
|
318 | (6) |
|
How to add and delete elements |
|
|
320 | (1) |
|
How to work with variable substitution |
|
|
320 | (2) |
|
How to use foreach loops to work with arrays |
|
|
322 | (2) |
|
How to use functions to work with arrays |
|
|
324 | (10) |
|
How to fill, merge, slice, and splice arrays |
|
|
324 | (2) |
|
How to work with queues and stacks |
|
|
326 | (2) |
|
How to get the sum and product of elements |
|
|
328 | (1) |
|
|
328 | (2) |
|
|
330 | (2) |
|
|
332 | (2) |
|
How to work with arrays of arrays |
|
|
334 | (4) |
|
Understanding an array of arrays |
|
|
334 | (2) |
|
How to create and use an array of arrays |
|
|
336 | (2) |
|
The Task List Manager application |
|
|
338 | (10) |
|
|
338 | (1) |
|
The code for the controller |
|
|
338 | (2) |
|
|
340 | (8) |
|
Chapter 12 How to work with cookies and sessions |
|
|
|
|
348 | (6) |
|
An introduction to cookies |
|
|
348 | (2) |
|
How to set and get a cookie |
|
|
350 | (2) |
|
How to enable or disable cookies |
|
|
352 | (2) |
|
How to work with sessions |
|
|
354 | (10) |
|
Why session tracking is difficult with HTTP |
|
|
354 | (1) |
|
How session tracking works in PHP |
|
|
354 | (2) |
|
|
356 | (2) |
|
How to set and get session variables |
|
|
358 | (2) |
|
|
360 | (2) |
|
|
362 | (2) |
|
The Shopping Cart application |
|
|
364 | (16) |
|
|
364 | (2) |
|
|
366 | (2) |
|
|
368 | (2) |
|
|
370 | (2) |
|
|
372 | (8) |
|
Chapter 13 How to create and use functions |
|
|
|
Basic skills for working with functions |
|
|
380 | (10) |
|
How to create and call a function |
|
|
380 | (2) |
|
How to pass arguments by value and by reference |
|
|
382 | (2) |
|
|
384 | (2) |
|
How to provide default values for parameters |
|
|
386 | (2) |
|
How to use variable-length parameter lists |
|
|
388 | (2) |
|
How to create and use a library of functions |
|
|
390 | (6) |
|
|
390 | (2) |
|
How to set the include path |
|
|
392 | (1) |
|
|
392 | (2) |
|
How to create and use namespaces |
|
|
394 | (2) |
|
Advanced skills for working with functions |
|
|
396 | (6) |
|
How to work with variable functions and callbacks |
|
|
396 | (2) |
|
How to work with anonymous functions |
|
|
398 | (2) |
|
How to work with closures |
|
|
400 | (2) |
|
The Shopping Cart application |
|
|
402 | (12) |
|
|
402 | (2) |
|
|
404 | (2) |
|
|
406 | (1) |
|
|
406 | (8) |
|
Chapter 14 How to create and use objects |
|
|
|
How to create and use classes |
|
|
414 | (14) |
|
The code for the Category class |
|
|
414 | (2) |
|
The code for the Product class |
|
|
416 | (4) |
|
|
420 | (2) |
|
How to code constructors and destructors |
|
|
422 | (2) |
|
|
424 | (2) |
|
How to create and use objects |
|
|
426 | (2) |
|
How to code class constants, properties, and methods |
|
|
428 | (4) |
|
How to code class constants |
|
|
428 | (2) |
|
How to code static properties and methods |
|
|
430 | (2) |
|
The object-oriented Product Manager application |
|
|
432 | (10) |
|
|
432 | (2) |
|
|
434 | (4) |
|
|
438 | (2) |
|
|
440 | (2) |
|
Additional skills for working with objects |
|
|
442 | (6) |
|
How to loop through an object's properties |
|
|
442 | (2) |
|
How to clone and compare objects |
|
|
444 | (2) |
|
|
446 | (2) |
|
How to work with Inheritance |
|
|
448 | (14) |
|
|
448 | (2) |
|
How to use the protected access modifier |
|
|
450 | (2) |
|
How to create abstract classes and methods |
|
|
452 | (2) |
|
How to create final classes and methods |
|
|
454 | (2) |
|
How to work with interfaces |
|
|
456 | (6) |
|
Chapter 15 How to use regular expressions, handle exception, and validate data |
|
|
|
How to use regular expressions |
|
|
462 | (16) |
|
How to create and use regular expressions |
|
|
462 | (2) |
|
|
464 | (2) |
|
How to use the character class |
|
|
466 | (2) |
|
How to create complex patterns |
|
|
468 | (2) |
|
How to use look-ahead assertions |
|
|
470 | (2) |
|
How to use a multiline regular expression |
|
|
472 | (1) |
|
How to use a global regular expression |
|
|
472 | (2) |
|
How to replace a regular expression with a string |
|
|
474 | (1) |
|
How to split a string on a regular expression |
|
|
474 | (2) |
|
Regular expressions for data validation |
|
|
476 | (2) |
|
|
478 | (4) |
|
How to create and throw exceptions |
|
|
478 | (2) |
|
How to use the try-catch statement |
|
|
480 | (2) |
|
The Registration application |
|
|
482 | (22) |
|
|
482 | (1) |
|
|
482 | (2) |
|
|
484 | (8) |
|
|
492 | (2) |
|
|
494 | (2) |
|
A long version of the Registration application |
|
|
496 | (8) |
|
Section 3 Master MySQL programming |
|
|
|
Chapter 16 How to design a database |
|
|
|
How to design a data structure |
|
|
504 | (16) |
|
The basic steps for designing a data structure |
|
|
504 | (2) |
|
How to identify the data elements |
|
|
506 | (2) |
|
How to subdivide the data elements |
|
|
508 | (2) |
|
How to identify the tables and assign columns |
|
|
510 | (2) |
|
How to identify the primary and foreign keys |
|
|
512 | (2) |
|
How to enforce the relationships between tables |
|
|
514 | (2) |
|
|
516 | (2) |
|
How to identify the columns to be indexed |
|
|
518 | (2) |
|
How to normalize a data structure |
|
|
520 | (10) |
|
|
520 | (2) |
|
How to apply the first normal form |
|
|
522 | (2) |
|
How to apply the second normal form |
|
|
524 | (2) |
|
How to apply the third normal form |
|
|
526 | (2) |
|
When and how to denormalize a data structure |
|
|
528 | (2) |
|
|
530 | (8) |
|
An introduction to MySQL Workbench |
|
|
530 | (2) |
|
How to use MySQL Workbench to create database diagrams |
|
|
532 | (6) |
|
Chapter 17 How to use SQL to create a MySQL database |
|
|
|
How to work with databases |
|
|
538 | (2) |
|
|
538 | (1) |
|
|
538 | (1) |
|
|
538 | (2) |
|
|
540 | (10) |
|
An introduction to MySQL data types |
|
|
540 | (2) |
|
|
542 | (2) |
|
How to code a primary key |
|
|
544 | (2) |
|
|
546 | (2) |
|
|
548 | (2) |
|
|
550 | (2) |
|
|
550 | (1) |
|
|
550 | (2) |
|
How to work with users and privileges |
|
|
552 | (10) |
|
|
552 | (2) |
|
How to create, rename, and drop users |
|
|
554 | (2) |
|
|
556 | (2) |
|
|
558 | (2) |
|
|
560 | (2) |
|
Other skills for creating a database |
|
|
562 | (4) |
|
How to load data from text files |
|
|
562 | (2) |
|
How to dump a database to a SQL script |
|
|
564 | (2) |
|
The script for the Guitar Shop database |
|
|
566 | (8) |
|
Chapter 18 How to use SQL to work with a MySQL database |
|
|
|
How to select data from a single table |
|
|
574 | (16) |
|
How to select columns from a table |
|
|
574 | (2) |
|
How to use an alias for a column |
|
|
576 | (2) |
|
How to select rows with a LIMIT clause |
|
|
578 | (2) |
|
How to select rows with a WHERE clause |
|
|
580 | (2) |
|
How to use the logical operators |
|
|
582 | (2) |
|
How to use the IS NULL operator |
|
|
584 | (2) |
|
How to use the LIKE operator |
|
|
586 | (2) |
|
How to sort rows with an ORDER BY clause |
|
|
588 | (2) |
|
How to select data from multiple tables |
|
|
590 | (4) |
|
How to code an inner join |
|
|
590 | (2) |
|
When and how to use table aliases |
|
|
592 | (2) |
|
How to code summary queries |
|
|
594 | (4) |
|
How to code aggregate functions |
|
|
594 | (2) |
|
How to group queries by column |
|
|
596 | (2) |
|
|
598 | (4) |
|
|
598 | (2) |
|
How to code correlated subqueries |
|
|
600 | (2) |
|
How to insert, update, and delete rows |
|
|
602 | (10) |
|
|
602 | (2) |
|
|
604 | (2) |
|
|
606 | (6) |
|
Chapter 19 Professional PHP for working with MySQL |
|
|
|
Three ways to use PHP to work with MySQL |
|
|
612 | (2) |
|
|
612 | (1) |
|
|
612 | (1) |
|
|
612 | (2) |
|
|
614 | (12) |
|
How to work with prepared statements |
|
|
614 | (4) |
|
How to set the error mode for PDO |
|
|
618 | (2) |
|
|
620 | (6) |
|
|
626 | (20) |
|
How to connect to a database |
|
|
626 | (2) |
|
|
628 | (2) |
|
How to insert, update, and delete data |
|
|
630 | (2) |
|
How to work with prepared statements |
|
|
632 | (4) |
|
The object-oriented style compared to the procedural style |
|
|
636 | (2) |
|
|
638 | (8) |
|
Chapter 20 A database-driven web site |
|
|
|
How to work with large text columns |
|
|
646 | (4) |
|
A simple content management system |
|
|
646 | (2) |
|
How to add HTML tags to text |
|
|
648 | (2) |
|
The include files for the Guitar Shop web site |
|
|
650 | (8) |
|
|
650 | (1) |
|
|
650 | (2) |
|
|
652 | (1) |
|
|
652 | (6) |
|
The Product Catalog application |
|
|
658 | (4) |
|
|
658 | (1) |
|
|
658 | (1) |
|
|
658 | (4) |
|
The Product Manager application |
|
|
662 | (14) |
|
|
662 | (2) |
|
|
664 | (2) |
|
|
666 | (10) |
|
Section 4 Master the advanced skills for building web sites |
|
|
|
Chapter 21 How to create secure web sites |
|
|
|
How to use a secure connection |
|
|
676 | (10) |
|
An introduction to secure connections |
|
|
676 | (2) |
|
How SSL authentication works |
|
|
678 | (2) |
|
How to get a digital secure certificate |
|
|
680 | (2) |
|
How to request a secure connection |
|
|
682 | (2) |
|
How to redirect to a secure connection |
|
|
684 | (2) |
|
How to use authentication |
|
|
686 | (14) |
|
Three types of authentication |
|
|
686 | (2) |
|
How to store and validate a password |
|
|
688 | (2) |
|
How to use form-based authentication |
|
|
690 | (6) |
|
How to use basic authentication |
|
|
696 | (4) |
|
How to work with encrypted data |
|
|
700 | (8) |
|
How to encrypt and decrypt data |
|
|
700 | (2) |
|
A class for storing encrypted data |
|
|
702 | (6) |
|
Chapter 22 How to send email and access other web sites |
|
|
|
|
708 | (16) |
|
|
708 | (2) |
|
How to install the PEAR Mail package |
|
|
710 | (2) |
|
How to set up a test email account |
|
|
712 | (2) |
|
How to use PEAR Mail to send an email |
|
|
714 | (4) |
|
A helper function for sending an email |
|
|
718 | (4) |
|
How to use the helper function to send an email |
|
|
722 | (2) |
|
How to get data from other servers |
|
|
724 | (6) |
|
How to enable the cURL library |
|
|
724 | (2) |
|
How to use cURL to connect to another web server |
|
|
726 | (2) |
|
How to use an API provided by another server |
|
|
728 | (2) |
|
The YouTube Search application |
|
|
730 | (14) |
|
|
730 | (2) |
|
|
732 | (4) |
|
|
736 | (2) |
|
|
738 | (6) |
|
Chapter 23 How to work with files, uploads, and images |
|
|
|
|
744 | (10) |
|
How to get a directory listing |
|
|
744 | (2) |
|
How to read and write an entire file |
|
|
746 | (2) |
|
How to read and write part of a file |
|
|
748 | (2) |
|
How to read and write CSV data |
|
|
750 | (2) |
|
How to copy, rename, and delete a file |
|
|
752 | (2) |
|
|
754 | (2) |
|
HTML for uploading a file |
|
|
754 | (1) |
|
PHP for working with an uploaded file |
|
|
754 | (2) |
|
|
756 | (8) |
|
How to get information about an image |
|
|
756 | (2) |
|
How to read and write images |
|
|
758 | (2) |
|
|
760 | (2) |
|
How to work with transparency |
|
|
762 | (2) |
|
The Image Upload application |
|
|
764 | (16) |
|
|
764 | (2) |
|
|
766 | (6) |
|
|
772 | (2) |
|
|
774 | (6) |
|
Chapter 24 An eCommerce web Site |
|
|
|
An introduction to the web site |
|
|
780 | (4) |
|
Prototyping and stepwise refinement |
|
|
780 | (2) |
|
The directory structure of the web site |
|
|
782 | (2) |
|
The user interface for end users |
|
|
784 | (8) |
|
|
784 | (2) |
|
|
786 | (1) |
|
The Checkout and Account applications |
|
|
786 | (2) |
|
|
788 | (4) |
|
The user interface for administrators |
|
|
792 | (10) |
|
The Admin Login and Admin Menu pages |
|
|
792 | (2) |
|
The Product Manager application |
|
|
794 | (1) |
|
The Category Manager application |
|
|
794 | (1) |
|
The Order Manager application |
|
|
794 | (1) |
|
The Account Manager application |
|
|
794 | (8) |
|
|
|
Appendix A How to set up your PC for this book |
|
|
|
How to install Firefox and Notepad++ |
|
|
802 | (2) |
|
How to install the Firefox browser |
|
|
802 | (1) |
|
|
802 | (2) |
|
How to install and configure XAMPP |
|
|
804 | (4) |
|
|
804 | (2) |
|
How to configure phpMy Admin |
|
|
806 | (2) |
|
How to install and configure NetBeans |
|
|
808 | (2) |
|
|
808 | (1) |
|
|
808 | (2) |
|
How to install the book applications and databases |
|
|
810 | (4) |
|
How to install the source code for this book |
|
|
810 | (2) |
|
How to create and restore the databases |
|
|
812 | (2) |
|
How to fix a possible problem with the time zone |
|
|
814 | (4) |
|
Appendix B How to set up your Mac for this book |
|
|
|
How to install Firefox and TextWrangler |
|
|
818 | (2) |
|
How to install the Firefox browser |
|
|
818 | (1) |
|
How to install TextWrangler |
|
|
818 | (2) |
|
How to install and configure XAMPP |
|
|
820 | (4) |
|
|
820 | (2) |
|
How to configure phpMy Admin |
|
|
822 | (2) |
|
How to install NetBeans and xDebug |
|
|
824 | (2) |
|
|
824 | (1) |
|
|
824 | (2) |
|
How to install the book applications and databases |
|
|
826 | (4) |
|
How to install the source code for this book |
|
|
826 | (2) |
|
How to create and restore the databases |
|
|
828 | (2) |
|
How to fix a possible problem with the time zone |
|
|
830 | |