As stated previosly, keeping the arcitecture as simple as required is a good thought process. There is no need to create some elaborate n-teir logical architecture for a 1 page web app that asks for your zip code and spits out the towns associated with it from the database.
...However with that being said, you could still frame up your application to have the 3 main layers in anticipation that the application may grow and allows you the developer to have an easily scallable design.
For example, 6 months down the road the person that asked you to make that simple page with the zip code entry liked it so much now that want to add GPS location, maps, phone number lookups, social networking tie-ins, regional statistics, graphs with calculations and more. If the app was designed with the main 3 layers (UI, BL, DAL) from the get-go you will have an easier time implementing the enhancments because the bones of the application will support it.
This is not to say that if you start with a 2-tier design it could not be re-engineered with the 3rd layer for your business logic in the future. A lot of times when designing an app you can anticipate with some degree of certantity if this is always going to be a really small simple functionality app or something that may grow.
Now to your original post about why you may need a business logic layer. From your original post and my simple zip code example site, you may just need validation at the UI to ensure that only a 5 digit zip code was entered (USA) and no letters or special charachters were entered (via AJAX filter, .js, server side code, whatever). Now say there was an odd new requirement that stated "Add 10 and subtract 10 in intervals of 1 from the zip code entered to get a total of 20 zip codes, which will represent most of the zip codes from the surrounding areas. Then using those 20 zip codes look up in the database statisics on population and present it back along with any telephone area codes belonging to those 20 zip codes".
Now while that may be an odd requirement, it is something more than you want to be decicding at the UI layer, and it requires more decision making and processing than just simply filtering and validating user input. In this case a Business Logic Layer could be helpful to separate this logic into its own layer to be presented back to the UI ultimately (this is the topic for an entire different conversation, many books have been written on how to design the business logic, and there are a ton of different ways to go about doing it.)
Hopefully this helps clarify your question 