Myslíte while($j<$i)
tam.
Pamatujte, že jste po zvýšili $i poslední vložka. To znamená, že $i bude vyšší než maximální klíč $dish.
Některé myšlenky:
Kdykoli testujete rovnost s hodnotou null, měli byste zvážit použití is_null
(nebo !is_null). Je přesnější.
Toto:
$dish[$i]=$row['dishes'];
$i++;
Bylo by lepší jako:
// obviously instead of $i you would use count($dish) later (or use foreach)
$dish[]=$row['dishes'];
Tato závěrečná smyčka while by byla lepší jako foreach:
foreach($dish as $val)
{
echo $val;
}