logický oříšekvčera večer jsem si zkoušel tuto úlohu:
Máme xy prvků v poli
prvky máme vykresit do obecné tabulky
N... počet sloupců
P... počet polí celé tabulky
Tabulku vždy dopočítat a prázdná pole doplnit, aby tabulka byla vykreslená celá
Trochu jsem to řešil kostrbatě, pomocí cyklů for a podmínek if/else
Došel jsem k řešení které funguje dobře pro mou potřebu, ale asi není naprosto univerzání na jakýkoliv rozměr tabulky
<?php
$page_set = 24; // počet záznamů na stránku - vybrat číslo dělitelné počtem sloupců !!
$t = '<table border=1>';
$i = 0;
$k = 8; // počet sloupců v tabulce galerie
$vysl = array('a','b','c','d','e','f','g','h','i','j','k','l','m'); // jakékoliv pole s X prvky
// cyklus vykreslí tabulky dle počtu prvků v poli $vysl
//******************************************************
while (list($field) = each($vysl)) {
$j = $i % $k; // binarni nasobeni $k (3)
if ($j==0) {$t .= '<tr>';}
$t.='<td>'.$field.'</td>';
if ($j==$k) {$t .= '</tr>';}
$i++; }
//vypočet pomocných proměnných
//*****************************************
$ik = $i % $k;
$ir = ceil(($i / $page_set)*($k-1));
$b = floor(($page_set - $i) / $k);
$c = $page_set / $k;
$d1 = ($page_set / $c)*1;
$d2 = ($page_set / $c)*2;
$d3 = ($page_set / $c)*3;
$d4 = ($page_set / $c)*4;
//dopočítání vykreslení tabulky tak aby žádné zbývající pole nebylo prázdné
//************************************************************************
if ($i <> 0){
if ($i < $page_set){
if (($i <> $d1) and ($i <> $d2) and ($i <> $d3) and ($i <> $d4)){
for ($w=($ik+1); $w<=$k; $w++) {$t.='<td>O</td>';}}
$t .= '</tr>';
if ($ir <= $c){
for ($s = 1; $s <= $b; $s++) {
for ($ww=1; $ww<=$k; $ww++) {$t.='<td>X</td>';}
$t .= '</tr>'; } }
else {
for ($s = 1; $s <= $b; $s++) {
for ($ww=1; $ww<=$k; $ww++) {$t.='<td>H</td>';}
$t .= '</tr>'; } }
} }
else {
for ($s = 1; $s <= $b; $s++) {
for ($ww=1; $ww<=$k; $ww++) {$t.='<td>H</td>';}
$t .= '</tr>'; } }
// uzavření tabulky
//*********************
$t .= '</table>';
echo $t;
?>
Zajímalo by mě jak se tato úoha řeší sofistikovaně (jistě je toto obecnější úloha, která je čas od času potřebná při vykreslování neúplných tabulek).
Případně nějaký odkaz na možná řešení tohoto problému.
Doufám, že jste uvítali to, že jsem s tím večer neotravoval, ale poctivě jsem se to snažil řešit bez googlování po scriptech.
...
No, výsledek tomu asi odpovídá, mě se to moje řešení taky moc nelíbí, ale funguje pro skoro všechna zadání ...
:-)
Děkuji předem za trpělivost |