Masz na myśli while($j<$i)
tam.
Pamiętaj, że zwiększyłeś $i po ostatnia wstawka. Oznacza to, że $i będzie wyższe niż maksymalny klucz $dish.
Kilka myśli:
Za każdym razem, gdy testujesz równość z wartością null, powinieneś rozważyć użycie is_null
(lub! is_null). Jest dokładniejszy.
To:
$dish[$i]=$row['dishes'];
$i++;
Byłoby lepiej, gdyby:
// obviously instead of $i you would use count($dish) later (or use foreach)
$dish[]=$row['dishes'];
Ta ostatnia pętla while byłaby lepsza jako foreach:
foreach($dish as $val)
{
echo $val;
}