Jsou dva hlavní problémy, kvůli kterým nemůže tenhle kód být funkční. Zaprvé nastavuješ port na minimální hranici jen poprvé před začátkem cyklů. To znamená, že jakmile $port projde for cyklem bude mít hodnotu {$max_port+1} takže příští průchod for cyklem se provede nul-krát. Měl bys proto nastavovat port pokaždé ve for-cyklu - tedy před prvním středníkem v závorce by mělo být $port=$min_port . Tím by jsi ten kód ale zaručeně neopravil, protože je tu jedna další a závažnější chyba. Ty totiž potřebuješ, aby se nezobrazovaly právě ty porty, které nejsou obsaženy v databázové tabulce. V současném stavu by ale kód prošel pro každý port v tabulce všechny porty od minima do maxima a nevypsal by vždy jen jediný, který je právě vybraný. Pro jednodušší vysvětlení předpokládejme, že databáze obsahuje tyto porty: 4 a 10 . Minimální port dejme jako 1 a maximální jako 11. Tedy pro první průchod while cyklem máme v proměnné $výsledok pole, které má na indexu "port" hodnotu 4. Pak se projde for-cyklem a vypíšou se hodnoty 1,2,3,(tady se zjistí, že port je 4, takže se nevypíše),5,6,7,8,9,10,11. to ale není konec, protože skončí for-cyklus a skončí první průchod while-cyklem. Ten znovu načte do $vysledok pole s portem 10, který je v databázi a začíná nový for-cyklus. Tady tvůj kód skončí, protože by byl $port == $max_port+1, ale pokud by byla aplikována oprava z prvního problému, který jsem uvedl, tak by se vypsala čísla: 1,2,3,4,5,6,7,8,9,(10 se nevypíše - v proměnné $vysledok["port"]),11. Tzn. by výsledek byl 1,2,3,5,6,7,8,9,10,11,1,2,3,4,5,6,7,8,9,11. To ty právě nechceš.Pokus se tedy porty při výběru z databáze seřadit a pak při vypisování vždy jen čekat, dokud nebude port roven $vysledok["port"], daný port nevypsat a znovu naplnit pole $vysledok. Tím by měl být porblém vyřešen.