Check out DrupalEasy around the web:
DrupalEasy is the collective expertise of Ryan Price and Michael Anello, who joined forces to provide training and consulting services worldwide. Read all about them and what they can do.
Drupal is a free, super-powerful content management system for sites that require information posting and collection, including blogs, forums, videos, photos, and databases of information. We think it is the best platform available. Here's why...
More and more savvy organizations are going with Drupal for content management, and its no mystery why. It’s free, flexible, and easy to maintain for small or large volume sites. Learn more...
If you've ever done any Drupal module development, then you've probably run across the node_save() function. This little beauty is the equivalent of the "submit" button on a node form. If you know anything about module development, you know that any module can tap into the "node save" process via hook_nodeapi(). By manually creating a node in code an saving it to the database with node_save(), you allow all the other modules on your site the opportunity to add their magic to your new node.
One important thing to note, however, is that when you create your node programatically, you don't always automatically get the default settings for your node as set up in your content type definition. I saw this recently when trying to update a node programatically (again, using node_save()). Since I had set up the content type with the "Create new revision" box checked, I assumed that each time I called node_save() from my custom module, I'd get a new revision. Not so. In order to get the new revision to save, I had to add
$node->revision = 1;
right before the call to node_save().
So, the lesson here is that even though some things are set as "default" in the content type definition, sometimes you'll have to set them explicitly when doing things programatically.