Autor Zpráva
Jcas
Profil *
Poprosím radu laikovi. Jedna stránka nekonečně zatíží prohlížeč.
I když script vkládám do prostřed index.php, část se zpracuje až za patičkou - absolutně nechápu.
Zatím je předmětů málo, tak chci na první stránce zobrazit vše a podadresáře udělají selekci.
Časem na první stránce zobrazím pouze vybrané, nebo náhodné.

Asi je pravda, že to je od začátku špatná architektura, ale co čekat od laika.
/eshop/podadr/fotky
Každá fotka má jeden soubor.csv, kde jsou informace(cena popis atd.)

<?php
//FUNKCE NA NEčTENí INFO O OBRáZKU
function ZiskejInfo($soubor) {
    if(file_exists($soubor)) {
        $handle = fopen($soubor, "r");
        $contents = fread($handle, filesize($soubor));
        fclose($handle);
        return $contents;
        }
    }
//FUNKCE NA ZJIšTěNí DAT OBRáZKU (TYP, VELIKOST)
/*
$informace = getimagesize(`obr1.jpg`);
echo `Šířka obrázku je `,$informace[0],` pixelů.<br>`;
echo `Výška obrázku je `,$informace[1],` pixelů.<br>`;
echo `Formát obrázku je číslo `,$informace[2],`.`;
*/
function ZiskejData($soubor) {
    $data=getimagesize($soubor);
    return $data;
    }
?>

<!-- ------FUNKCE NA VYPIS ADRESARU------ 
projde adr "galerie" a kazdy pod-adr ulozi jako polozku do pole folder.
Nasledne zavola funkci pro zobrazeni adresaru -->


<?php
function ObsahSlozky($slozka, $co='dir') {                    //pri volani funkce predame adr. nasi "galerie"
    $folder = Array();
    $file = Array();                                    // zinicializujeme pole                                    
    $obsah = scandir($slozka);                        //[0]=., [1]=..,[2]=dir nebo file
    
    foreach($obsah as $key => $polozka) {        //prochazi pole - obsah adresáře $slozka
    if($polozka != "." && $polozka != ".."){    //vynechame tecky nadadresářů.
        if(is_dir($slozka."/".$polozka)) {
                $folder[] = $polozka;                            //ulozim do pole pouze adresare
            }
            else {
                $typ = ZiskejData($slozka.'/'.$polozka);
                if($typ[2]==2||$typ[2]==3) {$file[] = $polozka;}    //povoleno pouze jpeg a png
                } 
        }
        }
    //volání funkcí na zobrazení
    if($co=='dir') {ZobrazDir($folder);
        } else {ZobrazFile($slozka, $file);}
}

//-------FUNKCE NA ZOBRAZENI POD-ADRESARU (OBSAHU GALERIE)----------

?>
<div id="adresare"><table align='center'><tr>
<?php
function ZobrazDir($folder) {
    $celkem = count($folder);        //pocet adresaru (velikost pole)
    --$celkem;                            // protoze pole se pocita od 0, nastavim si celkovy pocet -1
    $pocet = 3;                            //POCET OBR NA RADKU. opet o -1 
    $prvek = 0;                            //zaciname prvkem pole[0]
    while($prvek < count($folder)) {    //cyklus, ktery projde vsechny prvky pole
    for($i=$prvek; $i<=$pocet && $i<=$celkem; ++$i) {        //cykl. který zobrazi na jednom radku obr. slozky
        echo "<td align='center' width='125'><a href='http://www.zocschmoravskebranice.eu/index.php?page=eshop&dir=".$folder[$i]."' ><img src='galerie_soubory/folder.gif' width='40' height='44' alt='folder' style='border: 0'/></a></td>";    
        if($i == $pocet || $i == $celkem) {
            echo '</tr><tr>';
            }
        }
    for($i=$prvek; $i<=$pocet && $i<=$celkem; ++$i) {        //cykl, ktery zobrazi na druhem radku jmeno adresare
        echo "<td align='center'>".$folder[$i]."</td>";    
        if($i == $pocet || $i == $celkem) {
            echo '</tr><tr>';
            }
        }
    $pocet += 4;
    $prvek += 4;
    }


echo '</tr></table></div>';    

foreach($folder as $poddir) {            //zobrazení náhledů na hl. stránce
    ObsahSlozky($_GET['page'].'/'.$poddir, 'file');        //voláme podadresáře a zobrazíme vše.
    }
}
//------FUNKCE NA ZOBRAZENI GALERIE-OBRAZKU--------

