Ahoj, chtěl bych se zeptat jeslti by mi někdo neporadil jak by se dal udělat v php automatické přidávání nějakého html kodu v čas. např. každou půlhodinu by se přidal kod <p>lorem ipsum<p>. Nějaký nápad jak by to šlo udělat?. Napadlo mě udělat smyčku která by se nějak prováděla co 30 minut ale nevím jak. Php moc neumím. Díky za rady
Fórum › PHP
PHP automatické přidávání html kodu
Chceš aby se v otevřené stránce v prohlížeči přidalo něco každou půlhodinu nebo chceš, aby uživatel, který si stránku načte o půlhodinu později, viděl o něco víc? Pokud chceš aktualizovat stránku, kterou má někdo otevřenou v prohlížeči, budeš muset použít Javascript a setInterval(). Pokud chceš, aby se ta stránka změnila jen při načtení webu, tak by sis v PHP musel vyčíst aktuální čas jako UNIX timestamp, mít tam svoji nějakou konstantu, která by řídila, odkdy začínají ty půlhodinové updaty a dopočítat si rozdíl.
#2 Doomista
No našel jsem si že jde obnovovat jen content na stránce.
Tento kod mam v <head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/
libs/jquery/1.3.0/jquery.min.js"></script>
<script type="text/javascript">
var auto_refresh = setInterval(
function ()
{
$('.content').load('index.php').fadeIn("slow");
}, 10000); // refresh every 10000 milliseconds
</script>
Content se obnoví, ale jen jednou a pak mi obsah stránky zmizí a už se nenačte jen když zmáčknu f5. Nevím proč :/
#3 Jandak
Nenačte se ani když počkáš 10 sekund? Mám trochu podezření, že index.php, který pomocí setInterval načítáš, tak v sobě má i kód, který jsi zde uvedl. Já si ten kód dal do souboru index.html a načítal pomocí něho data.php, po prvních 10 vteřin jsem měl prázdnou stránku a pak se tam obsah data.php v pořádku nahrál.
Mimochodem content by měl být id, nikoliv class a na id se odkazuje pomocí #.
#5 Jandak
Jde to, ale to neznamená, že se to tak má dělat. Class slouží k označení více prvků, které mají něco společného, především tedy css styl. Id se používá k označení prvků, které jsou něčím unikátní - například prvek, do kterého chceš nahrávat nějaká data.
Za druhé - ve webových technologiích je v současnosti velice populární návrhový vzor MVC - Model View Controller. Ten spočívá v tom, že máš něco, co ti data zobrazuje (View), něco co s nimi manipuluje (Controller) a něco, co je poskytuje (Model). V tvém případě by to mělo vypadat tak, že budeš mít index.html, který bude tím View - budeš v něm mít nějaký doctype, head, body a uvnitř body budeš mít třeba div s id="content". Pak budeš mít javascript kód - to bude tvůj controller. Nemusí být nutně v separátním .js souboru, ale časem, až se ti aplikace rozroste, tak si to do separátního souboru určitě rád dáš. Javascript udělá to, že při načtení stránky (v Jquery je to myslím $ready nebo něco na ten způsob) si natáhneš data do content a zároveň zaregistruješ svůj setInterval. Nakonec pak budeš mít někde data.php a v něm budeš mít natahovaný obsah. Základní kostra kódu by mohla vypadat takto:
index.html (nikdy jsem se nenaučil Jquery, takže místo $ready používám nativní onload event):
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.0/jquery.min.js"></script>
<script type="text/javascript">
var auto_refresh;
function getData() {
$('#content').load('data.php');
}
function initApp() {
getData();
auto_refresh = setInterval( getData, 10000);
}
</script>
</head>
<body onload="initApp()">
<div id="content">
</div>
</body>
</html>
data.php:
<h1>Hello world</h1>
<p>Lorem ipsum dolor sit amet.</p>
Když uděláš tohle, tak stačí mít v prohlížeči otevřený index.html a pokud změníš cokoliv v data.php, tak se ti to nejpozději po deseti sekundách zaktualizuje i v prohlížeči.
Pochopitelně tuto odpověď dost zjednodušuju, protože v reálném prostředí by ti data.php mělo vracet raději JSON objekt, a controller by byl zodpovědný za generování html markupu. To ale dost složité a bez frameworku typu angular je to i na zastřelení. Tobě bude bohatě stačit to, co jsem zde uvedl.
Jj, id je pro unikatni prvek, obvykle pro js. Obcas tam pridavam do nazvu js, abych vedel, ze se pouziva v js. Class pouzivam jen pro css. Vyjimecne v js pouzivam vybirani i podle class. Nekdy se to hodi. Ale snazim se, aby nad tim byl prvek s id.
Urcite, kdyz funkci pouzivas opakovane, treba pro ten autorefresh, tak je dobre ji dat zvlast do funkce, viz Doomista, treba getData. Pripadne ji pojmenovat vic inteligentne nebo uzavrit do objektu.
chat = {};
chat.dataFromUrl = function (url) {...}
chat.refresh = function() {chat.dataFromUrl('text.php'); chat.dataFromUrl('lide.php'); chat.dataFromUrl('mistnosti.php');}
chat.refresh_time = 10000;
var auto_refresh = setInterval( chat.refresh, chat.refresh_time);
To auto_refresh je tam dulezite pro clearInterval, kdybys to chtel prerusit. Coz je treba v pripade, ze chces zmenit refresh time nebo u chatovani odesles zpravu (tehdy potrebujes, aby odpocet zacal od zacatku).
#9 peter
Podle id běžně pozicuji v CSS. Naopak v JS mohu chtít měnit styl zobrazení podle class a nemusí nad tím být žádné id.
Prostě class označuje třídu a id označuje objekt. Rozdíl je snad zřejmý.
Ja prave id do css nerad cpu. Proste, idkyz ma objekt id, tak mu pridelim class, kdyz chci styly. Id mam vyhradne pro js. V js se snazim zas vyhybat classum jako objekty. Vdycky mam jako prvni nejaky id objekt az pak je pod nim neco s class. Treba #list_clanky, .clanek, .clanek_nadpis
#11 peter
Tohle je asi dost věc názoru. Osobně používám ID i pro odlišení znovupoužitelných stylů od těch jednorázových. Jedna věc je stylovat odstavec a druhá věc je stylovat třeba sidebar, který se mi v rámci jednoho dokumentu určitě víckrát objevit nesmí.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Automatické přidávání příspěvku — založil Martin JOneš
PHP generuje JS -> přímo v html kódu — založil ETNyx
Automatické přidávání příspěvků na zeď FB stránky — založil Leinad
Automatické načítání proměných z HTML do JS — založil Pavelv
Automaticke generovanie kodu vo Visual Studiu — založil Jan
Moderátoři diskuze