Имате предвид while($j<$i)
там.
Не забравяйте, че сте увеличили $i след последната вложка. Това означава, че $i ще бъде по-висок от максималния ключ на $dish.
Някои мисли:
Всеки път, когато тествате за равенство с null, трябва да помислите за използването на is_null
(или !is_null). По-точно е.
Това:
$dish[$i]=$row['dishes'];
$i++;
Би било по-добре като:
// obviously instead of $i you would use count($dish) later (or use foreach)
$dish[]=$row['dishes'];
Този последен while цикъл би бил по-добър като foreach:
foreach($dish as $val)
{
echo $val;
}