There are MANY theories on how to handle this... and to be honest, your own experience will be the only true guide for which to do in any given situation.
As to how I generally approach this type of request (a database driven site with content management) I believe there are several key elements.
- 1. Template Based Public Section
2. Administration Section (for content management)
3. Normalized Database Design
In your case, depending on whether you need archiving or not, you will need to be careful of your DB design. All of your articles, ads, images, etc. can fill things up and slow things down fairly quickly (matter of months, or years depending on your design and the amount of content you wish to store).
Your templates should contain a simple element that you can parse out using reg-exp searches. The element should provide enough information for your parser to retrieve (or at least select from a preselected set of data) the correct data being sought. Thus, if you have everything tagged by an id, your element that you parse could be something as simple as #123112# That is easy enough to search for.
Finally you need an Administration section that will provide you, or who ever will manage the site, a simple form-based interface to the content on the site. Depending on the needs of the system, this could include the ability to lookup historical issues and alter text, backup information, import, or upload graphics, etc. You decide based on your needs. The main thing this area will do is provide a way to enter the content into the db, safely (meaning you insure the integrity of the data rather than just tell them to type it into the console... or whatever GUI you are using).
That is generally the basics. Things like security, access levels, hidden and published pages, rotating ad graphics, etc. are all extras and can be talked about later.
Good luck!