Autor Zpráva
Enngage
Profil
Ahoj,
předpokládejme, že mám klasické fórum s tématy. Uživatel je na stránce s výběrem témat. V tomhle okamžiku někdo jiný přidá příspěvěk do nějákého tématu. Mým cílem je tuto změnu zaznamenat a na stránce uživatele např. zvýraznit dané téma (dát najevo, že došlo ke změně) a to všechno bez potřeby aktualizovat stránku. Mohl by mě někdo prosím nasměrovat správným směrem, jak by se tohle dalo udělat? Stačí mě nasměrovat na správnou metodiku..:) Děkuji :)
Again
Profil
Začni studovat Ajax, pomocí kterého můžeš komunikovat se serverem prostřednictvím HTTP protokolu. Díky němu je možné posílat libovolné dotazy do databáze přes php, potom je následně na straně serveru zpracovat a odeslat zpět bez nutnosti znovu načítání stránky. Dole uvedu několik odkazů z českými & anglickými návody pro Ajax:

http://citron.blueboard.cz/clanek-239-ajax-navod-pro-zacatecniky.html
http://jquery-navod.cz/kategorie-ajax/9-ajax

http://www.ajaxtutorial.net
http://www.learn-ajax-tutorial.com/

K Ajaxu je vhodné také připojit Jquery, což je javascriptová knihovna a díky ní je spolupráce z Ajaxem o poznání lehčí ...
Chamurappi
Profil
Reaguji na Againa:
díky ní je spolupráce z Ajaxem o poznání lehčí
Vážně? V čem? Vždyť je to (v případě XMLHttpRequestu) jen tenký obal.
Vesměs všechny možné druhy chyb u AJAXu, které lidi dělají bez jQuery, dělají i s jQuery. S jQuery jich dělají víc, protože nevědí, co se přesně děje pod pokličkou.


Reaguji na Enngage:
1) Jsi si jistý, že tvé „klasické fórum“ utáhne výslednou zátěž? To, co chceš, vyžaduješ pravidelné dotazování na server. Pokud máš na fóru hodně lidí, kteří na té stránce s výběrem tráví dlouhé časy, mohlo by to být náročné.
2) Jsi si jistý, že to uživatelé chtějí?
SeparateSK
Profil
Myslím,že chceš niečo takéto:
Potrebuješ 2 súbory:
tam kde mas ten script.php
status.php
Ten súbor kde to chceš mať - toto upozornenie..., dáš toto:
<script type="text/javascript" language="JavaScript">
        var fsa=0;
        var fs=0;
        var start=0;
        var udalost=false;
        var url="status.php?id=<?php echo "$_GET[id]";?> "; //toto si upravis, aby to odkazovalo na status.php?forum=ID momentalneho fora
        function fsize(){
            var x;
            if (this.XMLHttpRequest)
                    {
                        x=new XMLHttpRequest();
                    }
                else
                    { 
                        x=new ActiveXObject("Microsoft.XMLHTTP");
                    }
                x.onreadystatechange=function()
                    {
                        if (x.readyState==4 && x.status==200)
                            {                
                                fsa=x.responseText; 
                                start+=1;
                                //if(start==1) volaka_funkcia_chatu();
                                if(fsa>fs) udalost=true; 
                                fs=x.responseText;
                            }
                    }    
                x.open("POST",url,true);
                x.send();
                if(udalost) {
                    alert("Niekto pridal nový príspevok");
                    udalost=false;
                }
        }
        setInterval(function(){fsize();},1000);
</script>
Tento súbor bude každú sekundu zistovať, či obsah status.php sa nezmenil.
A status.php:
<?php
  $q=mysql_query("SELECT * FROM fora_prispevky WHERE id=$_GET[id]");
  $pocet=mysql_num_rows($q);
  echo $pocet;
?>
Enngage
Profil
Takže, aby tohle mohlo fungovat, tak je potřeba se pravidelně dotazovat serveru? Chtěl jsem právě zjistit jestli je i jiná, méně naročnější, možnost. Jak potom funguji chaty? To je v podstatě stejný princip. Nebo zde je nějaké přímé spojení klienta s klientem?
Chamurappi
Profil
Reaguji na Enngage:
Jak potom funguji chaty?
Takhle.

jestli je i jiná, méně naročnější, možnost
Jiná — špatně podporovaná a na přípravu složitější — možnost existuje.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0