How do I layer my site?

Having never built a dynamic website before, all of the different platforms and languages out there are a bit daunting. I’ve been looking at PHPmyAdmin, Ruby on Rails, XAMPP, AJAX, mySQL, XML vs relational databases, etc.; and I just wanted to know what I need to use to build and manage my database, establish a functional server-side and client-side, query the database, and so on.
Lemme know if I’m leaving stuff out too!

PHPmyAdmin is just the interface used to manage a mysql database.

PHP is the most common language for building dynamic websites, most often used with mysql database. I started learning php from these free tutorial videos. They’re a bit unorthadox, but I found then as entertaining as much as useful and now I’m building websites fully database driven. :slight_smile:
Most of what you list are different languages & applications that have different uses. Just google about them.

Hello there,

Seems you’ve got things covered there but I’ll go through the things you mentioned anyway. I’ll divide the following into a few sections for readability.

Server-side scripting
You can choose between Ruby, PHP, Perl, Python or any other scripting or programming language you may want to use. Some people will tell you to use PHP and others swear by Ruby; others by Python and so on. It all comes down to personal preference, and choosing the right tool for the job.

For your purpose, developing a database-driven website, any of the mentioned languages would be a good choice (more or less). I’ve personally been using PHP for ten years but switched to Ruby earlier this year. PHP was easy for me to learn since I had done C and C++, but I find that Ruby is a much more productive language so that’s what I use most of the time—depending on the requirements.

I really enjoy Ruby but I suggest you take a look at a few languages and see which one you find most interesting.

Server-side framework/platform
Since you mentioned Ruby on Rails, I’m adding this little piece her about frameworks and platforms. A framework is, well, a bunch of features that will help you build your site/application. For example, an MVC framework provides a foundation and site structure of models (data), views (presentation, template files), and controllers (handling routing/requests), as well as configuration files. Most often makes database connectivity and other things a bit simpler than it would be from scratch.

Rails is a web application framework built on Ruby. Rails promotes a certain way of doing things, “convention over configuration”, to make things easy and productive, getting things working as quickly and smoothly as possible. You really don’t need a framework but most of the time it does make things easier/faster.

There are many, many frameworks for PHP as well, such as CodeIgniter, Symfony, Zend etc. Lately I’ve been using Sinatra, another Ruby framework. Django is a popular framework for the Python language. Again, it comes down to what’s the best tool for the job, and your personal preference. Try them out, see how they feel.

Sometimes you may way to go “further” and use a complete CMS (or ecommerce platform perhaps) instead of a framework, if you know that the CMS really suits current and future needs. Instead of giving you a framework for coding your site with, a CMS will provide you with a complete administrative interface for managing content. Look at Drupal and WordPress for example—they’re pretty capable.

Client-side scripting
You mentioned AJAX. It’s just asynchronous Javascript, loading content or doing other stuff without having to reload the page. There is a whole bunch of frameworks that will make this easier for you as well, especially since different browsers will treat your Javascript slightly different. Frameworks such as jQuery, Prototype.js and Mootools will get you closer to browser-independence.

CoffeeScript (“a language that compiles into JS”) is becoming quite popular these days in the Ruby community, I suggest checking it out. But I do suggest to also have a good understanding of traditional Javascript.

Well, you mentioned MySQL which is probably the most popular choice so that’s what I would recommend—simple to learn, easy to find documentation for, can quickly get help if needed etc. I’ve dealt a lot with SQLite lately, which is very comfortable and simple since the database is stored in a file on the filesystem. Many people say it’s not production ready yet and that MySQL or similar should be used in production environment, but for smaller sites I believe it works quite well.

As mentioned, phpMyAdmin is a web interface for managing MySQL databases. Can be convenient to have sometimes but I do prefer to use native applications like Navicat to connect to databases to edit or view data during development. Wouldn’t worry about XML right now. XAMPP is a software stack for Windows that will provide you with an Apache web server, a MySQL database server, PHP and Perl—what you need to start developing with PHP or Perl on localhost (instead of uploading your files to a server). Also comes with phpMyAdmin if I recall correctly.

Once again, it’s simply about choices. I’d suggest first to decide which language you want to focus on, learn it and learn how to work with databases using that language and SQL. That would give you a pretty solid foundation of knowledge. Then I’d suggest you think about what you should work more on; perhaps client-side scripting, HTML(5?), deeper into CSS, or whatever you feel could be useful to learn more about.

One step and one book or tutorial at the time and you’ll get there soon. :wink:

Yes, books, I recommend reading books! Be a bit critical though—there are some books with pretty poor code examples in them. Check reviews before you start reading. :slight_smile:

Good luck, and we are of course here to help in case you want to ask something.