Autor Zpráva
piiiiiiiip
Profil
Potřebuju se zeptat jak v php mvc bez frameworku docílit pomocí ajaxu toho že když dostanu proměnnou z externí stránky tak se spustí script který odešle data do controlleru, který je odešle do modelu a model do databáze. Řeším to tak že pomocí setInterval aktualizuju php soubor s autoloaderem (abych se vyhnul php chybě že nelze najít controller), do kterého se vypisuje ta proměnná z externí stránky přez ten controller. Dál už ale nevím co s tím. Dokážu tu proměnnou vypsat ale už nevím jak ji zpracovat.
SomethingController.php
<?php
    class LikeController extends Controller
    {
        public function process($parametrs)
        {

                        //Script pro získání proměnné z externí stránky.
stranka.phtml:
<script>
$(document).ready(
    function() {
        setInterval(function() {
          $('#show').load('../meziclanek.php');
        }, 1000);
    }
);
</script>
<div id="show" class="show"></div>
mezičlánek.php
//autoloader
    $script = new SomethingController();
    $script->process(); 
?>
Radek9
Profil
piiiiiiiip:
Nesmíš použít jQuery.load, ale něco, co ti ten obsah předá. V jQuery je to např. funkce get:
$(function () {
  setInterval(function () {
    $.get('../meziclanek.php', function (data) {
      // Tady pracuj s obsahem proměnné data
    });
  }, 1000);
});
piiiiiiiip
Profil
To by mohlo fungovat. Jen mě ještě napadlo že by se mi ta aplikace zrychlila kdybych ten meziclanek.php, který je tam jen kvůly tomu aby mi to neházelo tu chybu odstranil protože mi to hrozně, hrozně, hrozně . . . zpomaluje. Někde jsem četl že by se dalo docílit toho co potřebuji (zbavit se tý php chyby a zpracovat proměnnou) pomocí JSON. V controlleru jsem tedy vytvořil JSON řetezec
                if(in_array($id, $pages)){
                    $test = array();
                    $test['ids'] = $id;
                    echo json_encode($test);

                }
Pokut získám id od té externí stránky, znamená to že uživatel něco udělal na mojí stránce a můžu provést sql dotaz. Aby ta aplikace byla užitečná tak se ten sql dotaz musí provést bez toho aby uživatel stránku aktualizoval, kde do hry vstoupí ajax a muj JSON string. Vzhledem k tomu že je to mvc musím ten string dekodovat v pohledu, v určitých intervalech ho aktualizovat a pokut dojde ke změně (myslím že se to dělá pomoci SUCCESS) vrátit zpět do kontroleru to id a od tamtut ho POSTnout do modelu (db). Zkoušel jsem to googlovat ale nenašel jsem nic co by mi pomohlo přijít nato jak ten JSON string v pohledu dekodovat a zpracovat. Je to tak vůbec možné, nebo praktické?
piiiiiiiip
Profil
Nevíte jak dostat JSON string z kontrolleru do pohledu?
piiiiiiiip
Profil
Radek9:
A jak dostanu tu proměnnou? Mi jí to nevypíše.
piiiiiiiip
Profil
Opravdu nikdo neví?
Keeehi
Profil
kontroler -> pohled
piiiiiiiip
Profil
Co to s tím má společného? Já potřebuju aby se mi to každou vteřinu zaktualizovalo - ajax . . .
Keeehi
Profil
Ve [#4] jsi se ptal, „jak dostat JSON string z kontrolleru do pohledu?“.
piiiiiiiip
Profil
Ano, Do JSON jsem encodoval array:
                if(in_array($id, $pages)){
                    $test = array();
                    $test['ids'] = $id;
                    echo json_encode($test);
 
                }
To je v controlleru. Controller nemůžu do pohledu loadnout pomocí jquery protože by mi to vypsalo chybu. Takže nějak potřebuju dostat to JSON test do pohledu kde se mi pomocí asi ajaxu kazdou vteřinu zaktualizuje abych zjistil jestly mi v tom array přibylo nějaké id a pokut ano tak se provede pár sql dotazů.
_es
Profil
piiiiiiiip:
Obávam sa, že si celkom nepochopil, kedy a na čom beží PHP a kedy a na čom JS: Základní kurz 15: Komunikace mezi PHP a JavaScriptem, Nejčastější potíže s PHP (FAQ) » Jak přenést proměnnou z javascriptu do PHP
JS môže odoslať dáta do meziclanek.php a meziclanek.php môže niečo spraviť na serveri a odoslať dáta späť do JS, ktoré JS nejako spracuje, napríklad podľa obdržaných dát zmení niečo na stránke zobrazenej v prehliadači klienta a pod. Na aké „kontrollery“ a „pohľady“ si rozčleníš PHP časť záleží na tebe a je neefektívne, aby ostatní tipovali ako (napr. [#7]). Mal by si dať zrozumiteľný dotaz, s čím ohľadom komunikácie medzi JS a meziclanek.php potrebuješ poradiť.
piiiiiiiip
Profil
piiiiiiiip:
Ano, Do JSON jsem encodoval array:
                if(in_array($id, $pages)){
                    $test = array();
                    $test['ids'] = $id;
                    echo json_encode($test);
 
                }
To je v controlleru. Controller nemůžu do pohledu loadnout pomocí jquery protože by mi to vypsalo chybu. Takže nějak potřebuju dostat to JSON test do pohledu kde se mi pomocí asi ajaxu kazdou vteřinu zaktualizuje abych zjistil jestly mi v tom array přibylo nějaké id a pokut ano tak se provede pár sql dotazů.



Mezi js a meziclanek.php žádná komunikace není. meziclanek.php mažu protože to jen příšerně zpomaluje a bude úplně k ničemu pokut JSON funguje tak jak si myslím že funguje.
TomášK
Profil
Zkus napsat, co je cílem - něco jako načíst status z facebooku a zobrazit ho uživateli, vyhni se tomu, jak to udělat. Pak ti někdo dokáže poradit, jak to máš udělat, kudy a jak mají téct data. Zřejmě v tom nemáš jasno a některé věci, co píšeš, nedávají moc smysl.
_es
Profil
piiiiiiiip:
Mezi js a meziclanek.php žádná komunikace není.
A $('#show').load('../meziclanek.php'); si tam teda dal potom načo?

meziclanek.php mažu protože to jen příšerně zpomaluje
A ako si teda potom predstavuješ, že bude JS komunikovať so serverom?

pokut JSON funguje tak jak si myslím že funguje.
A ako si teda myslíš, že „JSON funguje“? Vieš vôbec, čo je JSON? JSON je len pomenovanie pre zápis dát v JS, netuším, čo si predstavuješ pod tým „fungovaním“?

Odkazované články z [#11] si si prečítal?
piiiiiiiip
Profil
TomášK:
Mám na své stránce výpis článků z db. Chci ale aby je mohl uřivatel zpřístupnit jen pokut lajknul facebookovou stránku podle výběru administrátora (každý článek jiná fb stránka). Jedná se o mvc web v php. V kontrolleru pro ty články mám php script, který zjistí jestly uživatel tu fb stránku lajknul, pokut ano tak vrátí id fb stránky do pohledu.

Tet to s čím si nevím rady.
Musím pomocí ajaxu a JSON (pokut je to k tomu potřeba) každou vteřinu aktualizovat ten kontroller abych zjistil jestly uživatel fb stránku lajknul a mohl tak zpřistupnit článek. Dále pokut se tak stane a uživatel stránku lajkne vytvoří se o tom záznam v db.

_es
A $('#show').load('../meziclanek.php');
Už není aktuální. Rozhodl jsem se od toho upustit a soubor meziclanek.php což mělo být stejně jen provizorní řešení odstranit jak jsem se zmínil v jedné z mých odpovědí
piiiiiiiip:
Mezi js a meziclanek.php žádná komunikace není. meziclanek.php mažu protože to jen příšerně zpomaluje a bude úplně k ničemmu . . .
_es
Profil
piiiiiiiip [#15]:
Mal by si si dôkladne prečítať odkazovaný článok v [#11]. JS o žiadnych kontroleroch, pohľadoch a iných tvojich záležitostiach, čo si si povytváral v PHP, nič „nevie“. Keď beží JS, tak už PHP skript, čo vygeneroval stránku, obvykle dávno skončil. JS „pracuje“ s výsledným HTML kódom od PHP skriptu.

Musím pomocí ajaxu a JSON (pokut je to k tomu potřeba) každou vteřinu aktualizovat
Je nevhodné, aby bol server „bombardovaný“ každú sekundu novým sieťovým dotazom len na zistenie toho, či návštevník náhodou na niečo neklikol.

a soubor meziclanek.php což mělo být stejně jen provizorní řešení odstranit
Ale na komunikáciu so serverom predsa nejaké URL, odkazujúce na nejaký serverový skript, potrebuješ. Ako inak si predstavuješ tú komunikáciu?
piiiiiiiip
Profil
_es:
Já nepotřebuju aby to bylo vhodné, já potřebuju aby to fungovalo. Chtěl jsem použít .load jenže to mi v mvc nefunguje a proto tady vymýšlím tohle.
Keeehi
Profil
piiiiiiiip:
Já nepotřebuju aby to bylo vhodné, já potřebuju aby to fungovalo.
Ale potřebuješ aby to bylo vhodné. Protože pokud by se ti to povedlo takto vyřešit, tak to bude fungovat, když to budeš testovat. Problém však nastane, až to nasadíš na reálnou stánku s návštěvností. Server pod zátěží přestane stíhat a buď se nehorázně zpomalí, nebo rovnou spadne. Vlastně si sám dobrovolně děláš sám na sebe DOS útok. Použitím vhodného způsobu nejen že nebudeš tak zatěžovat server ale můžeš dosáhnou i lepší reakční doby, než je jedna vteřina. Což sice nemusí být potřeba ale může to být jen přidaný benefit.

Ovšem problém je, že ty nezvládáš i celkem jednoduché věci. Měl bys zauvažovat nad tím, zda by nebylo vhodnější si sehnat někoho, kdo by to udělal za tebe.
piiiiiiiip
Profil
Kdybych si to mohl dovolik tak bych sehnal ale nemůžu. Jak by se to tedy dalo udělat optimálně tak aby to fungovalo tak jak jsem popsal (automaticky)?

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

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