Well, I think neither of you is correct. :-)
#1: Define the business objectives and ensure that EVERYONE signs off and is 100% clear about them.
#2. Rough out the user interface -- on a whiteboard, not in code -- in order to define how you want the application to behave (not look and feel).
#3. Analyze the data that will be required to support #2, and define the data model.
#4. Define how the UI will interact with the data model.
#5. NOW you can write code. It doesn't make any difference whether you work on the data i/o portion first or the application-behavior layer, because you're working toward a clearly predefined target. It DOES make a difference whether you entangle functionality in presentation, however -- don't do it. The absolute top level should be so relatively free of PHP that any HTML coder should be able to read and maintain it for look and feel updates.
My USD .02/EUR .02338, anyway.