HighlyStructured.com is a blog website run by Mike D'Agostino about search engine positioning, online marketing, php/MySQL, tae kwon do, and various other topics.

How this site was created

Where to start...I guess you could say this site was ultimately developed as an experiment, and a place to put my portfolio. The domain name "highlystructured.com" was originally registered in 2000 and the first version of the site went live in the fall of 2000. Since then the site has been through countless iterations displaying my portfolio, school work, artwork, and experimental "web creations". This version, however, has a little more purpose.

I've been working professionally the past 7 years or so as a web designer. I designed my first website for my parents' catering business in 1997 and have been immersed in the web design field ever since. As part of my learning, I've also taken on a new role as an "online marketer". This, in effect, means that I must be aware of the search engines and how the search engines rank websites in order to obtain the best rank possible on the search engines. This is obviously important for my professional career, but also from a personal stand-point if I want to be recognized as a leader in the search engine/online marketing field.

A word about the search engines

When someone says "search engine", the first thing that pops into mind is Google. Google is the number one search engine. And every one and every business wants to be number one on Google (or at least obtain a first page ranking). It has been my responsibility over the past 3 or 4 years to try and obtain the best possible ranking for my clients and personal projects on Google. I've had some great success and feel that I can take my knowledge of Google and how they rank websites to the next level by experimenting more.

So, one might surmise, this site is about ranking higher on Google and the other search engines.

So how was this site created?

When I first got started in web design, and up until a few years ago, all my sites were static HTML websites. In order to update the sites I had to manually go into the code (or use an HTML editor - GoLive is my choice), and perform the updates, FTP the files to the web server, and double-check to make sure everything turned out ok. That was fine until a few years ago when I started learning about PHP and MySQL databases. PHP makes it "very easy" to manipulate data in a MySQL database and a result, get a website to update on-the-fly and present data dynamically.

The way it works is that an administrative interface is built which acts as the go-between when updating the site. Let's say you have a directory of names and phone numbers, and you want to add a person to the list. Instead of opening up a text editor, manipulating some HTML code, saving the file, and uploading it to the web server, you can simply open the admin interface, type in the person's name and phone number, and click "Submit" and the record is added automatically!

This may not seem too impressive when you're dealing with names and phone numbers, but when you start dealing with tens of different sections to a website and you really want it to become interactive, there is no better solution. When you get to this level you are really creating your own Content Management System (CMS).

A word about Content Management Systems (CMS's)

I've used a bunch of different content management systems, including ecommerce content management systems. I haven't found one I've been completely satisfied with. Of course the benefit to using a pre-compiled CMS is that it's already done for you! Wade through a bunch of settings pages and you can immediately start adding data. The one drawback, and the main drawback, is that pre-compiled CMS's are usually very difficult to customize. I've seen a few recently that work with loads of style sheets that you could go into and work with to customize the look-and-feel of your site, but it is often more confusing than streamlined. In addition, if you want to add a new feature to the website, it is often not possible using a pre-compiled CMS.

So, I usually create my own CMS for my website projects. This gives me the flexibility to design the site graphics and layouts any way I choose, and to be able to make the CMS effecient, while easily being able to add new features. Now of course I don't have years and years of experience building CMS's, and I'm sure I may not construct the CMS the code-efficient way possible, but they work. And again, flexibility is paramount when creating websites from scratch that undoubtedly change in scope as they are being produced.

The problem with dynamic database driven websites and CMS's

Content management systems and dynamic database driven websites are great! They allow tons of flexibility and make the website very easy to update. However, they do not fare very well with the search engines. The reason is that search engines have a difficult time reading data stored in a database. Search engines (from what I have found and what is documented on the web) will only read static elements on a web page. This is obviously a problem if you are creating a website that stores 90% of it's data in a database, and you want it to rank high on the search engines. You might have volumes of unbelievable content that everyone in the world should read, but is not getting picked up by the search engines because it is all stored in a database.

Take a very common example...you have a table in a database that is used to store a name and description. You probably have three fields set up, ID, Title, and Description. Then, on the front end of your website, you might list all of the records in the table and have a link to each individual record. The anchor code would probably read:

<a href="listing.php?id=25">Link to record</a> From a search engine standpoint, it will get to the listing.php page, but will fail to find the record with an ID = 25. So, you will lose out on all the data stored for record 25 (and all other records). It really stinks!

The solution

Quite simply the solution is to present all your data in a database in static HTML format so that Google and the other search engines can read it. You're probably thinking, "That's great! But doesn't that undermine the whole basis of a dynamic database driven website?" The answer is yes, but there are solutions.

One solution is to use a CMS and store all your data in a database, construct the front end of your website as usual, and then painstakingly go through the front end of your site to load every page into your browser, and use your browser's "Save as..." feature to save all your pages as static HTML. Then, you can upload your pages to your web server. Not a very good solution...

An alternative would be to use a website copier. I've used some in the past and not all, just like the search engines, will read data from a database. In addition you don't have much control over the META tags or filenames (unless they are built into the database structure).

A second alternative is to use a method of "tricking" the browsers and search engines into believing data stored in a database is "static". Using the example above:

<a href="listing.php?id=25">Link to record</a> a script can be written to convert the anchor code to: <a href="directory/id/25/">Link to record</a> The script can "convert" the ?'s and ='s into /'s creating "virtual" directories. This seems like a popular method nowadays and I've used a few sites which use this method. While I cannot argue it's ability (I've seen sites that use this that rank high on the search engines), I just can't get away from the feeling that you are somehow tricking the search engines. And, from what I've seen over the past 5 or 6 years, Google and the search engines have ways of phasing out "tricks" that people use to get their sites to rank high on the search engines.

My solution - Or, finally, how this site was created

My solution is to use PHP to create static HTML pages for me. PHP is a fantastic scripting language that has tons of features and functions to manipulate practically anything on a web page and even files and directories on a web server. Using the file manipulation functions, it is possible to construct your own static HTML pages.

The process goes something like this:
- Set up your database
- Create your database tables
- Make sure to include a "filename" field for each table (this will ensure you can give each record in the table it's own unique filename)
- Create a script to retrieve your table records
- Use HTML to format the records you retrieve
- Store the HTML code to a variable
- Use PHP to write that variable to a file with the filename you specified for that record

That's it! Easier said than done but PHP is really flexible. In essence you are creating an HTML page from your database, storing the entire HTML code as a text string in one variable, and then writing that variable to a file and saving it to your web server.

The result is a dynamic database driven website that is produced as static HTML. You get all the benefits of being able to easily update your website, AND having all that data stored as static HTML to make is visible to Google and the search engines. It is even possible to include fields for META tags in your database tables so that you can control all aspects of the page to make it as search engine friendly as possible. Using this method along with CSS to control the layout of the page and the possibilities are endless!

There you have it! This site was created using a custom content management system (CMS). All the data in this website is stored in a MySQL database and uses PHP to create a static HTML archive of all the data in database to help it get the best possible positioning and rank on Google and the other search engines.

Recent Articles



Other Blogs of Interest