Search Engine Optimization & Internet Marketing Resources

Infographics

SEOMOZ’s Noob’s Guide to Online Marketing

noob-guide-to-marketing-infographic
Blumenthal’s Local SEO & Social Media Equity


Search Engine Land Periodic Table of SEO

Search Engine Land Periodic Table of SEO

Blogs

Blumenthal’s – Local Search and Google Places

SEOMOZ

Search Engine Land

Search Engine Watch

David Mihn’s Local Search Ranking Factors 2011

SEOMoz Search Ranking Factors 2011

Posted in Web Design | Tagged | Leave a comment

Dreamweaver Assignments – Final Week – Due May 25

  • Final Exam – Open May 20 – May 25 at midnight
  • Final Project – Due May 25 at midnight – You can choose from several projects for your final exam and you can work in teams.    You can choose to expand on the Cinco de Mayo example – including completing the processing of all the form data; expanding on the design of the HTML email, responder, form; adding to the functionality of the page, etc.   Note that the student server does not allow for file uploads.    As an alternative you can submit the Master/Detail SQL report as your final project, creating a multi-table database from which to build the report.   You can also develop your own Final Project plan, please let me know you plan before you begin work on it.
  • If you haven’t done so, please complete the Metrics that Matter survey.     You get 5 points for letting me know that you completed the survey, even if you do so anonymously.
Posted in Dreamweaver, Spring 2011 | Tagged | 5 Comments

Learn to Create Interactive Drill-Down Dashboards with PHP and FusionCharts

Learn to Create Interactive Drill-Down Dashboards with PHP and FusionCharts

via Learn to Create Interactive Drill-Down Dashboards with PHP  at Nettuts.

This tutorial is  so similar to the SQL final project, I am sharing it to provide another approach using FusionCharts instead of GVChart.   There are lots of great techniques to learn from this example.

Posted in MySQL, Spring 2011, Web Design | Tagged , , | 2 Comments

Using Dreamweaver XSLT to Display Live News Feeds and XML

Publishing RSS feeds on a website has several benefits – keeping your visitors informed, adding content to support your search optimization and building partnerships with other internet publishers.     Dreamweaver includes several server-based features designed to make it very simple to syndicate content to your website.

xsltDreamweaver supports server-side XSLT Transformation through a set of insert widgets that implement PHP and XSL  code just like server behaviors.  XSLT is a markup language for transforming data elements in XML so they integrate seamlessing into documents such as HTML or PDF.   Dreamweaver provides capabilities to build the XSLT code using Design View and the XSLT Insert Panel.    Dreamweaver also provides an XSLT processor implemented in PHP.   This file is placed in your site root under /includes/MM_XSLTransform/ and must be uploaded to the server.

All of this may sound overly complex, but the process of embedding an RSS newsfeed onto a page is relatively simple with Dreamweaver, let’s get started.

Creating the XSLT code

  1. In Dreamweaver, create a new file of page type XSLT (fragment).
  2. Choose Attach a Remote File on the Internet and enter this URL or another RSS feed of your own  choosing.
    http://webdevelopmentjobs.org/job-category/web-developer/feed/rss
  3. Save the page as web-developer-jobs.xsl.
  4. In the Bindings Panel, you will see the structure of the XML newsfeed.    With the document in Design View, drag the Item Title from the Bindings Panel onto the page.
  5. Click on H3 in the Insert – Text Panel to wrap the element in a headline 3 tag.
  6. Insert a Paragraph below the H3 and drag the description into the P.
  7. In Code View, select the H3 and P elements completely and then click the Repeat Region button in the Insert – XSLT Panel.  Notice how the markers in Design View are now relative to the Item repeating element of the XML structure.
  8. In Design View, select the {Title} xml element within the H3 and click on the File Selector icon in the Link selector of the Property Inspector.   Choose Data Sources (radio button in Windows, button in Mac OSx) and choose the Item – Link XML note from the XPATH Expression Builder to add the link data element to the href in an A tag wrapping the title.
  9. In Design View, select the H3 and P elements again (not the xs;:foreach that is enclosing) and click the Conditional Region button on the Insert – XSLT Panel.  In the TEST field, enter ‘position() <= 5  or whatever integer you want to have as the number of news items displayed.
  10. Insert an H2 tag just above the opening <xsl:foreach…> and drag the channel – title data element from the Bindings Panel.
  11. Link the H2 Title element to the Link data element in the channel data element as in step 8 above.
  12. Create a new PHP page and save it.    In the Insert – Data panel, insert an XSL Transform into an element on the page.    Choose the .xsl file you created in the previous steps.     You cannot see the results in Live View, but you can Preview in Browser to see your live newsfeed.

Additional Resources