function ZobrazFile($slozka, $file) {
    
    $celkem = count($file);                            //pocet souboru (velikost pole)
    $pocet = 3;                                            //POCET OBR NA RADKU -1 kvůly polčítání od nuly.
    --$celkem;                                            // protoze pole se pocita od 0, nastavim si celkovy
    
echo '<div id="polozky"><table align="center"><tr>';
foreach($file as $key => $name) {                //procházení všech obrázků
    $soubor = $slozka.'/'.$name;                    //obrazek
    $jmeno = explode('.', $name);                    //odstranění koncovky souboru
    $soubor2 = $slozka.'/'.$jmeno[0].'.csv';    //soubor s info o obrázku
    $informace = ZiskejInfo($soubor2);            //Načte info k obrázku cena=informace[0]
    $rozmery = ZiskejData($soubor);                //$rozmery[0]-šířka, [1]-výška
    
    while($rozmery[0]>125||$rozmery[1]>100) {
        $rozmery[0] = $rozmery[0]/2;
        $rozmery[1] = $rozmery[1]/2;
        }
    

    
    echo '<td><p>
    <a href="eshop_detail.php?soubor='.$jmeno[0].'" target="_blank">
    <img src="'.$soubor.'" tilte="'.$name.'" alt="'.$name.'" width="'.$rozmery[0].'" height="'.$rozmery[1].'" />
    </a></p><strong>'.$informace[0].',- Kč</strong>
    <p>
    </p></td>';
        

    if($key==$celkem) {echo '</tr></teble></div>';
        } elseif ($key==$pocet) {
                echo '</tr><tr>'; $pocet = ($pocet+4);}        
        }
    }

    
//-------VOLANI FUNKCE------------


    
if(isset($_GET['dir'])) {        //zobrazení podadresáře
    ObsahSlozky($_GET['page']."/".$_GET['dir']);
    }
    else {                            //základní zobrazení
        ObsahSlozky($_GET['page']);
        }
?>



Jo a jak to funguje-nefunguje se můžete podívat na
www.zocschmoravskebranice.eu/index.php?page=eshop
Ugo
Profil
nepřipadá mi že by se skript cyklil, to zobrazení je podivný, rozhodně si oprav na ř. 116 "teble" => "table", teoreticky by to mohlo i pomoct
Joker
Profil
Jcas:
Jedna stránka nekonečně zatíží prohlížeč.
Pokud zatěžuje prohlížeč, nebude chyba v PHP.

Ale tady bych řekl, že se ta stránka prostě jen pomalu načítá z důvodu, že ty „malé“ obrázky jsou ve skutečnosti velké obrázky s nastavenými malými rozměry.
Zejména jeden z nich (ten poslední z tabulky), který sám o sobě má 1MB, což je skoro polovina velikosti celé stránky.
Kdyby se použily obrázky skutečně toho rozměru co je pak potřeba, zmenšil by se datový objem a tím i čas potřebný k načtení stránky na 1/4.
Lehce související, opravdu by ta podivná animace v hlavičce nešla nahradit normálním obrázkem na pozadí s textem přes něj?

Jinak na řádku 116 je překlep table-teble.
Jcas
Profil *
Tak ten překlep opravdu mohl za to podivné zobrazení.
Ale stejně je to celé blbě, protože kliknutí na podadresář se mají zobrazit pouze příslušné obr a ne znova zobrazovat adresáře. To je jedno-to se musí ještě pořádně doladit.
Každopádně děkuju.

Lehce související, opravdu by ta podivná animace v hlavičce nešla nahradit normálním obrázkem na pozadí s textem přes něj? - To jsem poprvé zvládl vytvořit v Gimpu animaci. Tak je to trochu potěšení nad svým výtvorem.

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: