no dostal som radu na programujte.com
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.
takze teraz ten kod vyzera takto:
<?php
require_once '../conf/db.php';
include "../conf/config.php";
$min_port = 1;
$max_port = 11;
$query = mysql_query("SELECT * FROM reg") or die (mysql_error());
?>
<select name="lol">
<?php
while($Vysledok = mysql_fetch_array($query))
{
for($port = $min_port;$port <= $max_port; $port++)
{
if($port != $Vysledok["port"])
{
?>
<option value="<?php echo "$port" ?>"><?php echo "$port" ?></option>
<?php
}
}
}
?>
</script>
a neviem vyriesit ten problem. teraz my to vypisuje 1,2,3,5,6,7,8,9,10,11,1,2,3,4,5,6,7,8,9,11