Intendi while($j<$i)
lì.
Ricorda, hai incrementato $i dopo l'ultimo inserto. Ciò significa che $i sarà maggiore della chiave massima di $dish.
Alcuni pensieri:
Ogni volta che stai verificando l'uguaglianza con null, dovresti considerare l'utilizzo di is_null
(o !è_null). È più preciso.
Questo:
$dish[$i]=$row['dishes'];
$i++;
Sarebbe meglio come:
// obviously instead of $i you would use count($dish) later (or use foreach)
$dish[]=$row['dishes'];
Quell'ultimo ciclo while sarebbe meglio come foreach:
foreach($dish as $val)
{
echo $val;
}