Autor Zpráva
tatyalien
Profil
Dobrý den,
používám tento index (tady trochu osekaný)
<?php
session_start();
require "./include/funkce_all.php";

// nyní si ošetřím vstup zadný od uživatele / linku (pro případný útok z venčí...)
$nactena_stranka = isset($_GET['clanek']) ? preg_replace('/[^a-z0-9_\\-]/i', '', $_GET['clanek']) : 'default';
if ($_GET["clanek"]=="prihlaseni") {
    Prihlaseni($_POST["prezdivka"], $_POST["heslo"]);
} elseif ($_GET["clanek"]=="odhlaseni") {
  // zde unsetnu sessiony (zde je to zkrácené)
    session_destroy();
}
// načtení části skriptu, pokud existuje
if (file_exists("scripts/$nactena_stranka.php")) {
    //sem muzes nacpat skript ktery neco provede a pak se v pripade potreby presmeruje jinam (aplikacni cast)
    require "scripts/$nactena_stranka.php";
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<head>
<title>
    Titulek...
</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<?PHP
// načtení css
echo "<link href='{$GLOBALS["CestaProOdkaz"]}/css/muj_styl.css' rel='stylesheet' type='text/css' />";
?>
<body>
<div id="zahlavi">
        <?php
        	if (isset($_SESSION["id"])) {
                	echo '<div class="menu">';
                        require "content/menu_horni.php";
                        echo '</div>';
            } else {
                echo "Menu se zobrazí po přihlášení uživatele.";
            }
        ?>
</div>


<div id="obal_obsahu">
	<div id="menu_leve">
		<?php require "content/menu_leve.php"; ?>
	</div>
	<div id="menu_prave">
		<?php require "content/menu_prave.php"; ?>
	</div>
	<div id="obsah_vnitrni">
            	<?php if($odhlaseni_na_tvrdo != '') echo '<tag class="error">'.$odhlaseni_na_tvrdo.'</tag>'; ?>
	    	<?php
            		// sem nacpes zobrazovaci cast stranky
                	require "content/$nactena_stranka.php";
            	?>
	</div>
        <div id="zapati"> <!-- zápatí -->
		bla bla
	</div> <!-- zápatí konec -->
</div>
</body>
</html>


Ale u déle trvajících operací se vždy čeká až se skript provede (načítá se nejdříve aplikační část skriptu). Na webu jsem si našel skript (byl i zde pár vláken zpět):

    echo "<div id='test'>Průběh: <span id='counter'></span>\n";
    $total = 20;
    $printed = 0;
    for ($i=0; $i < $total; $i++) {
        sleep(rand(0, 2)); // dlouhotrvající operace
        if (time() >= $printed + 3 || $i+1 == $total) { // aktualizace počítadla nejdříve za tři vteřiny
            echo "<script type='text/javascript'>document.getElementById('obsah_vnitrni').innerHTML = '" . round(100 * ($i+1) / $total) . "%';</script><noscript>.</noscript>\n";
            ob_flush();
            flush();
            $printed = time();
        }
    }


Mě zajímá, zda je nějak možnost načíst správně "layout" a zobrazovat načítání v procentech až v divu: obsah_vnitrni, to je hlavní div, kde vypisuji vše... Zkoušel jsem to i tak, že se mě načte prázdná stránka, ukazuji ukazatel, ale pak nemohu ani uložit výstup do sessionu a redirectnout zpět na stranáku a vypsat "údaje", protože už je výstpu z javascriptu...
Nox
Profil
však to tak máš, ne? akorát vyměň "obsah_vnitrni" za "counter" (a to echo v druhé části by mělo být na správnym místě)
tatyalien
Profil
Nox:

právě, že nemám... nyní se mě totiže nejdřív spustí "dlouhotrvající operace" (řádek 14-17). a až pak se mě začne natahovat stránka (layout) řádek 19...
Nox
Profil
tak to volej až pak
tatyalien
Profil
Nox:
No budu asi muset ;), dík za nakopnutí.

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:

0