Posted in Dreamweaver, Spring 2011, Web Design | Tagged , , | Leave a comment

SQL: A Simple PHP/MySQL Master Detail Report

This tutorial is based on Project 4 of the SQL class.   It is of use to students in the Advanced Dreamweaver class as well.    In fact, a summary/detail report is a very common technique in using SQL database-driven applications.    I will be using the winery database created by an SQL student to create two linked webpage reports based on dynamic results from an SQL database.    Here is the schema.  Dreamweaver students can peek in on the SQL class pages to see how we arrived at this database and what the Project 4 assignment is.

Wine Sale MySQL database

The Master Page

  1. Create a new webpage named master.php with a table including a row of header information – branch, salesperson, total sales. Mysql page 11
  2. Insert a PHP script tag to start the program after the closing tr tag.   We are going to use the mysql() library. You can  follow the example on page 406 and 407 of the Learning MySQL textbook, using the mysql_connect, mysql_select_db, mysql_query and mysql_fetch_array.   You want to connect to the your mysql account and database of course, using localhost as the database server.
  3. You need to write an  SQL for the summary results for your report.   In the sample database, this one works well, as see in a MySQL Workbench scratchpad:sql query
  4. At this point, your webpage should work and return the same results into the HTML table on the page.     Here is the code, color-coded by Dreamweaver for easier legibility.  I am also displaying in Live View, so Dreamweaver displays the server-processed page.dreamweaver live view
  5. Notice that the mysql_fetch_array call uses the MYSQL_ASSOC result type, and that using the foreach loop lays the resulting data out neatly in the columns of the table.    By using this result type, we can refer to the resulting data elements individually and so wrap a query string link around the salesperson name.   To do so, we will decompose the result using the associative row array to get more control over laying the data into the HTML table:sql results
  6. The master.php is  complete.   Test the page through a browser and watch the link rollover to make sure the query string looks correct, although it won’t work yet.   We’re going to build that page now.

The Detail Page

  1. ‘Save As’ or duplicate the master.php page and rename it as detail.php.    Change the table header accordingly to show the four columns in the detail report: customer, variety, vintage, sale total
  2. Use MySQL Workbench to write the SQL query to return the detailed sales records from the sales database table.Replace the SQL statement in the mysql_query function.Thanks to this highly normalized database schema, I’ve developed a nice complex SQL query, using a sample salesperson name of Carlin just  for the test.sql query
  3. The query string in the URL creates a PHP associative array of each name/value pair called $_GET[].  We can refer to the value by passing the associative name array.   Replace the ‘hardcoded’ string Carlin in the SQL query within the mysql_query function to this code: 
    p.personName = \”{$_GET["salesperson"]}\”

    That will insert the query string from the URL into the where statement of the SQL query to select the appropriate record based on the record clicked in the master report.
  4. Rearrange the code so the appropriate data elements are layed out in the table.  This should be pretty straightforward following the example in the master page.
  5. Change the page title and the h1 header to dynamically display the salesperson name from the query string in the URL.get array in php
  6. Add a link back the to summary master page below the table.
  7. Test the master page in a browser and click on a salesperson name.   The detail sales report for that salesperson should appear.

Download the code here.

Posted in Dreamweaver, MySQL, Spring 2011, Web Design | Tagged , , | 3 Comments

Dreamweaver Cinco de Mayo Project

In class on Thursday May 5 we started building a PHP form for a simple application that allows a user to upload an image and order a custom Cinco de Mayo tshirt with the image on the front.  Using the core PHP libraries, we learned how to upload the file, write a record to a log file, write a record to a MySQL table and send an HTML email with the image included.

