[eluser]gtech[/eluser]
Hello,
The answer is No, you do not need a controller for every page, each function within the controller will serve a valid URL (so each function in the controller
can serve a webpage).
Also you can pass parameters to these functions (by adding to the url), which could serve different content to your web-browser depending on the values you pass in. This is because a controller function can load 1 or many views (the bit that displays the HTML), based on the logic you provide. Also values can be read out of a database by calling a model in your controller, which you can also use to alter the html in the view by passing data to it (a view can contain php logic).
I would describe a controller as a class that you can group webpages together.
Maybee you should read through the documentation and follow the examples it wont take to long, and its silly me repeating the documentation:
[url="http://ellislab.com/codeigniter/user-guide/general/controllers.html"]controllers (click here)[/url]
[url="http://ellislab.com/codeigniter/user-guide/general/views.html"]views (click here)[/url]
[url="http://ellislab.com/codeigniter/user-guide/general/models.html"]models (click here)[/url]
if you read all of these you should get a clear understanding of how you can build webpages, and the different ways you can achieve what you want.