Zdravím, potřeboval bych poradit s jedním algoritmem, se kterým si už pár dní lámu hlavu.
V jednotlivych sloupcich tabulky tridni_schuzky musí být hodnota třídy obsažena vždy jen jednou, přičemž když je tam víckrát, tak se může vyměnit s hodnotou z jiného pole na stejném indexu. To se provede tolikrát, dokud nebudou hodnoty ve vsech polich ($hodina1-6) jen jednou. Nevím jak to jednodušeji popsat, proto přikládám můj současný stav:
for($i='0'; $i<=$pocetUcitelu; $i++){
$dotaz2 = $mysql2->query("SELECT prvni, druha, treti, ctvrta, pata, sesta FROM tridni_schuzky");
while($vypis = $dotaz2->fetch_assoc()){
$hodina1[] = $vypis['prvni'];
$hodina2[] = $vypis['druha'];
$hodina3[] = $vypis['treti'];
$hodina4[] = $vypis['ctvrta'];
$hodina5[] = $vypis['pata'];
$hodina6[] = $vypis['sesta'];
}
$obsah = array($hodina1, $hodina2, $hodina3, $hodina4, $hodina5, $hodina6);
for($hod = '0'; $hod <= '5'; $hod++){
for($radek='0'; $radek<$pocetUcitelu; $radek++){
$temp = $obsah[$hod][$radek]; //zrovna prochazejici radek
for ($x=($radek+'1'); $x<=pocetUcitelu; $x++){
if($temp == $obsah[$hod][$x]){ //je vickrat v jednom sloupci?
for($o='1'; $o<='5'; $o++){ //zjisti jestli muzu vymenit s jinym sloupcem a provede výměnu
$jeVdalsimPoli = array_search($temp,$obsah[$hod+$o]);
$jeVtomhlePoli = array_search($obsah[$hod+$o][$radek], $obsah[$o]);
if((!isset($jeVdalsimPoli))&&!isset($jeVtomhlePoli)){//kdyz je volno v obou tak prehodi, kdyz ne tak prehodi az v dalsim sloupci
$temp1 = $obsah[$hod][$radek];
$obsah[$hod][$radek]=$obsah[$hod+$o][$radek];
$obsah[$hod+$o][$radek]=$temp1;
}
unset($jeVtomhlePoli);
$jeVpredeslymPoli = array_search($temp,$obsah[$hod-$o]);
$jeVtomhlePoli = array_search($obsah[$hod-$o][$radek], $obsah[$o]);
if(!isset($jeVpredeslymPoli)){
$temp1 = $obsah[$hod][$radek];
$obsah[$hod][$radek]=$obsah[$hod-$o][$radek];
$obsah[$hod-$o][$radek]=$temp1;
}
unset($jeVdalsimPoli, $jeVpredeslymPoli, $jeVtomhlePoli);
}
unset($temp);
}
}
$mysql2->query("UPDATE tridni_schuzky SET ".$nazevSloupce[$hod]."=".$obsah[$hod][$i]." WHERE (idr='".($i+1)."') ");
}
}
unset($hodina1, $hodina2, $hodina3, $hodina4, $hodina5, $hodina6);
}