All of the code and required files are included here.  The scripts/tshirtprocessor.php is documented with comments.  The accounts and passwords are deleted and need to be replaced with your own.    The example will not work on student.santarosa.edu because the accounts are restricted from uploading files.  The   dependencies on the server are:

  • an uploads/ folder with read/write privileges
  • an uploads/files.csv  text file (with read/write privileges
  • a MySQL account with write privileges
  • a MySQL table named files with a filename varchar()  column
  • sendmail access on the server

cinco de mayoThere are several valuable techniques that we  learn from this example including:

  • The $_FILES[] array
  • The use of print_r() to display complex variables such as objects and arrays.
  • How PHP processes uploads: When a input element of type ‘file’ is posted, it is moved to the server’s /tmp folder, assigned a temporary name, and it’s metadata is posted to the $_FILES[] array.   move_uploaded_file() is the PHP function that allows you to save the file in a specific folder on your site permanently for further reference.
  • How to open, write to and close a text file on the server.
  • How to format and send HTML email.
  • How to connect to a MySQL database and insert a record into a table using the basic PHP libraries.

There are some additional features  needed to complete the example and various ways to enhance it with new features.  We will be enhancing this contact form in the next few weeks as a final project.   At a minimum, we need to:

  • Hooking up the additional form elements to the responder, database table, file log & email.
  • Further styling of the elements in the form, the response, the email.
  • Reports listing the tshirt transactions from the database and the logfile.

 

Posted in Dreamweaver, MySQL, Spring 2011, Web Design | Tagged , , , | 9 Comments

Dreamweaver Cinco de Mayo 2011

Lecture Outline

  • Review quiz 3
  • Job postings
  • Curriculum – topics for next 3 weeks

PHP Feedback in Dreamweaver

  • print_r(mixed $expression [, bool $return = false ]) – displays information about a variable in a way that’s readable by humans
  • Dreamweaver LIVE CODE mode

File Uploads

  • Uploading files with PHP – $_FILES[]
  • Setting permissions on an upload folder
  • File type input element
  • move_uploaded_file(string $filename , string $destination)
  • is_uploaded_file(string $filename)

Advanced Forms Processing

  • $_POST[] and checkboxes, select lists, radio groups, checkbox groups, multiple select lists.
  • Writing Data to a text file

Simple HTML Email

  • $headers  = ‘MIME-Version: 1.0′ . “\r\n”;
    $headers .= ‘Content-type: text/html; charset=iso-8859-1′ . “\r\n”;

Simple Database Access

Posted in Dreamweaver, Spring 2011, Web Design | Tagged | Leave a comment

Dreamweaver Assignments – Due May 8

Zend Email

  1. Quiz 3 – Three questions based on topics in Lesson 08.

Designing A WordPress Child Theme

Project 7  is optional because the SRJC does not have WordPress installed or installable.    You may have or be able to get access to a ISP hosting account where you can install WordPress – using either a menu driven install or the basic WordPress simple installation.   You can also install WordPress in a LAMP/WAMP/MAMP setup as explained in Lesson 04.  You cannot do this exercise on WordPress.com.   I hope you have a chance to do this exercise, if not you can still read the chapter and other articles.

  1. Read Lesson 04.
  2. Read this article on WordPress Child Themes on codex.wordpress.org
  3. Project 7 – Design a Custom WordPress Child Theme – Using the techniques in the articles, create a child theme and modify several style or layout features. Send me an email with a description of your project and a link to the blog homepage.
Posted in Dreamweaver, Spring 2011, Web Design | Tagged , | 2 Comments

Designing a WordPress Child Theme

WordPress began as an open source blogging system that is now the most popular Web Content Management System used by professional web designers.    It is probably the most effective platform for   building a custom-designed website with complete content editing capabilities, user interaction and thousands of plugins to extend the basic features.  Best of all,  ISPs do not charge for WordPress installation and it is based on the HTML/CSS/PHP/MySQL technologies that we learned in the class.

WordPress Architecture

  • Pages
  • Posts
  • Themes
  • Widgets
  • Menus
  • Categories & Tags
  • Plugins
  • Users

Creating a WordPress Child Theme

A WordPress child theme is one that has another theme defined as it’s template in the commented header of the style.css file. It inherits it’s layout and bahaviors (function.php) from its template theme, unless they are overridden in its own function.php. Style.css is all that is needed for the WordPress dashboard to list the child theme.  A child theme is the basic building block for a WordPress design and should be sufficient to create a unique identity based on one of the many professional themes available.

  1. Explore the WordPress Dashboard and the Appearance – Themes page
  2. Explore the theme files in the Dreamweaver Files Panel.
  3. Create a new folder with the theme name, copy  style.css from your template theme folder to the new folder  Edit the name and template comments in the header of styles.css.   Add  screenshot.png to the folder to identify it in the themes page.   Upload the folder.
  4. Refresh the WordPress Dashboard Theme page and the child theme will be visible – preview and activate it.

WordPress Themes can each have their own styles, behaviors, layouts, widgets, plugins and other elements.    The Twentyten Theme is useful to create your theme from, because many of the main visual elements are defined within a widget of the theme dashboard.   Unfortunately, this feature adds the CSS rule to the head of each page.    The book explains how to use the functions.php file from twentyten to override that definition.  It is a good insight into how the functions.php override works.

Most other elements of the theme style are accessible through style.css.   In Dreamweaver it is possible to use Live View and CSS Panels and the styles.css definition in Code View to create the style of your theme.

Posted in Dreamweaver, Spring 2011, Web Design | Tagged | 1 Comment

Informational Resources for Dreamweaver CS 5.5

New CS5.5 Features

Creative Suite 5.5 will be available in May.   Get started learning about it here:

Posted in Dreamweaver, Spring 2011, Web Design | Tagged , , | Leave a comment