5688FM.qxd 12/29/05 10:42 AM Page i Foundation ASP for Dreamweaver 8 Omar Elbaga and Rob Turnbull 5688FM.qxd 12/29/05 10:42 AM Page ii Foundation ASP for Dreamweaver 8 Copyright © 2006 by Omar Elbaga and Rob Turnbull All rights reserved. No part of this work may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording, or by any information storage or retrieval system, without the prior written permission of the copyright owner and the publisher. ISBN (pbk): 978-1-59059-568-8 ISBN (pbk): 1-59059-568-8 Printed and bound in the United States of America 9 8 7 6 5 4 3 2 1 Trademarked names may appear in this book. Rather than use a trademark symbol with every occurrence of a trademarked name, we use the names only in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the trademark. Distributed to the book trade worldwide by Springer-Verlag New York, Inc., 233 Spring Street, 6th Floor, New York, NY 10013. Phone 1-800-SPRINGER, fax 201-348-4505, e-mail [email protected], or visit www.springeronline.com. For information on translations, please contact Apress directly at 2560 Ninth Street, Suite 219, Berkeley, CA 94710. Phone 510-549-5930, fax 510-549-5939, e-mail [email protected], or visit www.apress.com. The information in this book is distributed on an “as is” basis, without warranty. Although every precaution has been taken in the preparation of this work, neither the author(s) nor Apress shall have any liability to any person or entity with respect to any loss or damage caused or alleged to be caused directly or indirectly by the information contained in this work. The source code for this book is freely available to readers at www.friendsofed.comin the Downloads section. Credits Lead Editor Assistant Production Director Chris Mills Kari Brooks-Copony Technical Reviewer Production Editor Jason Nadon Ellie Fountain Editorial Board Compositor Steve Anglin, Dan Appleman, Dina Quan Ewan Buckingham, Gary Cornell, Tony Davis, Jason Gilmore, Proofreader Jonathan Hassell, Chris Mills, Lori Bring Dominic Shakeshaft, Jim Sumser Indexer John Collin Project Manager Beth Christmas Artist April Milne Copy Edit Manager Nicole LeClerc Interior and Cover Designer Kurt Krames Copy Editors Damon Larson, Manufacturing Director Nicole LeClerc Tom Debolski 5688FM.qxd 12/29/05 10:42 AM Page iii I would like to dedicate this book to my mom; dad; brothers and sister, Tamer, Hesham, Soliman, and Yasmine; my fiancée, Mona; my entire family; and all my faithful readers. —Omar Elbaga This book is dedicated to my family and friends who always support me. Special thanks go to baby Theo who always puts an even bigger than usual smile on my face. —Rob Turnbull 5688FM.qxd 12/29/05 10:42 AM Page iv 5688FM.qxd 12/29/05 10:42 AM Page v CONTENTS AT A GLANCE About the Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiv About the Technical Reviewer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvi Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii Chapter 1 Dreamweaver and Dynamic Sites . . . . . . . . . . . . . . . . . . . . 1 Chapter 2 The Dreamweaver Environment . . . . . . . . . . . . . . . . . . . . 19 Chapter 3 A First Taste of ASP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Chapter 4 Databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 Chapter 5 Working with Forms . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 Chapter 6 Building a Random Quote Generator . . . . . . . . . . . . . . . 175 Chapter 7 Completing the Quotes Administration System . . . . . . 195 Chapter 8 Restricting Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223 Chapter 9 Creating a Blog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245 Chapter 10 Image Gallery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287 Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327 v 5688FM.qxd 12/29/05 10:42 AM Page vi 5688FM.qxd 12/29/05 10:42 AM Page vii CONTENTS About the Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiv About the Technical Reviewer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvi Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii Chapter 1 Dreamweaver and Dynamic Sites . . . . . . . . . . . . . . . . . . . . 1 Data exchange . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Dynamic takes over static . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Dreamweaver server models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 The ASP VBScript server model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 What Dreamweaver 8 offers you as an ASP developer . . . . . . . . . . . . . . . . . . . . 9 Checking out data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Connecting to databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Where is ASP in Dreamweaver? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 ASP features supported by Dreamweaver . . . . . . . . . . . . . . . . . . . . . . . . 10 Insert bar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 The Insert bar’s ASP tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 The Insert bar’s Application tab . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Application panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 The Databases tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 The Bindings tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Chapter 2 The Dreamweaver Environment . . . . . . . . . . . . . . . . . . . . 19 Workspace layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 The Multiple Document Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 The CSS panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 The Application panel group . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 The Databases panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 The Bindings panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 The Server Behaviors panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 The Tag Inspector panel group . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 The Attributes panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 The Behaviors panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 vii 0e197eab08414336a67d4228a6088055 5688FM.qxd 12/29/05 10:42 AM Page viii CONTENTS The Files panel group . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 The Files panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 The Assets panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 The Snippets panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 The Properties panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 The Results panel group . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 The Search panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 The Validation panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 The Target Browser Check panel . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 The Link Checker panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 The Site Reports panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 The FTP Log panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 The Server Debug panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 The Reference panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 Toolbars . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 The Insert toolbar/panel group . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 The Document toolbar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 The Standard toolbar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 The Style Rendering toolbar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 The Coding toolbar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 New tools in Design view . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Zoom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Magnification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Hand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Guides . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Defining an ASP VBScript site in Dreamweaver . . . . . . . . . . . . . . . . . . . . . . . 39 Local Info screen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 Remote Info screen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 Testing Server screen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Creating the site . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Chapter 3 A First Taste of ASP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Specify your language: VBScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 ASP delimiters <% %> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Insensitive case! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 Declaring and printing variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 Letting VBScript declare variables implicitly . . . . . . . . . . . . . . . . . . . . . . . 52 Syntax rules for variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 Data types: string, integer, and Boolean . . . . . . . . . . . . . . . . . . . . . . . . . 52 Variable concatenation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 Watching out for “adding” numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 Variable naming conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 Prefixes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 Using understandable variable names . . . . . . . . . . . . . . . . . . . . . . . . 56 Commenting code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 viii 5688FM.qxd 12/29/05 10:42 AM Page ix CONTENTS VBScript’s house of built-in functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 Conversion functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 String functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 Assignment operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 Logical operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 AND, OR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 NOT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 Comparison operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 Mathematical operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 Operator precedence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 Conditional logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 The If statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 The If . . . Then . . . Else statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 The If . . . Then . . . ElseIf statement . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 Looping logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 The Do . . . Loop statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 The While . . . Wend statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 Cookies (ASP cookies, not chocolate chip!) . . . . . . . . . . . . . . . . . . . . . . . . . 72 Response.Cookies and Request.Cookies . . . . . . . . . . . . . . . . . . . . . . . . . 73 Cookie expiration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 Updating cookies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 Deleting cookies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 A word of warning about the use of cookies . . . . . . . . . . . . . . . . . . . . . . 76 Session variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 Setting the session timeout interval . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 Creating and retrieving session variables . . . . . . . . . . . . . . . . . . . . . . . . . 77 Updating session variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 Deleting session variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 Note on sessions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 Environment variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 Chapter 4 Databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 Creating a database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 Inside Microsoft Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 Inside Microsoft SQL Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 Preparing a SQL Server database for Internet use . . . . . . . . . . . . . . . . . . . . . . 88 Creating the IUSR account in SQL Server . . . . . . . . . . . . . . . . . . . . . . . . 89 Database design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 Object naming conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 Creating tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 Creating tables in Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 Creating tables in SQL Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 Relational databases and referential integrity . . . . . . . . . . . . . . . . . . . . . . . . 97 Creating a relationship in Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 Creating a relationship in SQL Server . . . . . . . . . . . . . . . . . . . . . . . . . . 100 SQL Server views and Access queries . . . . . . . . . . . . . . . . . . . . . . . . . . 102 ix