India qualified for the ICC World Cup semi-finals, and knocked Bangladesh out of the tournament, with a 28 run win at Edgbaston.