Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 30 trang
THÔNG TIN TÀI LIỆU
Cấu trúc
cover.pdf
page_c1.pdf
page_r01.pdf
page_r02.pdf
page_r03.pdf
page_r04.pdf
page_r05.pdf
page_r06.pdf
page_r07.pdf
page_r08.pdf
page_r09.pdf
page_r10.pdf
page_r11.pdf
page_r12.pdf
page_r13.pdf
page_r14.pdf
page_r15.pdf
page_r16.pdf
page_r17.pdf
page_r18.pdf
page_r19.pdf
page_r20.pdf
page_r21.pdf
page_r22.pdf
page_r23.pdf
page_r24.pdf
page_r25.pdf
page_r26.pdf
page_r27.pdf
page_r28.pdf
page_z0001.pdf
page_z0002.pdf
page_z0003.pdf
page_z0004.pdf
page_z0005.pdf
page_z0006.pdf
page_z0007.pdf
page_z0008.pdf
page_z0009.pdf
page_z0010.pdf
page_z0011.pdf
page_z0012.pdf
page_z0013.pdf
page_z0014.pdf
page_z0015.pdf
page_z0016.pdf
page_z0017.pdf
page_z0018.pdf
page_z0019.pdf
page_z0020.pdf
page_z0021.pdf
page_z0022.pdf
page_z0023.pdf
page_z0024.pdf
page_z0025.pdf
page_z0026.pdf
page_z0027.pdf
page_z0028.pdf
page_z0029.pdf
page_z0030.pdf
page_z0031.pdf
page_z0032.pdf
page_z0033.pdf
page_z0034.pdf
page_z0035.pdf
page_z0036.pdf
page_z0037.pdf
page_z0038.pdf
page_z0039.pdf
page_z0040.pdf
page_z0041.pdf
page_z0042.pdf
page_z0043.pdf
page_z0044.pdf
page_z0045.pdf
page_z0046.pdf
page_z0047.pdf
page_z0048.pdf
page_z0049.pdf
page_z0050.pdf
page_z0051.pdf
page_z0052.pdf
page_z0053.pdf
page_z0054.pdf
page_z0055.pdf
page_z0056.pdf
page_z0057.pdf
page_z0058.pdf
page_z0059.pdf
page_z0060.pdf
page_z0061.pdf
page_z0062.pdf
page_z0063.pdf
page_z0064.pdf
page_z0065.pdf
page_z0066.pdf
page_z0067.pdf
page_z0068.pdf
page_z0069.pdf
page_z0070.pdf
page_z0071.pdf
page_z0072.pdf
page_z0073.pdf
page_z0074.pdf
page_z0075.pdf
page_z0076.pdf
page_z0077.pdf
page_z0078.pdf
page_z0079.pdf
page_z0080.pdf
page_z0081.pdf
page_z0082.pdf
page_z0083.pdf
page_z0084.pdf
page_z0085.pdf
page_z0086.pdf
page_z0087.pdf
page_z0088.pdf
page_z0089.pdf
page_z0090.pdf
page_z0091.pdf
page_z0092.pdf
page_z0093.pdf
page_z0094.pdf
page_z0095.pdf
page_z0096.pdf
page_z0097.pdf
page_z0098.pdf
page_z0099.pdf
page_z0100.pdf
page_z0101.pdf
page_z0102.pdf
page_z0103.pdf
page_z0104.pdf
page_z0105.pdf
page_z0106.pdf
page_z0107.pdf
page_z0108.pdf
page_z0109.pdf
page_z0110.pdf
page_z0111.pdf
page_z0112.pdf
page_z0113.pdf
page_z0114.pdf
page_z0115.pdf
page_z0116.pdf
page_z0117.pdf
page_z0118.pdf
page_z0119.pdf
page_z0120.pdf
page_z0121.pdf
page_z0122.pdf
page_z0123.pdf
page_z0124.pdf
page_z0125.pdf
page_z0126.pdf
page_z0127.pdf
page_z0128.pdf
page_z0129.pdf
page_z0130.pdf
page_z0131.pdf
page_z0132.pdf
page_z0133.pdf
page_z0134.pdf
page_z0135.pdf
page_z0136.pdf
page_z0137.pdf
page_z0138.pdf
page_z0139.pdf
page_z0140.pdf
page_z0141.pdf
page_z0142.pdf
page_z0143.pdf
page_z0144.pdf
page_z0145.pdf
page_z0146.pdf
page_z0147.pdf
page_z0148.pdf
page_z0149.pdf
page_z0150.pdf
page_z0151.pdf
page_z0152.pdf
page_z0153.pdf
page_z0154.pdf
page_z0155.pdf
page_z0156.pdf
page_z0157.pdf
page_z0158.pdf
page_z0159.pdf
page_z0160.pdf
page_z0161.pdf
page_z0162.pdf
page_z0163.pdf
page_z0164.pdf
page_z0165.pdf
page_z0166.pdf
page_z0167.pdf
page_z0168.pdf
page_z0169.pdf
page_z0170.pdf
page_z0171.pdf
page_z0172.pdf
page_z0173.pdf
page_z0174.pdf
page_z0175.pdf
page_z0176.pdf
page_z0177.pdf
page_z0178.pdf
page_z0179.pdf
page_z0180.pdf
page_z0181.pdf
page_z0182.pdf
page_z0183.pdf
page_z0184.pdf
page_z0185.pdf
page_z0186.pdf
page_z0187.pdf
page_z0188.pdf
page_z0189.pdf
page_z0190.pdf
page_z0191.pdf
page_z0192.pdf
page_z0193.pdf
page_z0194.pdf
page_z0195.pdf
page_z0196.pdf
page_z0197.pdf
page_z0198.pdf
page_z0199.pdf
page_z0200.pdf
page_z0201.pdf
page_z0202.pdf
page_z0203.pdf
page_z0204.pdf
page_z0205.pdf
page_z0206.pdf
page_z0207.pdf
page_z0208.pdf
page_z0209.pdf
page_z0210.pdf
page_z0211.pdf
page_z0212.pdf
page_z0213.pdf
page_z0214.pdf
page_z0215.pdf
page_z0216.pdf
page_z0217.pdf
page_z0218.pdf
page_z0219.pdf
page_z0220.pdf
page_z0221.pdf
page_z0222.pdf
page_z0223.pdf
page_z0224.pdf
page_z0225.pdf
page_z0226.pdf
page_z0227.pdf
page_z0228.pdf
page_z0229.pdf
page_z0230.pdf
page_z0231.pdf
page_z0232.pdf
page_z0233.pdf
page_z0234.pdf
page_z0235.pdf
page_z0236.pdf
page_z0237.pdf
page_z0238.pdf
page_z0239.pdf
page_z0240.pdf
page_z0241.pdf
page_z0242.pdf
page_z0243.pdf
page_z0244.pdf
page_z0245.pdf
page_z0246.pdf
page_z0247.pdf
page_z0248.pdf
page_z0249.pdf
page_z0250.pdf
page_z0251.pdf
page_z0252.pdf
page_z0253.pdf
page_z0254.pdf
page_z0255.pdf
page_z0256.pdf
page_z0257.pdf
page_z0258.pdf
page_z0259.pdf
page_z0260.pdf
page_z0261.pdf
page_z0262.pdf
page_z0263.pdf
page_z0264.pdf
page_z0265.pdf
page_z0266.pdf
page_z0267.pdf
page_z0268.pdf
page_z0269.pdf
page_z0270.pdf
page_z0271.pdf
page_z0272.pdf
page_z0273.pdf
page_z0274.pdf
page_z0275.pdf
page_z0276.pdf
page_z0277.pdf
page_z0278.pdf
page_z0279.pdf
page_z0280.pdf
page_z0281.pdf
page_z0282.pdf
page_z0283.pdf
page_z0284.pdf
page_z0285.pdf
page_z0286.pdf
page_z0287.pdf
page_z0288.pdf
page_z0289.pdf
page_z0290.pdf
page_z0291.pdf
page_z0292.pdf
page_z0293.pdf
page_z0294.pdf
page_z0295.pdf
page_z0296.pdf
page_z0297.pdf
page_z0298.pdf
page_z0299.pdf
page_z0300.pdf
page_z0301.pdf
page_z0302.pdf
page_z0303.pdf
page_z0304.pdf
page_z0305.pdf
page_z0306.pdf
page_z0307.pdf
page_z0308.pdf
page_z0309.pdf
page_z0310.pdf
page_z0311.pdf
page_z0312.pdf
page_z0313.pdf
page_z0314.pdf
page_z0315.pdf
page_z0316.pdf
page_z0317.pdf
page_z0318.pdf
page_z0319.pdf
page_z0320.pdf
page_z0321.pdf
page_z0322.pdf
page_z0323.pdf
page_z0324.pdf
page_z0325.pdf
page_z0326.pdf
page_z0327.pdf
page_z0328.pdf
page_z0329.pdf
page_z0330.pdf
page_z0331.pdf
page_z0332.pdf
page_z0333.pdf
page_z0334.pdf
page_z0335.pdf
page_z0336.pdf
page_z0337.pdf
page_z0338.pdf
page_z0339.pdf
page_z0340.pdf
page_z0341.pdf
page_z0342.pdf
page_z0343.pdf
page_z0344.pdf
page_z0345.pdf
page_z0346.pdf
page_z0347.pdf
page_z0348.pdf
page_z0349.pdf
page_z0350.pdf
page_z0351.pdf
page_z0352.pdf
page_z0353.pdf
page_z0354.pdf
page_z0355.pdf
page_z0356.pdf
page_z0357.pdf
page_z0358.pdf
page_z0359.pdf
page_z0360.pdf
page_z0361.pdf
page_z0362.pdf
page_z0363.pdf
page_z0364.pdf
page_z0365.pdf
page_z0366.pdf
page_z0367.pdf
page_z0368.pdf
page_z0369.pdf
page_z0370.pdf
page_z0371.pdf
page_z0372.pdf
page_z0373.pdf
page_z0374.pdf
page_z0375.pdf
page_z0376.pdf
page_z0377.pdf
page_z0378.pdf
page_z0379.pdf
page_z0380.pdf
page_z0381.pdf
page_z0382.pdf
page_z0383.pdf
page_z0384.pdf
page_z0385.pdf
page_z0386.pdf
page_z0387.pdf
page_z0388.pdf
page_z0389.pdf
page_z0390.pdf
page_z0391.pdf
page_z0392.pdf
page_z0393.pdf
page_z0394.pdf
page_z0395.pdf
page_z0396.pdf
page_z0397.pdf
page_z0398.pdf
page_z0399.pdf
page_z0400.pdf
page_z0401.pdf
page_z0402.pdf
page_z0403.pdf
page_z0404.pdf
page_z0405.pdf
page_z0406.pdf
page_z0407.pdf
page_z0408.pdf
page_z0409.pdf
page_z0410.pdf
page_z0411.pdf
page_z0412.pdf
page_z0413.pdf
page_z0414.pdf
page_z0415.pdf
page_z0416.pdf
page_z0417.pdf
page_z0418.pdf
page_z0419.pdf
page_z0420.pdf
page_z0421.pdf
page_z0422.pdf
page_z0423.pdf
page_z0424.pdf
page_z0425.pdf
page_z0426.pdf
page_z0427.pdf
page_z0428.pdf
page_z0429.pdf
page_z0430.pdf
page_z0431.pdf
page_z0432.pdf
page_z0433.pdf
page_z0434.pdf
page_z0435.pdf
page_z0436.pdf
page_z0437.pdf
page_z0438.pdf
page_z0439.pdf
page_z0440.pdf
page_z0441.pdf
page_z0442.pdf
page_z0443.pdf
page_z0444.pdf
page_z0445.pdf
page_z0446.pdf
page_z0447.pdf
page_z0448.pdf
page_z0449.pdf
page_z0450.pdf
page_z0451.pdf
page_z0452.pdf
page_z0453.pdf
page_z0454.pdf
page_z0455.pdf
page_z0456.pdf
page_z0457.pdf
page_z0458.pdf
page_z0459.pdf
page_z0460.pdf
page_z0461.pdf
page_z0462.pdf
page_z0463.pdf
page_z0464.pdf
page_z0465.pdf
page_z0466.pdf
page_z0467.pdf
page_z0468.pdf
page_z0469.pdf
page_z0470.pdf
page_z0471.pdf
page_z0472.pdf
page_z0473.pdf
page_z0474.pdf
page_z0475.pdf
page_z0476.pdf
page_z0477.pdf
page_z0478.pdf
page_z0479.pdf
page_z0480.pdf
page_z0481.pdf
page_z0482.pdf
page_z0483.pdf
page_z0484.pdf
page_z0485.pdf
page_z0486.pdf
page_z0487.pdf
page_z0488.pdf
page_z0489.pdf
page_z0490.pdf
page_z0491.pdf
page_z0492.pdf
page_z0493.pdf
page_z0494.pdf
page_z0495.pdf
page_z0496.pdf
page_z0497.pdf
page_z0498.pdf
page_z0499.pdf
page_z0500.pdf
page_z0501.pdf
page_z0502.pdf
page_z0503.pdf
page_z0504.pdf
page_z0505.pdf
page_z0506.pdf
page_z0507.pdf
page_z0508.pdf
page_z0509.pdf
page_z0510.pdf
page_z0511.pdf
page_z0512.pdf
page_z0513.pdf
page_z0514.pdf
page_z0515.pdf
page_z0516.pdf
page_z0517.pdf
page_z0518.pdf
page_z0519.pdf
page_z0520.pdf
page_z0521.pdf
page_z0522.pdf
page_z0523.pdf
page_z0524.pdf
page_z0525.pdf
page_z0526.pdf
page_z0527.pdf
page_z0528.pdf
page_z0529.pdf
page_z0530.pdf
page_z0531.pdf
page_z0532.pdf
page_z0533.pdf
page_z0534.pdf
page_z0535.pdf
page_z0536.pdf
page_z0537.pdf
page_z0538.pdf
page_z0539.pdf
page_z0540.pdf
page_z0541.pdf
page_z0542.pdf
page_z0543.pdf
page_z0544.pdf
page_z0545.pdf
page_z0546.pdf
page_z0547.pdf
page_z0548.pdf
page_z0549.pdf
page_z0550.pdf
page_z0551.pdf
page_z0552.pdf
page_z0553.pdf
page_z0554.pdf
page_z0555.pdf
page_z0556.pdf
page_z0557.pdf
page_z0558.pdf
page_z0559.pdf
page_z0560.pdf
page_z0561.pdf
page_z0562.pdf
page_z0563.pdf
page_z0564.pdf
page_z0565.pdf
page_z0566.pdf
page_z0567.pdf
page_z0568.pdf
page_z0569.pdf
page_z0570.pdf
page_z0571.pdf
page_z0572.pdf
page_z0573.pdf
page_z0574.pdf
page_z0575.pdf
page_z0576.pdf
page_z0577.pdf
page_z0578.pdf
page_z0579.pdf
page_z0580.pdf
page_z0581.pdf
page_z0582.pdf
page_z0583.pdf
page_z0584.pdf
page_z0585.pdf
page_z0586.pdf
page_z0587.pdf
page_z0588.pdf
page_z0589.pdf
page_z0590.pdf
page_z0591.pdf
page_z0592.pdf
page_z0593.pdf
page_z0594.pdf
page_z0595.pdf
page_z0596.pdf
page_z0597.pdf
page_z0598.pdf
page_z0599.pdf
page_z0600.pdf
page_z0601.pdf
page_z0602.pdf
page_z0603.pdf
page_z0604.pdf
page_z0605.pdf
page_z0606.pdf
page_z0607.pdf
page_z0608.pdf
page_z0609.pdf
page_z0610.pdf
page_z0611.pdf
page_z0612.pdf
page_z0613.pdf
page_z0614.pdf
page_z0615.pdf
page_z0616.pdf
page_z0617.pdf
page_z0618.pdf
page_z0619.pdf
page_z0620.pdf
page_z0621.pdf
page_z0622.pdf
page_z0623.pdf
page_z0624.pdf
page_z0625.pdf
page_z0626.pdf
page_z0627.pdf
page_z0628.pdf
page_z0629.pdf
page_z0630.pdf
page_z0631.pdf
page_z0632.pdf
page_z0633.pdf
page_z0634.pdf
page_z0635.pdf
page_z0636.pdf
page_z0637.pdf
page_z0638.pdf
page_z0639.pdf
page_z0640.pdf
page_z0641.pdf
page_z0642.pdf
page_z0643.pdf
page_z0644.pdf
page_z0645.pdf
page_z0646.pdf
page_z0647.pdf
page_z0648.pdf
page_z0649.pdf
page_z0650.pdf
page_z0651.pdf
page_z0652.pdf
page_z0653.pdf
page_z0654.pdf
page_z0655.pdf
page_z0656.pdf
page_z0657.pdf
page_z0658.pdf
page_z0659.pdf
page_z0660.pdf
page_z0661.pdf
page_z0662.pdf
page_z0663.pdf
page_z0664.pdf
page_z0665.pdf
page_z0666.pdf
page_z0667.pdf
page_z0668.pdf
page_z0669.pdf
page_z0670.pdf
page_z0671.pdf
page_z0672.pdf
page_z0673.pdf
page_z0674.pdf
page_z0675.pdf
page_z0676.pdf
page_z0677.pdf
page_z0678.pdf
page_z0679.pdf
page_z0680.pdf
page_z0681.pdf
page_z0682.pdf
page_z0683.pdf
page_z0684.pdf
page_z0685.pdf
page_z0686.pdf
page_z0687.pdf
page_z0688.pdf
page_z0689.pdf
page_z0690.pdf
page_z0691.pdf
page_z0692.pdf
page_z0693.pdf
page_z0694.pdf
page_z0695.pdf
page_z0696.pdf
page_z0697.pdf
page_z0698.pdf
page_z0699.pdf
page_z0700.pdf
page_z0701.pdf
page_z0702.pdf
page_z0703.pdf
page_z0704.pdf
page_z0705.pdf
page_z0706.pdf
page_z0707.pdf
page_z0708.pdf
page_z0709.pdf
page_z0710.pdf
page_z0711.pdf
page_z0712.pdf
page_z0713.pdf
page_z0714.pdf
page_z0715.pdf
page_z0716.pdf
page_z0717.pdf
page_z0718.pdf
page_z0719.pdf
page_z0720.pdf
page_z0721.pdf
page_z0722.pdf
page_z0723.pdf
page_z0724.pdf
page_z0725.pdf
page_z0726.pdf
page_z0727.pdf
page_z0728.pdf
page_z0729.pdf
page_z0730.pdf
page_z0731.pdf
page_z0732.pdf
page_z0733.pdf
page_z0734.pdf
page_z0735.pdf
page_z0736.pdf
page_z0737.pdf
page_z0738.pdf
page_z0739.pdf
page_z0740.pdf
page_z0741.pdf
page_z0742.pdf
page_z0743.pdf
page_z0744.pdf
page_z0745.pdf
page_z0746.pdf
page_z0747.pdf
page_z0748.pdf
page_z0749.pdf
page_z0750.pdf
page_z0751.pdf
page_z0752.pdf
page_z0753.pdf
page_z0754.pdf
page_z0755.pdf
page_z0756.pdf
page_z0757.pdf
page_z0758.pdf
page_z0759.pdf
page_z0760.pdf
page_z0761.pdf
page_z0762.pdf
page_z0763.pdf
page_z0764.pdf
page_z0765.pdf
page_z0766.pdf
page_z0767.pdf
page_z0768.pdf
page_z0769.pdf
page_z0770.pdf
page_z0771.pdf
page_z0772.pdf
page_z0773.pdf
page_z0774.pdf
page_z0775.pdf
page_z0776.pdf
page_z0777.pdf
page_z0778.pdf
page_z0779.pdf
page_z0780.pdf
page_z0781.pdf
page_z0782.pdf
page_z0783.pdf
page_z0784.pdf
page_z0785.pdf
page_z0786.pdf
page_z0787.pdf
page_z0788.pdf
page_z0789.pdf
page_z0790.pdf
page_z0791.pdf
page_z0792.pdf
page_z0793.pdf
page_z0794.pdf
page_z0795.pdf
page_z0796.pdf
page_z0797.pdf
page_z0798.pdf
page_z0799.pdf
page_z0800.pdf
page_z0801.pdf
page_z0802.pdf
page_z0803.pdf
page_z0804.pdf
page_z0805.pdf
page_z0806.pdf
page_z0807.pdf
page_z0808.pdf
Nội dung
Appendix A: Answers to Exercises 661 echo $num1 - $num2; } else if ($operator == ‘*’) { echo $num1 * $num2; } else if ($operator == ‘/’) { echo $num1 / $num2; } else { echo ‘UNKNOWN’; } } ? > < /strong > < /div > < /form > Chapter 6 1. Create the edit/delete code for the people table. Use the movie code as an example. A. One possible solution is as follows. Change commit.php as highlighted: < ?php //connect to MySQL $db = mysql_connect(‘localhost’, ‘bp6am’, ‘bp6ampass’) or die (‘Unable to connect. Check your connection parameters.’); //make sure our recently created database is the active one mysql_select_db(‘moviesite’, $db) or die(mysql_error($db)); ? > < html > < head > < title > Commit < /title > < /head > < body > < ?php switch ($_GET[‘action’]) { case ‘add’: switch ($_GET[‘type’]) { case ‘movie’: $query = ‘INSERT INTO movie (movie_name, movie_year, movie_type, movie_leadactor, movie_director) VALUES (“’ . $_POST[‘movie_name’] . ‘”, ‘ . $_POST[‘movie_year’] . ‘, ‘ . $_POST[‘movie_type’] . ‘, ‘ . $_POST[‘movie_leadactor’] . ‘, ‘ . $_POST[‘movie_director’] . ‘)’; break; case ‘people’: $query = ‘INSERT INTO people (people_fullname, people_isactor, people_isdirector) VALUES (“’ . $_POST[‘people_name’] . ‘”, bapp01.indd 661bapp01.indd 661 12/10/08 5:35:18 PM12/10/08 5:35:18 PM Appendix A: Answers to Exercises 662 ‘ . $_POST[‘people_isactor’] . ‘, ‘ . $_POST[‘people_isdirector’] . ‘)’; break; } break; case ‘edit’: switch ($_GET[‘type’]) { case ‘movie’: $query = ‘UPDATE movie SET movie_name = “’ . $_POST[‘movie_name’] . ‘”, movie_year = ‘ . $_POST[‘movie_year’] . ‘, movie_type = ‘ . $_POST[‘movie_type’] . ‘, movie_leadactor = ‘ . $_POST[‘movie_leadactor’] . ‘, movie_director = ‘ . $_POST[‘movie_director’] . ‘ WHERE movie_id = ‘ . $_POST[‘movie_id’]; break; case ‘people’: $query = ‘UPDATE people SET people_fullname = “’ . $_POST[‘people_fullname’] . ‘”, people_isactor = “’ . $_POST[‘people_isactor’] . ‘”, people_isdirector = “’ . $_POST[‘people_isdirector’] . ‘” WHERE people_id = ‘ . $_GET[‘id’]; break; } break; } if (isset($query)) { $result = mysql_query($query, $db) or die(mysql_error($db)); } ? > < p > Done! < /p > < /body > < /html > Chapter 7 1. Create a site called “ A Virtual Vacation. ” Offer different backgrounds that people can superimpose photos of themselves on, and let them send virtual postcards to their friends and family. A. Your code would need to include a background/upload page and a result page. We cover sending e - mail postcards in Chapter 11 , so you can simply use the scripts from that chapter and insert your newly created postcard. This code comes with some caveats; of course, you don ’ t have access to the sample image files we ’ ve used, and you will have to alter your code a bit based on the sizes of your images. Also, we haven ’ t stored our images in any database, and we ’ ve only allowed for JPG images to be bapp01.indd 662bapp01.indd 662 12/10/08 5:35:19 PM12/10/08 5:35:19 PM Appendix A: Answers to Exercises 663 uploaded. Keeping those things in mind, your background/upload page should look something like this (we named our file vacation.html ): < html > < head > < title > Go on a Virtual Vacation! < /title > < /head > < body > < form method=”post” action=”upload_image.php” enctype=”multipart/ form-data” > < table > < tr > < td > < label for=”image_caption” > Image Name or Caption < /label > < br/ > < em > Example: Wish you were here! < /em > < /td > < td > < input id=”image_caption” name=”image_caption” type=”text” size=”55”/ > < /td > < /tr > < tr > < td > < label for=”image_username” > Your Name: < /label > < /td > < td > < input id=”image_username” name=”image_username” type=”text” size=”15” > < /td > < /tr > < tr > < td > < label for=”image_filename” > Upload Image: < /label > < /td > < td > < input id=”image_filename” name=”image_filename” type=”file” / > < /td > < /tr > < /table > < p > < em > Acceptable image formats include: JPG/JPEG < /em > < /p > < p > Select your destination: < /p > < table > < /tr > < tr > < td > < input type=”radio” id=”destination_1” name=”destination” value=”beach” / > < /td > < td > < label for=”destination_1” > < img src=”images/beach.jpg” > < /label > < /td > < /tr > < tr > < td > < input type=”radio” id=”destination_2” name=”destination” value=”golfcourse” / > < /td > < td > < label for=”destination_2” > < img src=”images/golfcourse.jpg” > < /label > < /td > < /tr > < tr > < td > < input type=”radio” id=”destination_3” name=”destination” value=”mountains” / > < /td > < td > < label for=”destination_3” > < img src=”images/mountains.jpg” > < /label > < /td > < /tr > < /table > < p style=”text-align: center” > < input type=”submit” name=”Submit” value=”Submit” / > < input type=”reset” value=”Clear Form” / > < /p > < /form > < /body > < /html > Then we have a page that processes the photos and merges them together, called upload_image.php . bapp01.indd 663bapp01.indd 663 12/10/08 5:35:19 PM12/10/08 5:35:19 PM Appendix A: Answers to Exercises 664 < ?php // filter incoming variables $image_caption = (isset($_POST[‘image_caption’])) ? $_POST[‘image_caption’] : ‘’; $image_username = (isset($_POST[‘image_username’])) ? $_POST[‘image_ username’] : ‘Anonymous’; $destination = $_POST[‘destination’]; $image_tempname = $_FILES[‘image_filename’][‘name’]; $today = date(‘Y-m-d’); //change this path to match your images directory $dir =’C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/images’; $image_name = $dir . $image_tempname; if (move_uploaded_file($_FILES[‘image_filename’][‘tmp_name’], $image_name)) { //get info about the image being uploaded list($width, $height, $type, $attr) = getimagesize($image_name); if ($type != IMAGETYPE_JPEG) { echo ‘ < p > < strong > Sorry, but the file you uploaded was not a JPG ‘ . ‘file. < br/ > Please hit your back button and try again. < /strong > < /p > ’; } else { //image is acceptable; ok to proceed $dest_image_name = $dir . $destination . ‘.jpg’; $image = imagecreatefromjpeg($image_name); list($width2, $height2, $type2, $attr2) = getimagesize($dest_image_ name); $image2 = imagecreatefromjpeg($dest_image_name); imagecopymerge($image2, $image, 0,0,0, 0, $width, $height, 100); } header(‘Content-type:image/jpeg’); imagejpeg($image2); } ? > 2. Have a page on your site with funny photographs or cartoons, and allow your users to write the captions for them. Place the text in a speech bubble that is appropriately sized, based on the length of the caption they submit. A. First, you need to have the page that gathers the input from the user: < html > < head > < title > Write your own caption! < /title > < /head > < body > < h1 > Write Your Own Caption! < /h1 > < img src=”images/cartoon.jpg” alt=”captionless cartoon”/ > bapp01.indd 664bapp01.indd 664 12/10/08 5:35:19 PM12/10/08 5:35:19 PM Appendix A: Answers to Exercises 665 < form method=”post” action=”caption.php” > < table > < tr > < td > < label for=”image_caption” > Write a caption for the cartoon: < /label > < br/ > < em > Example: You talkin’ to me? < /em > < /td > < td > < input id=”image_caption” name=”image_caption” type=”text” size=”25” maxlength=”25” / > < /td > < /tr > < tr > < td > < /td > < td > < input type=”submit” value=”Send my Caption”/ > < /td > < /tr > < /table > < /form > < /body > < /html > Then you need to put the text in the bubble. We are using a simple ellipse shape that will stretch to fit how long the text is. You can use the following code: < ?php $image_filename = ‘images/cartoon.jpg’; $image_caption = (isset($_POST[‘image_caption’])) ? $_POST[‘image_caption’] : ‘ ‘; $length = strlen($image_caption); $image = imagecreatefromjpeg($image_filename); //draw a white ellipse based on string length $white = imagecolorallocate($image, 0xFF, 0xFF, 0xFF); // the center point for the bubble on our cartoon is at coordinates 134, 14 // alter these values for your specific image if necessary $e_x = 134; $e_y = 14; // assume each character is 10px plus 10px on either side of the string for // extra cushion. $e_width=($length * 10) + 20; $ellipse = imagefilledellipse($image, $e_x, $e_y, $e_width, 25, $white); //get starting point for text $x = $e_x - (($length * 10) / 2) - 10; $y = $e_y + 5; //place the text in the bubble imagettftext($image, 12, 0, $x, $y, 0, ‘arial.ttf’, $image_caption); header(‘Content-type: image/jpeg’); imagejpeg($image); ? > bapp01.indd 665bapp01.indd 665 12/10/08 5:35:20 PM12/10/08 5:35:20 PM Appendix A: Answers to Exercises 666 You could also have used imagettfbbox() to perform a similar task. We didn ’ t cover this in Chapter 7 , so you might want to refer to the manual at www.php.net/imagettfbbox for more information on this function. 3. Create a page for kids where they can choose different heads, bodies, and tails from animals and put them together to make a new creation and a new image. Or, create a virtual paper doll site where kids can place different outfits on a model and then save the images they create. A. Although there are many ways to do this, we will have four separate pages: one for picking the head, one for picking the midsection, one for picking the behind/tail, and one for putting them all together and outputting our final result. We could easily create these images by taking stock photos of animals, resizing them so they are the same size, and then cutting them into three sections, using an image - processing program such as Photoshop or GIMP (or heck, we can even do this using PHP, right?). When we have our sections all ready to go, our first page, animal1. html , will look something like this: < html > < head > < title > Create your very own animal! < /title > < /head > < body > < p > First, you must pick a head for your new animal. < /p > < form method=”post” action=”animal2.php” > < table > < tr > < td > < input id=”head_1” name=”head” type=”radio” value=”cowhead” / > < /td > < td > < label for=”head_1” > < img src=”images/cowhead.jpg” / > < /label > < /td > < /tr > < tr > < td > < input id=”head_2” name=”head” type=”radio” value=”elephanthead” / > < /td > < td > < label for=”head_2” > < img src=”images/elephanthead.jpg” / > < /label > < /td > < /tr > < tr > < td > < input id=”head_3” name=”head” type=”radio” value=”giraffhead” / > < /td > < td > < label for=”head_3” > < img src=”images/giraffhead.jpg” / > < /label > < /td > < /tr > < tr > < td > < input id=”head_4” name=”head” type=”radio” value=”pighead” / > < /td > < td > < label for=”head_4” > < img src=”images/pighead.jpg” / > < /label > < /td > < /tr > < tr > < td > < /td > < td > < input type=”submit” name=”Submit” value=”Pick a Body - > ” / > < /td > < /tr > < /table > < /form > < /body > < /html > Our next file, animal2.php , looks like this: < html > < head > < title > Create your very own animal! < /title > < /head > < body > < p > Second, you must pick a body for your new animal. < /p > < form method=”post” action=”animal3.php” > bapp01.indd 666bapp01.indd 666 12/10/08 5:35:20 PM12/10/08 5:35:20 PM Appendix A: Answers to Exercises 667 < table > < tr > < td > < input id=”body_1” name=”body” type=”radio” value=”cowbody” / > < /td > < td > < label for=”body_1” > < img src=”images/cowbody.jpg” / > < /label > < /td > < /tr > < tr > < td > < input id=”body_2” name=”body” type=”radio” value=”elephantbody” / > < /td > < td > < label for=”body_2” > < img src=”images/elephantbody.jpg” / > < /label > < /td > < /tr > < tr > < td > < input id=”body_3” name=”body” type=”radio” value=”giraffbody” / > < /td > < td > < label for=”body_3” > < img src=”images/giraffbody.jpg” / > < /label > < /td > < /tr > < tr > < td > < input id=”body_3” name=”body” type=”radio” value=”pigbody” / > < /td > < td > < label for=”body_3” > < img src=”images/pigbody.jpg” / > < /label > < /td > < /tr > < tr > < td > < /td > < td > < input type=”hidden” name=”head” value=” < ?php echo $_POST[‘head’]; ? > ” / > < input type=”submit” name=”Submit” value=”Pick a Tail - > ” / > < /td > < /tr > < /table > < /form > < /body > < /html > And our next file, animal3.php , looks like this: < html > < head > < title > Create your very own animal! < /title > < /head > < body > < p > Finally, you must pick a tail for your new animal. < /p > < form method=”post” action=”animal4.php” > < table > < tr > < td > < input id=”tail_1” name=”tail” type=”radio” value=”cowtail” / > < /td > < td > < label for=”tail_1” > < img src=”images/cowtail.jpg” / > < /label > < /td > < /tr > < tr > < td > < input id=”tail_2” name=”tail” type=”radio” value=”elephanttail” / > < /td > < td > < label for=”tail_2” > < img src=”images/elephanttail.jpg” / > < /label > < /td > < /tr > < tr > < td > < input id=”tail_3” name=”tail” type=”radio” value=”girafftail” / > < /td > < td > < label for=”tail_3” > < img src=”images/girafftail.jpg” / > < /label > < /td > < /tr > < tr > < td > < input id=”tail_3” name=”tail” type=”radio” value=”pigtail” / > < /td > < td > < label for=”tail_3” > < img src=”images/pigtail.jpg” / > < /label > < /td > < /tr > < tr > < td > < /td > < td > < input type=”hidden” name=”head” value=” < ?php echo $_POST[‘head’]; ? > ” / > < input type=”hidden” name=”tail” value=” < ?php echo $_POST[‘tail’]; ? > ” / > < input type=”submit” name=”Submit” value=”Make the Animal!” / > < /td > < /tr > bapp01.indd 667bapp01.indd 667 12/10/08 5:35:21 PM12/10/08 5:35:21 PM Appendix A: Answers to Exercises 668 < /table > < /form > < /body > < /html > And finally, the file that combines the three images, our animal4.php file: < ?php $head = $_POST[‘head’]; $body = $_POST[‘body’]; $tail = $_POST[‘tail’]; $image_dir=’images/’; $head_image = imagecreatefromjpeg($image_dir . $head . ‘.jpg’); $body_image = imagecreatefromjpeg($image_dir . $body . ‘.jpg’); $tail_image = imagecreatefromjpeg($image_dir . $tail . ‘.jpg’); // Our images are 100px x 200px and were chopped horizontally. $new_animal = imagecreatetruecolor(300, 200); //merge the head imagecopymerge($new_animal, $head_image, 0, 0, 0, 0, 100, 200, 100); //now merge in the body imagecopymerge($new_animal, $body_image, 100,0, 0, 0, 100, 200, 100); //and finally the tail imagecopymerge($new_animal, $tail_image, 200, 0, 0, 0, 100, 200, 100); header(‘Content-type: image/jpeg’); imagejpeg($new_animal); ? > Chapter 8 1. Add validation to the code that adds and edits people records. A. In commit.php , add or change the lines highlighted below: switch ($_GET[‘action’]) { case ‘add’: switch ($_GET[‘type’]) { case ‘movie’: $error = array(); break; case ‘people’: $error = array(); $people_name = trim($_POST[‘people_name’]); if (empty($people_name)) { bapp01.indd 668bapp01.indd 668 12/10/08 5:35:21 PM12/10/08 5:35:21 PM Appendix A: Answers to Exercises 669 $error[] = urlencode(‘Please enter a name!’); } if (empty($_POST[‘people_isactor’]) & & empty($_POST[‘people_isdirector’])) { $error[] = urlencode(‘Please specify if the person is an actor ‘ . ‘or a director!’); } if (empty($error)) { $query = ‘INSERT INTO people (people_fullname, people_isactor, people_isdirector) VALUES (“’ . $people_name . ‘”, ‘ . $_POST[‘people_isactor’] . ‘, ‘ . $_POST[‘people_isdirector’] . ‘)’; } break; } break; case ‘edit’: switch ($_GET[‘type’]) { case ‘movie’: $error = array(); break; case ‘people’: $error = array(); $people_name = trim($_POST[‘people_name’]); if (empty($people_name)) { $error[] = urlencode(‘Please enter a name!’); } if (empty($_POST[‘people_isactor’]) & & empty($_POST[‘people_isdirector’])) { $error[] = urlencode(‘Please specify if the person is an actor ‘ . ‘or a director!’); } if (empty($error)) { $query = ‘UPDATE people SET people_fullname = “’ . $people_name . ‘”, people_isactor = “’ . $_POST[‘people_isactor’] . ‘”, people_isdirector = “’ . $_POST[‘people_isdirector’] . ‘” WHERE people_id = ‘ . $_GET[‘id’]; } break; } break; 2. Write and test a regular expression pattern to validate an e - mail address. A. This is not the only answer, but it gets the job done: /[\w\-]+(\.[\w\-]+)*@[\w\-]+(\.[\w\-]+)+/ bapp01.indd 669bapp01.indd 669 12/10/08 5:35:22 PM12/10/08 5:35:22 PM Appendix A: Answers to Exercises 670 Chapter 9 In Chapter 9 , you were shown three short snippets of code and asked to spot the errors and figure out how to fix them. Then you were asked to create a little error - catching script to catch the errors. 1. < ?php $query = “SELECT * FROM table_name “ . “WHERE name = ‘” . $_POST[‘name’] . “’;” $result = mysql_query($result) or die(mysql_error()); ? > A. Parse error from lack of semicolon at the end of the statement; the semicolon there is for the SQL statement. The correct code is: < ?php $query = “SELECT * FROM table_name “ . “WHERE name = ‘” . $_POST[‘name’] . “’”; $result = mysql_query($result) or die(mysql_error()); ? > 2. < ? if ($_POST[‘first_name’] = “Jethro”) { echo “Your name is “ . $_POST[‘first_name’]; } ? > A. You always need to check equality with double equals ( == ), not single equals ( = ). A single equals sign is for setting a variable equal to a value. The correct code is: < ?php if ($_POST[‘first_name’] == “Jethro”) { echo “Your name is “ . $_POST[‘first_name’]; } ? > 3. < ? $full_name = $_POST[‘mrmiss’] “. “ $_POST[‘first_name’] “ “ $_POST[‘last_name’]; ? > bapp01.indd 670bapp01.indd 670 12/10/08 5:35:22 PM12/10/08 5:35:22 PM [...]... the processing page (ml_purge.php): Chapter 15... VARCHAR(255); Then, modify edit_character.php, adding or modifying the lines highlighted below: . ‘db.inc.php’; $db = mysql_ connect (MYSQL_ HOST, MYSQL_ USER, MYSQL_ PASSWORD) or die (‘Unable to connect. Check your connection parameters.’); mysql_ select_db (MYSQL_ DB, $db) or die (mysql_ error($db)); . ‘db.inc.php’; $db = mysql_ connect (MYSQL_ HOST, MYSQL_ USER, MYSQL_ PASSWORD) or die (‘Unable to connect. Check your connection parameters.’); mysql_ select_db (MYSQL_ DB, $db) or die (mysql_ error($db)); . $alias = mysql_ real_escape_string($_POST[‘alias’], $db); $real_name = mysql_ real_escape_string($_POST[‘real_name’], $db); $address = mysql_ real_escape_string($_POST[‘address’], $db); $city = mysql_ real_escape_string($_POST[‘city’],