Pro vaší firmu: 3 krát stejné super tel.číslo 506 506 (vhodné pro vaše zamestnance, kolegy, rodinu atp.) NEVÁHEJTE, nebude....
Zobrazují se odpovědi 1 až 13 z 13

Načtení stavu PHP + Ajax

  1. bartama Hodnocení: 9 (76%) bartama je na dobré cestě
    1
    Zdravím,
    hledám nějakou možnost sladění Ajaxu a PHP, abych byl schopný tohoto:

    Uživatel má na stránce vypsaný počet vzkazů, potřebuji ale aby se právě pomocí Ajaxu vždy třeba po 10-ti sekundách zavolal script, který pro aktuálního uživatele zjistí počet vzkazů a ty vypíše. Ajax by je každých 10 sekund zpracoval a vypsal. Uživatel by tak měl aktuální informaci o tom kolik má vzkazů.

    Napadá Vás něco? Je to vlastně jednoduché zavolání scriptu PHP s nějakými parametry GET pro identifikaci daného uživatele.

    Díky za pomoc.

  2. Co se právě děje na Webtrhu?
  3. P-ierre Hodnocení: 17 (100%) P-ierre bude brzy slavný/á
    2
    pocet_vzkazu.php:
    Kód:
    <?php
    echo "Máš ".mysql_num_rows(mysql_query("SELECT id FROM vzkazy WHERE neprecteny = 1 AND id_uzivatel = ".$_SESSION["id_uzivatel"]))." nepřečtených vzkazů.";
    ?>
    zobraz_pocet.php
    Kód:
    ...
    <div id="informace"></div>
    ...
    function aktualizuj()
    {
      $("#informace").load("./pocet_vzkazu.php");
    }
    aktualizuj();
    window.setTimeout(aktualizuj(), 10000);
    ...
    Není to ošetřené na různé XSS vstupy, ale řešení v tom snad je vidět.

    //edit: upravil jsem původní kód z GET na SESSION, aby se ID uživatele předávalo jen na serveru

  4. bartama Hodnocení: 9 (76%) bartama je na dobré cestě
    3
    Super, šlo mi hlavně o ten JS (Ajax) protože ten neumím. V PHP si to už ošetřím, díky za posunutí, jdu to zkusit.

    ---------- Příspěvek doplněn 08.05.2012 v 14:17 ----------

    Tak jsem to zkusil, PHP script normálně vypisuje číslo nepřečtených vzkazů. JS s ním ale asi nespolupracuje.

    Kód:
      <script type="text/javascript">
                  function aktualizuj()
    {
      $("#informace").load("pocet_vzkazu.php?user=<?php echo $_SESSION['nick']; ?>&key=<?php echo $key; ?>");
    }
    aktualizuj();
    window.setTimeout(aktualizuj(), 5000);
                                          </script>
                                          
                                          <div id="informace"></div>
    -> kód PHP je ve stejném adresáři

    U JS by tímto způsobem ty parametry v GET snad vadit neměli ne?

    Díky.

  5. Nějaké bližší info z běhu toho skriptu? Jquery do stránky vložené máte? (bez něj tento skript fungovat nebude)

  6. bartama Hodnocení: 9 (76%) bartama je na dobré cestě
    5
    Jquery vloženo přímo z webu Jquery - http://code.jquery.com/jquery-1.7.2.min.js

    Jinak ten script v PHP prostě jen vyhledáte podle těch dat v GET o koho se jedná a vypíše z DB kolik má uživatel zpráv. Nefunguje to ale ani když je tam jenom echo a nějaké číslo, takže na straně toho PHP scriptu to nebude.

  7. Chtělo by to použít nějakou debug konzoli, ta prozradí, kde je problém :) Ale jinak
    Kód:
    window.setTimeout("aktualizuj()", 5000);
    takto by to mohlo být lepší :)

  8. bartama Hodnocení: 9 (76%) bartama je na dobré cestě
    7
    Už jsem na to přišel,
    stačilo ten div umístit nad ten JavaScript a začlo to fungovat...

    Díky za pomoc všem :)

  9. Pro budoucí čtenáře:

    Abyste kód jQuery oddělili od pořadí načítání HTML a mohli ho například načítat z externího souboru, obalte ho celý v pomocné funkci
    Kód:
    $(function() {
        // code
    });
    což je zkratka pro
    Kód:
    $(document).ready(function() {
        // code
    });
    setTimeout() přijímá jako první argument buď funkci nebo řetězec s kódem.
    Viz https://developer.mozilla.org/en/DOM/window.setTimeout
    Preferovaná je první varianta.
    Kód:
    function refresh() {};
    setTimeout(refresh, 1000);
    setTimeout('refresh()', 1000);

  10. node Hodnocení: 1 (100%) node je na dobré cestě
    9
    Myslim ze kod treba pisat do
    Kód:
    (function($){
      // kod
    })(jQuery)

  11. To je něco jiného - funkce, kterou uvádíš, se zavolá okamžitě.
    Tento zápis
    Kód:
    $(function() { });
    se zavolá po načtení DOMu.

  12. node Hodnocení: 1 (100%) node je na dobré cestě
    11
    Hm. Ja som bol v tom ze, ak sa nezavola kod hentak tak skript nebude poznat '$' a vrati chybu. Ja robim len s Drupalom a tam vzdy ked pisem novy javascript, tak to tak musi byt uvedene.

    Aj cudzie skripty/pluginy co som pozeral od tretich stran su vzdy v hentakom tvare, tak som to bral ako samozrejmu vec ze to tak plati vzdy a vsade. Bez toho by skript pochopil iba jQuery('#something').doSomething();

  13. To je pouze specialitka Drupalu, který automaticky nahrává jQuery s noConflict() a uvolňuje znak $ pro jiná použití.
    http://drupal.org/update/modules/6/7..._compatibility

    Takže ano, pro Drupal to je potřeba, všechny ostatní weby, pokud také nevolají .noConflict(); mají $() zdarma.

    Pro Drupal by ten zápis vypadal takto:

    Kód:
    (function($) {
        $(function() {
            // code
        });
    })(jQuery);
    A nebo prostě
    Kód:
    $ = jQuery;
    $(function() {
        // code
    });
    :)

  14. node Hodnocení: 1 (100%) node je na dobré cestě
    13
    Dik za objasnenie(noConflict()). V d6 sa pisalo tak ako pises ty, v d7 to zmenili aby nebol D. tak previazany iba s jQuery a bolo lahsie pouzit mootools extjs a pod.

Hostujeme u Server powered by TELE3