In keeping with your "old school" pattern, what you need to do first is create an endpoint that is called in the new tab that displays what you want. You'd have to have some form of persistence on the backend server so that it knows what values to display. So the flow looks like this:
- Visitor arrives to form and establishes a "session"
- User submits form to "action" URL
- "action" URL accepts request, saves response to the database; updates the "session" with an identifier
- the "session" id is communicated via the request
- secondary endpoint uses session to select what response data needs to be displayed
- output table is generated and response is sent to the browser
OTOT, the "modern" approach would be to do effectively the same thing; but all in the same window and using an API call that returns structure data of what should be rendered after "submit" and some JS/CSS magick. You could also do effectively the same thing by skipping the secondary call and just using what was entered into the form as the source of the final view.