The private bus was on its way to Moga from Ludhiana when the collision took place around 9.45 am, Deputy Commissioner Arshdeep Singh said.
Of the 31 injured, 29 were rushed to the local Civil Hospital and remaining two have been sent to the Civil Hospital at Jagraon, about 35 kms from here.
The Deputy Commissioner has announced free treatment for the injured.
The bodies are being brought to the local civil Hospital for postmortem, he added.