Autor Zpráva
michal.fiurasek
Profil
Zdravím, přes kód níže tahám z adresáře fotky a potřeboval bych je vyechovat do tabulky o 3 sloupcích, ale nevím jak, předpokládám, že to pujde nějak přes while nebo for, ale nevím jak, všechno co sem našel je na mysql, ale jak udělat tohle to nevím....
$dir = '/var/www/f4ki_gallery/img/large/'.$folder;
            
            if ($handle = opendir($dir)) {
                while ($file = readdir($handle)) {
                    $row[count($row)] = $file;
                }
                closedir($handle);
                sort($row);
            }
            reset($row);
            while (list($key, $val) = each($row)) {
                if ($val != '.' && $val != '..') {
                    if (is_dir($val)) {   
                    }
                }
            }
            reset($row);
            while (list($key, $val) = each($row)) {
                if ($val != '.' && $val != '..') {
                    if (!is_dir($val)) {
                        echo '<a href="../img/large/'.$folder.'/'.$val.'" title="'.$folder.' - '.$val.'" alt="'.$folder.' - '.$val.'" rel="'.$folder.'"><img src="../img/small/'.$folder.'/'.$val.'" /></a>';
                    }
                }
            }
díky...
Keeehi
Profil
Nejčastější potíže s PHP (FAQ) » Výpis výsledků z databáze (nebo z jiného zdroje) do tabulky o více sloupcích
michal.fiurasek
Profil
No nevím ... použil jsem ten kód, do tabulky to sice vypíše, ale místo toho aby to nasázelo 3 vypisy vedle sebe, tak to nasází všechny pod sebe a dva volné sloupce...
define ('COLS', 3);
            $dir = '/var/www/f4ki_gallery/img/large/'.$folder;
            
            if ($handle = opendir($dir)) {
                while ($file = readdir($handle)) {
                    $row[count($row)] = $file;
                }
                closedir($handle);
                sort($row);
            }
            reset($row);
            while (list($key, $val) = each($row)) {
                if ($val != '.' && $val != '..') {
                    if (is_dir($val)) {   
                    }
                }
            }
            reset($row);
            while (list($key, $val) = each($row)) {
                if ($val != '.' && $val != '..') {
                    if (!is_dir($val)) {
                        //echo '<a href="../img/large/'.$folder.'/'.$val.'" title="'.$folder.' - '.$val.'" alt="'.$folder.' - '.$val.'" rel="'.$folder.'"><img src="../img/small/'.$folder.'/'.$val.'" /></a>'; }
                       
                        for ($i=0; $i<1; $i++) {
                            if ($i%COLS == 0) {
                                echo "<tr>";
                                echo "<td>".$val."</td>";
                            } if ($i%COLS == COLS-1) {
                                echo "</tr>";
                            }
                        } if ($i != COLS-1) {
                            while ($i++ % COLS != 0) {
                                echo "<td>&nbsp;</td>";
                            }
                            echo "</tr>\n";
                        }
                    }
                }
            }
Keeehi
Profil
To je proto, že jsi naprosto nepochopil, jak ten kód funguje.

define ('COLS', 3);
$dir = '/var/www/f4ki_gallery/img/large/'.$folder;
$content = scandir($dir);

$i=0;
foreach ($content as $file) {
    if (is_file($file)) {
        if ($i%COLS == 0) {
            echo "<tr>";
        }

        echo "<td><a href=\"../img/large/$folder/$file\" title=\"$folder - $file\" alt=\"$folder - $file\" rel=\"$folder\"><img src=\"../img/small/$folder/$file\" /></a></td>";

        if ($i%COLS == COLS-1) {
            echo "</tr>\n";
        }

        $i++;
    }
}

if ($i != COLS-1) {
    while ($i++ % COLS != 0) {
        echo "<td>&nbsp;</td>";
    }
    echo "</tr>\n";
}
michal.fiurasek
Profil
to je asi pravda, ale to je tím, že sem nikdy se soubory v php nepracoval, kdykoliv předtím jsem všechno tahal přes mysql...
díky za ochotu...
michal.fiurasek
Profil
Tak jo, trochu jsem zapřemýšlel a dal jsem dohromady toto, ale i tak nevím kde mám chybu, tam bude asi jenom nějaká blbost, avšak když kód spustím tak místo toho aby to vypsalo 5 souborů do 3 sloupců tak to vypíše 5 souboru do každého ze tří sloupců - každý sloupec má 5 řádků... sem asi blbý, ale nevím prostě...
        define("cols", 3);
        $dir = '/var/www/f4ki_gallery/img/large/Album';
         
            if ($handle = opendir($dir)) {
                while ($file = readdir($handle)) {
                    $row[count($row)] = $file;
                }
                closedir($handle);
                sort($row);
            }
            reset($row);
                while (list($key, $file) = each($row)) {
                    if ($file != '.' && $file != '..') {
                        if (!is_dir($file)) {
                            
                            for ($i = 0; $i < cols; $i++) {
                                if ($i%cols == 0) echo "<tr>";
                                echo "<td>".($i+1).". ".$file."</td>";
                                if ($i%cols == cols-1) echo "</tr>";
                            }
                            if ($i != cols-1) {
                                while ($i++%cols != 0) {
                                    echo "<td> </td>";
                                }
                                echo "<tr>";
                            }
                        }        
                    }   
            }
Ugo
Profil
Keeehi:
chytrej kód, tohle by mě nenapadlo :)

michal.fiurasek:
ta konstanta malýma mě úplně ničí. Všimni si že máš o cyklus víc než Keeehi. A špatně pracuješ s $i, mimoto bych zůstal u scandir, je s ním ta práce přecijen lehčí a tedy i přehlednější.

Trik v tom kódu je, že uděláš nekompletní tabulku kterou potom doplňíš, tedy pro každý záznam jen jeden průchod a zaznamenat si jej ($i++)
michal.fiurasek
Profil
Ugo:
Dobře mám se ještě hodně co učit, asi jsem pochopil kde jsou chyby...

Keeehi:
Děkuji za ukázku kódu funguje pěkně, jenom nevím proč když tam je if (is_file($file)) {... tak to nefunguje, ale i když tam dám if (!is_dir($file)) {.. tak to funguje, ve složce jsou obrázky...

Nicméně i tak díky oběma...

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: