TheEssentialGuidetoDreamweaverCS3withCSS,Ajax,andPHPDavidPowersTheEssentialGuidetoDreamweaverCS3withCSS,Ajax,andPHPCopyright2007byDavidPowersAllrightsreserved.
Nopartofthisworkmaybereproducedortransmittedinanyformorbyanymeans,electronicormechanical,includingphotocopying,recording,orbyanyinformationstorageorretrievalsystem,withoutthepriorwrittenpermissionofthecopyrightownerandthepublisher.
ISBN-13(pbk):978-1-59059-859-7ISBN-10(pbk):1-59059-859-8PrintedandboundintheUnitedStatesofAmerica987654321Trademarkednamesmayappearinthisbook.
Ratherthanuseatrademarksymbolwitheveryoccurrenceofatrademarkedname,weusethenamesonlyinaneditorialfashionandtothebenefitofthetrademarkowner,withnointentionofinfringementofthetrademark.
DistributedtothebooktradeworldwidebySpringer-VerlagNewYork,Inc.
,233SpringStreet,6thFloor,NewYork,NY10013.
Phone1-800-SPRINGER,fax201-348-4505,e-mailorders-ny@springer-sbm.
com,orvisitwww.
springeronline.
com.
Forinformationontranslations,pleasecontactApressdirectlyat2855TelegraphAvenue,Suite600,Berkeley,CA94705.
Phone510-549-5930,fax510-549-5939,e-mailinfo@apress.
com,orvisitwww.
apress.
com.
Theinformationinthisbookisdistributedonan"asis"basis,withoutwarranty.
Althougheveryprecautionhasbeentakeninthepreparationofthiswork,neithertheauthor(s)norApressshallhaveanyliabilitytoanypersonorentitywithrespecttoanylossordamagecausedorallegedtobecauseddirectlyorindirectlybytheinformationcontainedinthiswork.
Thesourcecodeforthisbookisfreelyavailabletoreadersatwww.
friendsofed.
comintheDownloadssection.
CreditsLeadEditorChrisMillsTechnicalReviewerTomMuckEditorialBoardSteveAnglin,EwanBuckingham,GaryCornell,JonathanGennick,JasonGilmore,JonathanHassell,ChrisMills,MatthewMoodie,JeffreyPepper,BenRenow-Clarke,DominicShakeshaft,MattWade,TomWelshProjectManagerTracyBrownCollinsCopyEditManagerNicoleFloresCopyEditorHeatherLangAssistantProductionDirectorKariBrooks-CoponyProductionEditorKellyWinquistCompositorDinaQuanArtistAprilMilneProofreaderAprilEddyIndexerJulieGradyInteriorandCoverDesignerKurtKramesManufacturingDirectorTomDebolskiInmemoryofmysister,NimbiaNovember21,1941–April24,2007CONTENTSATAGLANCEForeword.
xixAbouttheAuthorxxiAbouttheTechnicalReviewer.
xxiiAcknowledgmentsxxiiiIntroductionxxivChapter1:DreamweaverCS3—YourCreativePartner1Chapter2:BuildingDynamicSiteswithAjaxandPHP.
33Chapter3:GettingtheWorkEnvironmentReady67Chapter4:SettingUpaPHPSite103Chapter5:AddingaTouchofStyle135Chapter6:CreatingaCSSSiteStraightOutoftheBox.
161Chapter7:BuildingSiteNavigationwiththeSpryMenuBar.
183Chapter8:SprucingUpContentwithSpryWidgets209Chapter9:BuildingOnlineFormsandValidatingInput.
247ivChapter10:IntroducingtheBasicsofPHP295Chapter11:UsingPHPtoProcessaForm.
325Chapter12:WorkingwithPHPIncludesandTemplates363Chapter13:SettingUpMySQLandphpMyAdmin.
401Chapter14:StoringRecordsinaDatabase429Chapter15:ControllingAccesstoYourSite473Chapter16:WorkingwithMultipleTables519Chapter17:SearchingRecordsandHandlingDates571Chapter18:UsingXSLTtoDisplayLiveNewsFeedsandXML617Chapter19:UsingSprytoDisplayXML.
653Chapter20:GettingtheBestofBothWorldswithPHPandSpry.
.
.
.
693Index731vCONTENTSForeword.
xixAbouttheAuthorxxiAbouttheTechnicalReviewer.
xxiiAcknowledgmentsxxiiiIntroductionxxivChapter1:DreamweaverCS3—YourCreativePartner1GettingyourbearingsinDreamweaver3Startingup3Creatinganewdocument.
4Settingnewdocumentpreferences5Exploringtheworkspace7Insertbar9Documentwindow11Organizingyourworkspace14Rearrangingpanels14Savingandsharingcustomizedworkspacelayouts14AccessinghiddenfilesandfoldersinWindows15Displayingoptionaltoolbars15Temporarilyhidingallpanels15OrganizingvisualassetswithBridge16Controllingthumbnails17Addingmetadata17Renamingfiles17Dragginganddroppingfiles18viCreatingstandards-compliantwebpages18EnhancedCSSsupport18Layersaredead.
.
.
Welcome,APelements18SeeingtheimpactofCSSchangesinrealtime20Improvedstylesheetmanagement21UsingvisualaidstounderstandyourCSSstructure22Checkingforbrowserbugs23Checkingwhatyourpagewilllooklikeonothermedia24UnderstandingDreamweaver'sapproachtolayout25Drawingabsolutelypositionedelements25LayoutModegoesintoexile.
26GettingthebestoutofCodeview27UsingtheCodingtoolbar27SettingCodeviewoptions29Usingcodehintsandautocompletion30Dynamictoo31Chapter2:BuildingDynamicSiteswithAjaxandPHP.
33Understandinghowdynamicpageswork34Makingpagesdynamicwithclient-sidetechnology35Increasinguserinteractivitywithserver-sidetechnology35WhychoosePHP37TakingdynamicfunctionalityastagefurtherwithAjax38UnderstandingthelimitationsofAjax38Dynamicterminology10139UsingDreamweaverbehaviorsandSpryeffects40AccessingtheBehaviorspanel40Givingelementsauniqueidentity45Removinganidattribute.
47Editingbehaviorandeffectsettings48Removingbehaviorsandeffectscleanly50Restoringadeletedbehaviororeffect50ExploringSpryeffects.
51Appear/Fade52Blind53Grow/Shrink.
53Highlight.
54Shake55Slide55Squish56CreatingawrapperfortheSlideeffect56Applyingmultipleeventstoatriggerelement58HandlingdynamicdatawithSpryandPHP59ComparinghowSpryandPHPhandledatasets59BuildingPHPsiteswithDreamweaver60CONTENTSviiComparingdifferentversionsoffiles61SettinguptheFileComparefeature61UsingFileCompare.
62Comparingtwolocalfilesinthesamesite63Comparingtwolocalfilesindifferentsites63Comparinglocalandremotefiles.
63MeetMarkoftheWeb64Thenextstep.
65Chapter3:GettingtheWorkEnvironmentReady67Decidingwheretotestyourpages.
68CheckingthatyourremoteserversupportsPHP.
69Creatingalocaltestingserver70Choosingwhichversionstoinstall.
70Choosingindividualinstallationoranall-in-onepackage71SettinguponWindows.
72GettingWindowstodisplayfilenameextensions72Choosingtherightwebserver.
73Downloadingthesoftware.
73PreparingforinstallationonWindowsVista73TurningoffUserAccountControltemporarilyonVista74Beforeyoubegin74Checkingthatport80isfree75InstallingApacheonWindows.
76RunningtheApacheMonitoronVista78StartingandstoppingApacheonWindows79ChangingstartuppreferencesordisablingApache79InstallingPHPonWindows.
80TestingyourPHPinstallation(WindowsXPandVista)82ChangingthedefaultApacheport83ChangingthedefaultIISport84SettinguponMacOSX86StartingandstoppingApacheonMacOSX86UpgradingPHPonMacOSX87CheckingyourPHPconfiguration90Understandingtheoutputofphpinfo(90Checkingthelocationofphp.
ini90CheckingPHPCoresettings92Checkinginstalledextensions95Checkingsupported$_SERVERvariables.
96Editingphp.
ini96Accessingphp.
inionMacOSX96ConfiguringPHPtodisplayerrors.
98EnablingPHPextensionsonWindows98Enablingfileuploadsandsessions(Windowsinstaller)99CONTENTSviiiOverridingsettingsonyourremoteserver99Suppressingerrormessages99Overridingdefaultsettingswithini_set(99Using.
htaccesstochangedefaultsettings100Summary100Chapter4:SettingUpaPHPSite103Decidingwheretolocateyoursites104Understandingdocument-androot-relativelinks104Document-relativelinks105Root-relativelinks105Keepingeverythingtogetherintheserverroot106Workingwithvirtualhosts106Findingtheserverroot107MovingtheApacheserverrootonWindows107SettingadefaultfileforApacheonWindows108AddingadefaultPHPfiletoIIS.
109CreatingvirtualhostsonApache110RegisteringvirtualhostsonWindows111RegisteringvirtualhostsonMacOSX113RegisteringvirtualdirectoriesonIIS115DefiningaPHPsiteinDreamweaver115OpeningtheSiteDefinitiondialogbox115TellingDreamweaverwheretofindlocalfiles117TellingDreamweaverhowtoaccessyourremoteserver119Definingthetestingserver121Selectingoptionsforlocaltesting122Selectingoptionsforremotetesting123Settingupothersiteoptions125SettingupforSpry125Savingthesitedefinition126TestingyourPHPsite126Troubleshooting128SettingoptionsforPreviewinBrowser129ManagingDreamweaversites131Nowlet'sgetonwithit132Chapter5:AddingaTouchofStyle135Avoidingbadhabits136StayawayfromthePropertyinspectorforfonts137CreatingsimpleCSSforbeginners138IntroducingtheCSSStylespanel140OpeningtheCSSStylespanel.
141ViewingAllandCurrentmodes141CONTENTSixExploringthePropertiespaneoftheCSSStylespanel142DisplayingCSSpropertiesbycategory142DisplayingCSSpropertiesalphabetically143DisplayingonlyCSSpropertiesthathavebeenset.
143Attachinganewstylesheet144Adding,editing,anddeletingstylerules144Creatingnewstylerules145Definingaselector.
145Definingtherule'sproperties.
146Movingstylerules152Exportingrulestoanewstylesheet152Movingruleswithinastylesheet.
154Movingrulesbetweenexternalstylesheets.
155SettingyourCSSpreferences156Creatingandeditingstylerules.
157Settingthedefaultformatofstylerules.
158Let'sgetcreative159Chapter6:CreatingaCSSSiteStraightOutoftheBox.
161Usingabuilt-inCSSlayout162Choosingalayout163Decidingwheretolocateyourstylerules163Linkingtoexistingstylesheets164Makingsureconditionalcommentsareapplied164Stylingapage165InspectingthecascadeinCurrentmode173Finishingthelayout175RemovingtheCSScomments.
179Howwasitforyou181Chapter7:BuildingSiteNavigationwiththeSpryMenuBar.
183ExaminingthestructureofaSprymenubar185LookingattheXHTMLstructure187Removingamenubar188Editingamenubar188MaintainingaccessibilitywiththeSprymenubar.
189Customizingthestyles.
190Changingthemenuwidth190Changingcolors190Addingborders191Changingthefont192StylingaSprymenubar193Towrapornottowrap,thatisthequestion193Buildingthenavigationstructure.
195Customizingthedesign198Amixedblessing206CONTENTSxChapter8:SprucingUpContentwithSpryWidgets209FeaturescommontoallSprywidgets210Buildingatabbedinterface211Examiningthestructureofthetabbedpanelswidget212Editingatabbedpanelswidget.
214Selectingharmoniouscolors218Convertingtoverticaltabs223Avoidingdesignproblemswithtabbedpanels227UnderstandingSpryobjects228Usingtheaccordionwidget229Examiningthestructureofanaccordion230EditingandstylingaSpryAccordion.
232Usingtheobjectinitializationtochangeaccordiondefaults236Openinganaccordionpanelfromalink238Usingcollapsiblepanels239Examiningthestructureofacollapsiblepanel239Editingandstylingcollapsiblepanels241Openingacollapsiblepanelfromalink243RemovingaSprywidget244Yetmorewidgets245Chapter9:BuildingOnlineFormsandValidatingInput.
247Buildingasimplefeedbackform248Choosingtherightpagetype.
248CreatingaPHPpage249Mixing.
phpand.
htmlpagesinasite250Insertingaforminapage.
250InsertingaforminCodeview251Addingtextinputelements.
252Settingpropertiesfortextinputelements255Convertingatextfieldtoatextareaandviceversa.
257Stylingthebasicfeedbackform257UnderstandingthedifferencebetweenGETandPOST259Passinginformationthroughahiddenfield260Usingmultiple-choiceformelements262Offeringarangeofchoiceswithcheckboxes262Offeringasinglechoicefromadrop-downmenu267Creatingamultiple-choicescrollablelist269Usingradiobuttonstoofferasinglechoice272Organizingformelementsinlogicalgroups274Insertingafieldset274Validatinguserinputbeforesubmission275DoingminimalcheckswiththeValidateFormbehavior275UsingSpryvalidationwidgetsforsophisticatedchecks277UnderstandingthelimitationsofSpryvalidationwidgets278InsertingaSpryvalidationwidget279Removingavalidationwidget279ValidatingatextfieldwithSpry280CONTENTSxiBuildingyourowncustompattern285ValidatingatextareawithSpry286ValidatingasinglecheckboxwithSpry289ValidatingacheckboxgroupwithSpry289Validatingadrop-downmenuwithSpry292Next,let'smovetotheserverside292Chapter10:IntroducingtheBasicsofPHP295IntroducingthebasicsofPHP.
296EmbeddingPHPinawebpage296Endingcommandswithasemicolon.
297Usingvariablestorepresentchangingvalues298Namingvariables298Assigningvaluestovariables298DisplayingPHPoutput.
299Commentingscriptsforclarityanddebugging300Choosingsingleordoublequotationmarks301Usingescapesequencesinstrings303Joiningstringstogether304Addingtoanexistingstring304Usingquotesefficiently.
305Specialcases:true,falseandnull305Workingwithnumbers306Performingcalculations.
306Combiningcalculationsandassignment308Usingarraystostoremultiplevalues308Usingnamestoidentifyarrayelements.
309Inspectingthecontentsofanarraywithprint_r(310Makingdecisions.
311ThetruthaccordingtoPHP312Usingcomparisonstomakedecisions.
313Testingmorethanonecondition314Usingtheswitchstatementfordecisionchains316Usingtheconditionaloperator316Usingloopsforrepetitivetasks.
317Loopsusingwhileanddo.
.
.
while317Theversatileforloop318Loopingthrougharrayswithforeach319Breakingoutofaloop320Usingfunctionsforpresettasks320UnderstandingPHPerrormessages321Nowputittowork322CONTENTSxiiChapter11:UsingPHPtoProcessaForm.
325Activatingtheform327GettinginformationfromtheserverwithPHPsuperglobals327Sendingemail328Scriptingthefeedbackform329UsingBalanceBraces336Testingthefeedbackform337Troubleshootingmail(338Gettingridofunwantedbackslashes338Makingsurerequiredfieldsaren'tblank341Preservinguserinputwhenaformisincomplete345Filteringoutpotentialattacks348Safelyincludingtheuser'saddressinemailheaders350Handlingmultiple-choiceformelements354Redirectingtoanotherpage359Timeforabreather360Chapter12:WorkingwithPHPIncludesandTemplates363Includingtextandcodefromotherfiles.
364IntroducingthePHPincludecommands.
364TellingPHPwheretofindtheexternalfile365Usingsite-root-relativelinkswithincludes368Lighteningyourworkloadwithincludes.
369Choosingtherightfilenameextensionforincludefiles369DisplayingXHTMLoutput370Avoidingproblemswithincludefiles373ApplyingstyleswithDesignTimeStyleSheets374Addingdynamiccodetoaninclude.
375UsingincludestorecyclefrequentlyusedPHPcode.
378Adaptingthemailprocessingscriptasaninclude380Analyzingthescript380Buildingthemessagebodywithagenericscript.
382Avoidingthe"headersalreadysent"error388UsingDreamweavertemplatesinaPHPsite.
389Creatingatemplate390Addingeditableregionstothemastertemplate391Creatingchildpagesfromatemplate393Lockingcodeoutsidethetags.
398Choosingtherighttool398CONTENTSxiiiChapter13:SettingUpMySQLandphpMyAdmin.
401IntroducingMySQL.
402UnderstandingbasicMySQLterminology403InstallingMySQL404InstallingMySQLonWindows404DecidingwhethertoenableInnoDBsupport.
404ChangingthedefaulttabletypeonWindowsEssentials410StartingandstoppingMySQLmanuallyonWindows.
411UsingtheMySQLmonitoronWindows411SettingupMySQLonMacOSX412AddingMySQLtoyourPATH414SecuringMySQLonMacOSX416UsingtheMySQLmonitoronWindowsandMac418UsingMySQLwithphpMyAdmin419SettingupphpMyAdminonWindowsandMac420LaunchingphpMyAdmin423LoggingoutofphpMyAdmin.
424Backupanddatatransfer424Lookingahead427Chapter14:StoringRecordsinaDatabase429SettingupadatabaseinMySQL430Creatingalocaldatabasefortesting.
431CreatinguseraccountsforMySQL432Grantingthenecessaryuserprivileges432Howadatabasestoresinformation436Howprimarykeyswork436Designingadatabasetable437Choosingthetablename438Decidinghowmanycolumnstocreate438ChoosingtherightcolumntypeinMySQL439Decidingwhetherafieldcanbeempty441Storinginputfromthefeedbackform441Analyzingtheform441DefiningatableinphpMyAdmin.
444Understandingcollation446Insertingdatafromthefeedbackform446Troubleshootingtheconnection.
449Troubleshooting451Usingserverbehaviorswithsite-root-relativelinks.
452Inspectingtheserverbehaviorcode453InsertingdataintoSETcolumns454Displayingdatabasecontent457Creatingarecordset.
457Displayingindividualrecords462Displayinglinebreaksintext.
467Mergingforminputwithmailprocessing469Agreatdealachieved471CONTENTSxivChapter15:ControllingAccesstoYourSite473Creatingauserregistrationsystem.
474Definingthedatabasetable.
475Buildingtheregistrationform476Preservingtheintegrityofyourrecords480Buildingcustomserverbehaviors486Completingtheuserregistrationform489Updatinganddeletinguserrecords493AdaptingtheStickyTextFieldserverbehavior496Buildingtheupdateanddeletepages.
497Whatsessionsareandhowtheywork507CreatingPHPsessions507Creatinganddestroyingsessionvariables508Destroyingasession508Checkingthatsessionsareenabled509Registeringandauthenticatingusers509Creatingaloginsystem509Restrictingaccesstoindividualpages511Loggingoutusers512UnderstandinghowDreamweavertracksusers.
513Creatingyourown$_SESSIONvariablesfromuserdetails515Redirectingtoapersonalpageafterlogin515Encryptinganddecryptingpasswords516Feelingmoresecure516Chapter16:WorkingwithMultipleTables519Storingrelatedinformationinseparatetables520Decidingonthebeststructure520Usingforeignkeystolinkrecords521Avoidingorphanedrecords523Definingthedatabasetables524Addinganindextoacolumn525DefiningtheforeignkeyrelationshipinInnoDB526Populatingthetables530Restoringthecontentofthetables530Selectingrecordsfrommorethanonetable530ThefouressentialSQLcommands534SELECT535INSERT537UPDATE538DELETE538Managingcontentwithmultipletables538Insertingnewquotations539UsingaMySQLfunctionandaliastomanipulatedata.
543Insertingnewauthors545UsingvariablesinaSQLquery546Updatingauthors551CONTENTSxvDeletingauthors556Improvingthedeleteform560PerformingacascadingdeletewithInnoDBtables560Updatingquotations.
563Solvingthemysteryofmissingrecords564Deletingquotations567Whatyouhaveachieved.
568Chapter17:SearchingRecordsandHandlingDates571Queryingadatabaseanddisplayingtheresults572Enhancingthelookofsearchresults.
573Displayingthenumberofsearchresults573Creatingstripedtablerows.
574UnderstandinghowDreamweaverbuildsaSQLquery.
576TroubleshootingSQLqueries.
579Settingsearchcriteria580Usingnumericalcomparisons581Searchingwithinanumericalrange583Searchingfortext586Makingasearchcasesensitive586Displayingamessagewhennoresultsarefound587Searchingmultiplecolumns588Searchingwithapartialmatch589Usingwildcardcharactersinasearch589Usingwildcardcharacterswithnumbers592UsingaFULLTEXTindex.
595Solvingcommonproblems598Countingrecords599Eliminatingduplicatesfromarecordset599Reusingarecordset599Understandinghowarepeatregionworks602FormattingdatesandtimeinMySQL603UsingDATE_FORMAT()tooutputuser-friendlydates604WorkingwithdatesinPHP607Settingthecorrecttimezone608CreatingaUnixtimestamp609FormattingdatesinPHP.
610StoringdatesinMySQL612Validatingandformattingdatesfordatabaseinput612Continuingthesearchforperfection.
615Chapter18:UsingXSLTtoDisplayLiveNewsFeedsandXML617AquickguidetoXMLandXSLT.
618WhatanXMLdocumentlookslike.
618UsingHTMLentitiesinXML620UsingXSLTtodisplayXML621Checkingyourserver'ssupportforXSLT621CONTENTSxviPullinginanRSSnewsfeed622HowDreamweaverhandlesserver-sideXSLT623UsingXSLTtoaccesstheXMLsourcedata624Displayingthenewsfeedinawebpage.
632BeingabitmoreadventurouswithXSLT.
633SettingupalocalXMLsource634UnderstandinghowXSLTisstructured636Accessingnestedrepeatingelements637Creatingconditionalregions639Testingasinglecondition.
639Testingalternativeconditions640Sortingelements.
642Formattingelements643Displayingoutputselectively644FilteringnodeswithXPath644UsingXSLTparameterstofilterdata646MoreXMLtocome650Chapter19:UsingSprytoDisplayXML.
653HowSpryhandlesXMLdata654MakingsureSprycanfinddata.
655CreatingaSprydataset.
656DisplayingadatasetinaSprytable662UnderstandingtheSprydatacode.
668ValidatingpagesthatuseSpry668TheflyinSpry'sointment.
669Displayingadatasetasalist670What'sthedifferencebetweenrepeatandrepeatchildren674Casestudy:BuildingaSpryimagegallery676Planningthegallery676Dynamicallyselectingthegallerydataset677ControllingthestructurewithCSS.
677Puttingeverythingtogether.
678Activatingtheeventhandling688Distinguishingbetweendatasets688Creatingadatasetdynamically689Nearlythere691Chapter20:GettingtheBestofBothWorldswithPHPandSpry.
.
.
.
693GeneratingXMLdynamically694Preparingthedatabasetable695UsingphpMyAdmintogenerateXML696UsingtheXMLExportextension697Updatingtheincludesfolder.
702BuildingXMLmanuallyfromarecordset703Usingaproxyscripttofetcharemotefeed706CONTENTSxviiCreatinganXMLdocumentfromadynamicsource707SettingpermissionforPHPtowritefiles708UsingPHPtowritetoafile.
708UsingSpryinpagesthatworkwithoutJavaScript711HowtoincorporateaSprydatasetinanordinarywebpage711UsingXHTMLwithSpry716Casestudy:MakingtheSprygalleryaccessible717CreatingthegallerywithPHP.
717GeneratingtheXMLsourceswithPHP.
725EnhancingtheaccessiblegallerywithSpry727Theendofalongjourney729Index731CONTENTSxviiiFOREWORDTheMacromediacommunitywasunique.
Therewasasynergyamongdevelopers,designers,marketers,andtheMacromediaproductteamsthatkepttheproductlinealiveandgrowingyearafteryear.
Isay"was,"becauseMacromediaisnowpartofAdobe.
SinceAdobeacquiredMacromedia,thecommunityhasgottenlarger.
Adobedidnotpreviouslyhaveareputationforfosteringacommunityspirit,however,eventhoughtheAdobeumbrellaisnowovertheentireformer-Macromediaproductline,thecommunityhasflourishedandbecomeevenmorepervasive.
AdobenowfeelsmorelikeMacromediathanevenMacromediadid,becauseAdobehassomehowtakenthebestofMacromediaandmadeitevenbetter.
Withthatacquisition,wehaveoneofthelargestsoftwarerolloutsever—theCS3release,whichcombinedallofMacromedia'sbiggestproductlineswithAdobe'sbiggestproductlinesintoonemassiverelease.
Ifitwereanormalproductreleasecycle,thatwouldbebignewsbyitself,butwithallthemajorenhancementsinmostoftheproductsintheline,it'sevenbigger.
DreamweaverCS3containssomegreatnewfeatures,mostofwhicharecoveredextensivelyinthisbook,includingtheSprytools,pagelayouts,andCSStools.
DreamweaverCS3(orDreamweaver9,ifyou'recounting)isthefirstAdobeversionofDreamweaver,butasidefromtheAdobenameandthePhotoshopintegration,itisinstantlyrecognizableasthesamegreatprogram.
Oneofthethingsthatmakethecommunitygreatistheinvolvementofthecompany(Macromedia,nowAdobe)withthedesigner/developercommunity.
Adobeactivelyseeksfeedbackonproductsandwelcomesgiveandtake;itdoesn'tjustpaylipservicetothecon-ceptofadevelopers'community.
Thefeedbackformsonthewebsitegodirectlytotheproductteam,andproductengineerscontactcustomersdirectly.
ThiskindofinvolvementbroughtPHPintoDreamweaverinthefirstplace,andthiskindofinvolvementkeepsDreamweaveratthetopoftheheapofallthewebdevelopmenttoolsavailable.
TogiveanexampleoftheAdobecommunityinvolvement,Adobesentateamofrepresen-tativestomeetwitheveryoneattherecentTODConconvention,whichtypicallyattractsasmall,closelyknitgroupofDreamweaverdesignersanddevelopers.
Theydidn'tjustsendacoupleofmarketingpeopleorlow-leveloperatives;theyflewinoveradozenofthecreamofthecrop,includingproductmanagers,developmentteammanagers,qualityassurancemanagers,andothersfromlocationsinSanJose,SanDiego,Romania,andGermany.
Onthefirstdayoftheconference,DreamweaverproductmanagerKennethBergerintroducedxixtheteam,whichlookedlikeawallofAdobeatthefrontoftheroom,andledasessionaboutwhatisrightandwrongwithDreamweaver,andtheattendeesoftheconferencegottogivetheirinputastowhatDreamweaverisdoingwellandwhatcouldbeimproved.
Therewasplentyofpraisealongwithplentyofventingthattheproductteamwillusedirectly.
Thatwasn'ttheendofitthough.
Theteamwasinattendanceforthebulkoftheconference,walkingaroundwithnotebooks,gettingvaluablefeedbackthatwillhelpshapethenextver-sionoftheproduct.
Thisisthekindofpersonalcontactthatkeepsthecommunityandtheproductthriving.
CouplethecompanyinvolvementwiththeextensibilityofDreamweaver,whichkeepsthedevelopmentcommunitybuzzingwithcreativitybyextendingtheprogramtodothingsthatitwon'tdooutofthebox,andyouhaveaprogramthatgetsexponentiallybetterwitheachrelease.
IsaythesamethingeverytimeanewversionofDreamweavercomesout:Icouldnevergobacktothepreviousversion.
IfeelthesamewayaboutthelatestCS3release.
I'venevermetDavidPowers,butknowhimwellthroughtheAdobeDreamweavercommu-nity.
HeisafellowAdobeCommunityExpertwhofreelyshareshisknowledgeoftheproductinAdobesupportforums,amongotherplaces.
IknowDavidbyreputationasoneofthemostthoroughyeteasy-to-readauthorsonthescenetodayandasoneofthemostpassion-ateandvocalDreamweaverexpertsintheworld.
AmongthescoresofDreamweaverbooks,David'sarethebooksthatIpersonallyrecommendtopeopleasthebest.
Thisbookisnoexception.
Havingwrittenafewbooksinthepastmyself,Iknowit'snoeasytask.
Asthetechnicalreviewerofthisbook,itwasfrequentlyachallengeformetofindthingstosayaboutit—Davidleavesnostoneunturnedinhisquesttoprovidethebestinstructionalmate-rialontheshelvestoday.
Thatisexactlywhatyouareholdinginyourhandsrightnow.
TomMuckJune2007FOREWORDxxABOUTTHEAUTHORDavidPowersisanAdobeCommunityExpertforDreamweaverandauthorofaseriesofhighlysuccessfulbooksonPHP,includingPHPSolutions:DynamicWebDesignMadeEasy(friendsofED,ISBN-13:978-1-59059-731-6)andFoundationPHPforDreamweaver8(friendsofED,ISBN-13:978-1-59059-569-5).
Asaprofessionalwriter,hehasbeeninvolvedinelectronicmediaformorethan30years,firstwithBBCradioandtelevisionandmorerecentlywiththeInternet.
HisclearwritingstyleisvaluednotonlyintheEnglish-speakingworld;severalofhisbookshavebeentranslatedintoSpanishandPolish.
Whatstartedasamildinterestincomputingwastransformedalmostovernightintoapassion,whenDavidwaspostedtoJapanin1987asBBCcorrespondentinTokyo.
WithnocorporateITdepartmentjustdownthehallway,hewasforcedtolearnhowtofixeverythinghimself.
Whennottinkeringwiththeinnardsofhiscomputer,hewasreportingforBBCTVandradioontheriseandcollapseoftheJapanesebubbleeconomy.
SinceleavingtheBBCtoworkindependently,hehasbuiltupanonlinebilingualdatabaseofeconomicandpoliticalanalysisforJapaneseclientsofaninternationalconsultancy.
WhennotpoundingthekeyboardwritingbooksordreamingofnewwaysofusingPHPandotherprogramminglanguages,Davidenjoysnothingbetterthanvisitinghisfavoritesushirestaurant.
HehasalsotranslatedseveralplaysfromJapanese.
xxiABOUTTHETECHNICALREVIEWERTomMuckisthecoauthorofnineMacromedia-relatedbooks.
TomalsowritesextensionsforDreamweaver,availableathissitewww.
tom-muck.
com.
TomisalsotheleadPHPandColdFusionprogrammerforCartweaver,theonlineshoppingcartsoftwarepackage,andafoundingmemberofCommunityMX,whohaswrittencloseto100articlesonPHP,ColdFusion,SQL,andrelatedtopics.
TomisanextensibilityexpertfocusedontheintegrationofAdobe/MacromediaproductswithColdFusion,ASP,PHP,andotherlanguages,applications,andtechnologies.
Tomwasrec-ognizedforthisexpertisein2000whenhereceivedMacromedia'sBestUltraDevExtensionAward.
Hehasalsowrittennumerousarticlesformagazines,journals,andwebsitesandspeaksatconferencesonthisandrelatedsubjects.
xxiiACKNOWLEDGMENTSForanauthor,writingabookmeanslong,lonelyhoursatthekeyboard,butthevolumeyou'reholdinginyourhands—orreadingonscreenifyou'vegottheelectronicversion—isverymuchacollaborativeeffort.
Theideaofwritinganexpandedbookonthedynamicfea-turesofDreamweavercamefrommyeditor,ChrisMills,whowasgraciousenoughnottocomplaineachtimeIchangedmymindaboutthefinalshapeofthebook.
MythanksgotohimandalltheproductionstaffatApress/friendsofEDforkeepingthismammothprojectontarget.
I'malsoindebtedtothedevelopmentteamatAdobe,whogavemeasneakpreviewoftheirplansforDreamweaverCS3veryearlyinthedevelopmentprocessandhelpedmeunder-standhowmanyofthenewfeatureswork.
Attimes,I'msuretheywereexasperatedbymypersistentquestionsandtheoccasionallyhectoringtoneofmysuggestionsforimprove-ments,buttheyneverletitshow.
Aparticularthankyougoestomytechnicalreviewer,TomMuck.
I'mdeeplyhonoredthatsucharespectedexpertonDreamweaveragreedtoundertakethisrole.
Tom'sin-depthknowledgeofDreamweaver,PHP,andSQLsavedmefromsomeembarrassingmistakes(anythatremainaremyresponsibilityentirely).
Healsoprovidedhelpfuladvicewhenhethoughtmyexplanationsweretoooblique.
Mybiggestthanksofallgotoyou,thereader.
Withoutyou,noneofthiswouldbeworth-while.
Ifyouenjoythisbookorfindituseful,tellallyourfriendsandgetthemtobuyacopy.
Don'tlendittothem.
Youmightnevergetitback!
xxiiiINTRODUCTIONTheEssentialGuidetoDreamweaverCS3withCSS,Ajax,andPHP.
.
.
Wow,thetitle'salmostaslongasthebook!
Andwhat'sthat"essential"doinginthere"Essential"suggeststhatit'sabookyoucan'tdowithout.
So,who'sitforandwhyshouldyoubereadingitDreamweaverisn'tadifficultprogramtouse,butit'sdifficulttousewell.
It'spackedwithfeatures,andmorehavebeenaddedwitheachnewversion.
Theuserinterfacehasbarelychangedinthelastfewversions,soit'seasytooverlooksomegreatproductivityboostersifyoudon'tknowwheretofindthem.
IhavebeenusingDreamweaveronadailybasisforaboutsevenyears,pushingittothelimitandfindingoutitsgoodpoints—anditsbadones,too.
So,theideaofthisbookistohelpyougetthebestoutofDreamweaverCS3,withparticularemphasisonbuildingdynamicwebpagesusingtheimprovedCSSmanagementfeatures,Spry—theAdobeimplementationofAjax—andthePHPserverbehaviors.
ButhowcanyougetthebestoutofthisbookWhothisbookisforIfyou'reathomewiththebasicsof(X)HTMLandCSS,thenthisbookisforyou.
Ifyouhaveneverbuiltawebsitebeforeanddon'tknowthedifferencebetweenantagandyourAuntJemima,you'llprobablyfindthisbookabitofastruggle.
Youdon'tneedtoknoweverytagandattributebyheart,butIfrequentlydiveintoCodeviewandexpectyoutorollupyoursleevesandgettogripswiththecode.
It'snotcodingforcoding'ssake;theideaistoadaptthecodegeneratedbyDreamweavertocreatewebsitesthatreallywork.
IexplaineverythingasIgoalongandsteerclearofimpenetrablejargon.
AsforCSS,youdon'tneedtobeacandidateforinclusionintheCSSZenGarden(www.
csszengarden.
com),butyoushouldunderstandthebasicprinciplesbehindcreatingastylesheet.
xxivWhataboutAjaxandPHPIdon'tassumeanypriorknowledgeinthesefields.
Ajaxcomesinmanydifferentguises;theflavorusedinthisbookisSpry,theAdobeAjaxframework(codelibrary)thatisintegratedintoDreamweaverCS3.
Althoughyoudosomehand-codingwithSpry,mostfeaturesareaccessedthroughintuitivedialogboxes.
DreamweaveralsotakescareofalotofthePHPcoding,butitcan'tdoeverything,soIshowyouhowtocustomizethecodeitgenerates.
Chapter10servesasacrashcourseinPHP,andChapter11putsthatknowledgetoimmediateusebyshowingyouhowtosendanemailfromanonlineform—oneofthethingsthatDreamweaverdoesn'tautomate.
Thisbookdoesn'tattempttoteachyouhowtobecomeaPHPprogrammer,butbythetimeyoureachthefinalchapter,youshouldhavesufficientconfidencetolookascriptintheeyewithoutflinching.
DoIneedDreamweaverCS3Mostdefinitely,yes.
AlthoughthePHPfeaturesinDreamweaverCS3areidenticaltoDreamweaver8.
0.
2,you'llmissoutonroughlyhalfthebook,becausethechaptersdevotedtoCSSandSpryarebasedonCS3.
Inapinch,youcoulddownloadthefreeversionofSpryfromhttp://labs.
adobe.
com/technologies/spry/andhand-codeeverythinginanearlierversionofDreamweaver,butthefocusinthisbookisonusingtheCS3interfaceforSpry.
IfyouwanttousePHPinanearlierversion,IsuggestyoureadmyFoundationPHPforDreamweaver8(friendsofED,ISBN-13:978-1-59059-569-5)instead.
HowdoesthisbookdifferfrommypreviousonesIhateitwhenIbuyabookwrittenbyanauthorwhomI'veenjoyedbeforeandfindmyselfreadingfamiliarpageafterfamiliarpage.
ThisbookisintendedtoreplaceFoundationPHPforDreamweaver8,soalotofmaterialisinheritedfromthatbook.
There'salsosomeover-lapwithPHPSolutions:DynamicWebDesignMadeEasy(friendsofED,ISBN-13:978-1-59059-731-6),butIestimatethatatleast60percentofthematerialwaswrittenexclusivelyforthisbook.
Everychapterhasbeencompletelyrevisedandrewritten,andthechaptersonCSSandSpryarebrandnew.
EvenwhereIhaverecycledmaterialfromthetwopreviousbooks,Ihaverevisedand(Ihope)improvedthescripts.
Forexample,themailprocessingscripthasincreasedprotectionagainstemailheaderinjectionattacks,andIhaveadapteditsothatitcanbereusedmoreeasilywithdifferentonlineforms.
Thescriptalsoinsertstheformcontentintoadatabaseaftersendingtheemail.
IhaveaddedasectiononusingDreamweavertemplatesinaPHPsite.
There'sanewchapteronbuildingsearchqueries,andthechapteronmultipledatabasetablestellsyouhowtouseforeignkeyconstraintsifyourMySQLserversupportsInnoDB.
ThefinalchaptershowsyouhowtogenerateXMLontheflyfromadatabaseandenhanceaPHPsitebyintegratingsomefeaturesofSprydatamanagement.
INTRODUCTIONxxvHowthisbookisorganizedMypreviousbookshavetakenalinearapproach,butIhavestructuredthisonetomakeiteasierforyoutodipinandout,usingtheTableofContentsandIndextofindsubjectsthatinterestyouandgoingstraighttothem.
So,ifyouwanttolearnhowtocreatetabbedpanelswithSpry,youcangodirectlytoChapter8.
Althoughtheexamplepagesuseadesignthatwascreatedinanearlierchapter,youdon'tneedtohaveworkedthroughtheotherchapterfirst.
Nevertheless,thereisaprogressivelogictotheorderofthechapters.
Chapters1and2serveasanoverviewofthewholebook,explainingwhat'snewandwhathaschangedinDreamweaverCS3.
Chapter2alsoexplainsindetailhowtouseSpryeffects.
Theyaresimpletoapplyanddon'trequireknowledgeofCSSorPHP.
Ifyou'renewtoDreamweaver,thesechaptershelpyoufindyourwayaroundessentialaspectsoftheDreamweaverinterface.
Chapters3and4showyouhowtosetupyourworkenvironmentforPHPandDreamweaver.
IfyoualreadyhavealocaltestingenvironmentforPHP,youcanskipmostofthematerialinthesechapters.
However,IurgeyoutofollowtheinstructionsattheendofChapter3tocheckyourPHPconfiguration.
ThesectioninChapter4aboutdefiningyourtestingserverinDreamweaverisalsoessentialreading.
Thesetwosubjectsarethemostfrequentcausesofproblems.
Afewminutescheckingthatyouhavesetupeverythingcorrectlywillsavealotofheartachelater.
Chapters5and6coverindepthhowDreamweaverhandlesCSS.
Ifyou'rerelativelynewtoCSS,Chapter5showsyouhownottouseDreamweavertocreatestylerules.
Formoreadvancedreaders,itprovidesausefuloverviewofthevariousCSSmanagementtools,includingtheabilitytoreorderthecascadeandmoverulestodifferentstylesheetswithouteverleavingDesignview.
Chapter6usesoneofthe32built-inCSSlayoutstocreateanele-gantsite,andintheprocess,unravelsthemysteriesoftheCSSStylespanel.
Chapters7and8returntoSpry,exploringtheSpryMenuBarandthetabbedpanels,accor-dion,andcollapsiblepaneluserinterfacewidgets.
BecausethesewidgetsmakeextensiveuseofCSS,you'llfindthesechapterseasiertofollowifyou'reuptospeedontheprevioustwochapters.
Ofcourse,ifyou'realreadyaCSSwhizkid,jumprightin.
Chapter9seesthestartofpracticalPHPcoverage,showingyouhowtoconstructanonlineform.
ThesecondhalfofthechaptercompletestheroundupofSprywidgets,showingyouhowtouseSprytocheckuserinputbeforeaformissubmitted.
Thisisclient-sidevalidationlikeyou'veneverseenbefore.
IfyouwanttoconcentrateonPHP,youcanskipthesecondhalfofthechapterandcomebacktoitlater.
Asnotedearlier,Chapter10isacrashcourseinPHP.
Ihaveputeverythingtogetherinasinglechaptersothatitservesasausefulquickreferencelater.
Ifyou'renewtoPHP,justskimthefirstparagraphorsoofeachsectiontogetafeelforthelanguageandcomebacktoitlatertocheckonspecificpoints.
Chapters11and12giveyouhands-onpracticewithPHP,buildingthescripttoprocesstheformcreatedinChapter9.
NewcomerstoPHPshouldtakethesechaptersslowly.
Althoughyoudon'tneedtobecomeatop-levelprogrammertousePHPinDreamweaver,anINTRODUCTIONxxviunderstandingofthefundamentalsisvitalunlessyou'rehappybeinglimitedtoverybasicdynamicpages.
Ifyou'reinahurry,youcanusethefinishedmail-processingscriptfromChapter12.
Itshouldworkwithmostonlineforms,butyouwon'tbeabletocustomizeittoyourownneedsifyoudon'tunderstandhowitworks.
Chapter12alsolooksatusingDreamweavertemplatesinaPHPsite.
Chapter13getsyoureadytobringoutDreamweaver'sbiggunsbyguidingyouthroughtheinstallationoftheMySQLdatabaseandagraphicinterfacecalledphpMyAdmin.
Thischapteralsocoversdatabasebackupandtransferringadatabasetoanotherserver.
Chapters14through17showyouhowtobuilddatabase-drivenwebpagesusingPHP,MySQL,andDreamweaver'sPHPserverbehaviors.
You'llalsolearnthebasicsofSQL(StructuredQueryLanguage),thelanguageusedtocommunicatewithallmajorrelationaldatabases.
Togetthemostoutofthissection,youneedtohaveagoodunderstandingofthematerialinthefirsthalfofChapter9.
You'lllearnhowtocreateyourowncontentmanage-mentsystem,passwordprotectsensitivepartsofyoursite,andbuildsearchforms.
Thefinalthreechapters(18–20)introduceyoutoworkingwithXML(ExtensibleMarkupLanguage),theplatform-neutralwayofpresentinginformationinastructuredmanner.
XMLisoftenusedfornewsfeeds,soChapter18setstheballrollingbyshowingyouhowtouseDreamweaver'sXSLTransformationserverbehaviortodrawnewsitemsfromaremotesiteandincorporatetheminawebpage.
Chapter19explainshowtogenerateaSprydatasetfromXMLanduseittocreateanonlinephotogallery.
TheattractionofSpryisthatitprovidesaseamlessuserexperiencebyrefresh-ingonlythosepartsofapagethatchange,withoutreloadingthewholepage.
Thedisadvan-tageisthat,likemostAjaxsolutions,theunderlyingcodeleavesnocontentforsearchenginestoindex,orforthebrowsertodisplayifJavaScriptisdisabled.
So,Chapter20showshowtogetthebestofbothworldsbycreatingthebasicfunctionalitywithPHPandenhanc-ingitwithSpry.
ThefinalchapteralsoshowsyouhowtogenerateyourownXMLdocumentsfromcontentstoredinyourdatabase.
Whatthisbookisn'tIliketocreditmyreaderswithintelligence,sothisbookisn't"DreamweaverCS3fortheClueless"or"DreamweaverCS3forCompleteBeginners.
"Youdon'tneedtobeanexpert,butyoudoneedtohaveaninquiringmind.
Itdoesn'tteachthebasicsofwebdesign,nordoesitattempttolisteverysinglefeatureinDreamweaverCS3.
Thereareplentyofotherbookstofillthatgap.
However,byworkingthroughthisbook,you'llgainanin-depthknowl-edgeofthemostimportantfeaturesofDreamweaver.
Ahighproportionofthebookisdevotedtohands-onexercises.
Thepurposeistodemon-strateaparticulartechniqueorfeatureofDreamweaverinameaningfulway.
Ratherthanracingthroughthestepstofinishthemasquicklyaspossible,readtheexplanations.
Ifyouunderstandwhyyou'redoingsomething,you'refarmorelikelytorememberitandbeabletoadaptittoyourownneeds.
INTRODUCTIONxxviiWindows-andMac-friendlyEverythinginthisbookhasbeentestedonWindowsXPSP2,WindowsVista,andMacOSX10.
4—theminimumrequiredversionsforDreamweaverCS3.
TheoverwhelmingmajorityofscreenshotsweretakenonWindowsVista,butIhaveincludedseparatescreenshotsfromWindowsXPandMacOSXwhereappropriate.
Chapters3and13haveseparatesectionsforWindowsandMactoguideyouthroughthesetupofPHPandMySQL,soMacusersaren'tlefttryingtoadaptinstructionswrittenforacompletelydifferentoperatingsystem.
KeyboardshortcutsaregivenintheorderWindows/Mac,andIpointoutwhenaparticularshortcutisexclusivetoWindows(someDreamweavershortcutsconflictwithExposéandSpotlightintheMacversion).
TheonlyplacewhereIhaven'tgiventheMacequivalentiswithregardtoright-clicking.
SincetheadventofMightyMouse,right-clickingisnownativetotheMac,butifyou'reanold-fashionedkindofguyorgalandstilluseaone-buttonmouse,Ctrl-clickwheneverItellyoutoright-click(I'msureyouknewthatanyway).
SomeMackeyboardshortcutsusetheOption(Opt)key.
Ifyou'renewtoaMacandcan'tfindanOptkeyonyourkeyboard,insomecountriesit'slabeledAlt.
TheCommand(Cmd)keyhasanappleand/oracloverleafsymbol.
AnoteaboutversionsusedComputersoftwareisconstantlyevolving,and—muchthoughIwouldlikeittodoso—itdoesn'tstandstillsimplybecauseIhavewrittena700-oddpagebook.
Abookrepresentsasnapshotintime,andtimeneverstandsstill.
EverythingrelatedtoDreamweaverinthisbookisbasedonbuild3481ofDreamweaverCS3.
ThisistheversionthatwasreleasedinApril2007.
ThebuildnumberisdisplayedonthesplashscreenwhenyoulaunchDreamweaver.
YoucanalsocheckthebuildnumberbygoingtoHelpAboutDreamweaver(DreamweaverAboutDreamweaveronaMac)andclickingthecreditsscreen.
ThisbuildofDreamweavershippedwithSpryversion1.
4.
Aboutonemonthlater,AdobereleasedSpryversion1.
5.
Atthetimethisbookwasreadytogototheprinters,theinformationIhadreceivedindi-catedthat,becauseSpryisstillevolving,Dreamweaverwon'tautomaticallybeupdatedforeachnewreleaseofSpry.
Anychangesthataffectthisbookwillbepostedonmywebsiteathttp://foundationphp.
com/egdwcs3/updates.
php.
YoushouldalsocheckmywebsiteforanyupdatesconcerningPHP,MySQL,andphpMyAdmin.
Theinstructionsinthisbookarebasedonthefollowingversions:PHP5.
2.
1MySQL5.
0.
37phpMyAdmin2.
10.
1INTRODUCTIONxxviiiUsingthedownloadfilesAllthenecessaryfilesforinthisbookcanbedownloadedfromwww.
friendsofed.
com/downloads.
html.
Thefilesarearrangedinfivetop-levelfolders,asfollows:examples:Thiscontainsthe.
htmland.
phpfilesforalltheexamplesandexercises,arrangedbychapter.
UsetheFileComparefeatureinDreamweaver(seeChapter2)tocheckyourowncodeagainstthesefiles.
Someexercisesprovidepartiallycom-pletedfilesforyoutoworkwith.
Whereindicated,copythenecessaryfilesfromthisfoldertotheworkfilesfoldersoyoualwayshaveabackupifthingsgowrong.
images:Thiscontainsalltheimagesusedintheexercisesandonlinegallery.
SpryAssets:ThiscontainsthefinishedversionsofSpry-relatedstylesheets.
Withoneexception,itdoesnotcontaintheexternalJavaScriptfilesneededtodisplaySpryeffects,widgets,ordatasets.
DreamweavershouldcopytheJavaScriptfilesanduneditedstylesheetstothisfolderautomaticallywhenyoudotheexercisesasdescribedinthisbook.
tools:ThiscontainsaDreamweaverextensionthatloadsasuiteofusefulPHPcodefragmentsintotheSnippetspanel,aswellasasavedqueryfortheFindandReplacepanel,andSQLfilestoloaddatafortheexercisesintoyourdatabase.
workfiles:Thisisanemptyfolder,whereyoushouldbuildthepagesusedintheexercises.
Copythesefolderstothetoplevelofthesitethatyoucreateforworkingwiththisbook(seeChapter4).
SupportforthisbookEveryefforthasbeenmadetoensureaccuracy,butmistakesdoslipthrough.
Ifyoufindwhatyouthinkisanerror—andit'snotlistedonthebook'scorrectionspageatwww.
friendsofed.
com—pleasesubmitanerrorreporttowww.
friendsofed.
com/errataSubmission.
html.
WhenEDhasfinishedwiththethumbscrewsandgotmetoadmitI'mwrong,we'llpostthedetailsforeveryone'sbenefitonthefriendsofEDsite.
Ialsoplantopostdetailsonmyownwebsiteathttp://foundationphp.
com/egdwcs3/updates.
phpofchangestoDreamweaverorothersoftwarethataffectinstructionsinthebook.
Iwantyoutogetthebestoutofthisbookandwilltrytohelpyouifyourunintodifficulty.
Beforecallingforassistance,though,startwithalittleself-help.
Throughoutthebook,Ihaveadded"Troubleshooting"sectionsbasedheavilyonfrequentlyaskedquestions,togetherwithmyownexperienceofthingsthatarelikelytogowrong.
MakeuseoftheFileComparefeatureinDreamweavertocheckyourcodeagainstthedownloadfiles.
Ifyou'reusingasoft-warefirewall,tryturningitofftemporarilytoseewhethertheproblemgoesaway.
INTRODUCTIONxxixIfnoneoftheseapproachessolvesyourproblem,scanthechaptersubheadingsintheTableofContents,andtrylookingupafewrelatedexpressionsintheIndex.
AlsotryaquicksearchontheInternet:Googleandtheotherlargesearchenginesareyourfriends.
Myapologiesifallthissoundsobvious,butanamazingnumberofpeoplespendmoretimewaitingforananswerinanonlineforumthanitwouldtaketogothroughthesesimplesteps.
Ifyou'restillstuck,visitwww.
friendsofed.
com/forums/.
Usethefollowingguidelinestohelpothershelpyou:Alwayscheckthebook'supdatesandcorrectionspages.
Theanswermayalreadybethere.
Searchtheforumtoseeifyourquestionhasalreadybeenanswered.
Giveyourmessageameaningfulsubjectline.
It'slikelytogetaswifterresponseandmayhelpotherswithasimilarproblem.
Saywhichbookyou'reusing,andgiveapagereferencetothepointthat'sgivingyoudifficulty.
Giveprecisedetailsoftheproblem.
"Itdoesn'twork"givesnoclueastothecause.
"WhenIdosoandso,xhappens"isalotmoreinformative.
Ifyougetanerrormessage,saywhatitcontains.
Bebriefandtothepoint.
Don'taskhalfadozenquestionsatonce.
It'softenhelpfultoknowyouroperatingsystem,andifit'saquestionaboutPHP,whichversionofPHPandwhichwebserveryou'reusing.
Don'tpostthesamequestionsimultaneouslyinseveraldifferentforums.
Ifyoufindtheanswerelsewhere,havethecourtesytoclosetheforumthreadandpostalinktotheanswer.
ThehelpIgiveinthefriendsofEDandAdobeforumsisnotlimitedtoproblemsarisingfrommybooks,butpleaseberealisticinyourexpectationswhenaskingforhelpinafreeonlineforum.
AlthoughtheInternetneversleeps,thevolunteerswhoanswerquestionscertainlydo.
They'realsobusypeople,whomightnotalwaysbeavailable.
Don'tposthundredsoflinesofcodeandexpectsomeoneelsetoscouritformistakes.
Andifyoudogetthehelpthatyouneed,keepthecommunityspiritalivebyansweringquestionsthatyouknowtheanswerto.
INTRODUCTIONxxxLayoutconventionsTokeepthisbookasclearandeasytofollowaspossible,thefollowingtextconventionsareusedthroughout.
Importantwordsorconceptsarenormallyhighlightedonthefirstappearanceinboldtype.
Codeispresentedinfixed-widthfont.
Neworchangedcodeisnormallypresentedinboldfixed-widthfont.
Pseudo-codeandvariableinputarewritteninitalicfixed-widthfont.
MenucommandsarewrittenintheformMenuSubmenuSubmenu.
WhereIwanttodrawyourattentiontosomething,I'vehighlighteditlikethis:Sometimescodewon'tfitonasinglelineinabook.
Wherethishappens,Iuseanarrowlikethis:.
Thisisavery,verylongsectionofcodethatshouldbewrittenallonthesamelinewithoutabreak.
Ahem,don'tsayIdidn'twarnyou.
INTRODUCTIONxxxi
零途云是一家香港公司,主要产品香港cn2 gia线路、美国Cera线路云主机,美国CERA高防服务器,日本CN2直连服务器;同时提供香港多ip站群云服务器。即日起,购买香港/美国/日本云服务器享受9折优惠,新用户有优惠码:LINGTUYUN,使用即可打折。目前,零途云还推出性价比非常高香港多ip站群云服务器,有需要的,可以关注一下。零途云优惠码:优惠码:LINGTUYUN (新用户优惠,享受9折优...
百纵科技:美国高防服务器,洛杉矶C3机房 独家接入zenlayer清洗 带金盾硬防,CPU全系列E52670、E52680v3 DDR4内存 三星固态盘阵列!带宽接入了cn2/bgp线路,速度快,无需备案,非常适合国内外用户群体的外贸、搭建网站等用途。官方网站:https://www.baizon.cnC3机房,双程CN2线路,默认200G高防,3+1(高防IP),不限流量,季付送带宽美国洛杉矶C...
可以看到这次国庆萤光云搞了一个不错的折扣,香港CN2产品6.5折促销,还送50的国庆红包。萤光云是2002年创立的商家,本次国庆活动主推的是香港CN2优化的机器,其另外还有国内BGP和高防服务器。本次活动力度较大,CN2优化套餐低至20/月(需买三个月,用上折扣+代金券组合),有需求的可以看看。官方网站:https://www.lightnode.cn/地区CPU内存SSDIP带宽/流量价格备注购...
headersalreadysent为你推荐
支持ipadmagento既然magento那么强大,为什么还有那么多用zencart的?zencart还有发展的空间吗?空间文章问问你知道我的空间有几篇文章啊?conn.asp数据库连接出错,请打开conn.asp文件检查连接字串。cisco2960配置cisco4506与2960的vlan配置美要求解锁iPhone如何看美版苹果是有锁无锁课程cuteftp文档下载怎样在手机上建立word的文档? 需要下载什么软件?抢米网怎么用小米商城可以快速抢到手机!大侠们 帮帮忙!颁发的拼音大致的致的拼音
最便宜虚拟主机 a2hosting awardspace 私服服务器 国内永久免费云服务器 好玩的桌面 好看的桌面背景大图 全站静态化 权嘉云 165邮箱 admit的用法 网络空间租赁 美国在线代理服务器 电信托管 华为k3 石家庄服务器 镇江高防服务器 sonya cdn加速技术 百度新闻源申请 更多