Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Propojení dvou stránek

Aktivity
Avatar
tbartolen
Člen
Avatar
tbartolen:12.4.2015 21:56

Ahoj. Mám dvě stránky...
www.skkelti.cz
a
www.hokejbal.cz

Chtěl bych si propojit dvě tabulky ze stránek hokejbal.cz na svoje stránky tak, aby se mi automaticky aktualizovali podle toho, jak jsou na stránkách hokejbal.cz ...
JE tohle vůbec technicky možné? Případně jak bych to měl řešit...

Děkuji mnohokrát za radu

Odpovědět
12.4.2015 21:56
Navštiv www.fb.com/skkelticz
Avatar
Odpovídá na tbartolen
Martin Konečný (pavelco1998):12.4.2015 22:22

Zdar,

můžeš generovat třeba JSON soubor, jehož obsah si stáhneš z druhé stránky.

Nahoru Odpovědět
12.4.2015 22:22
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
tbartolen
Člen
Avatar
Odpovídá na Martin Konečný (pavelco1998)
tbartolen:12.4.2015 22:46

Děkuji, z toho co jsem si o tom vygugloval, jde nejspíš o Javascript, to bude zase složitost :-)))

Nahoru Odpovědět
12.4.2015 22:46
Navštiv www.fb.com/skkelticz
Avatar
Odpovídá na tbartolen
Martin Konečný (pavelco1998):13.4.2015 8:05

V podstatě do toho JS vůbec nemusíš tahat. JSON je jen formát dat, kterým mimo jiné rozumí jak PHP, tak i JS - je proto dobrý pro AJAX.
Ale pro tvůj případ stačí pouze vytvořit soubor a hodit do něj data v JSON.

// např. výsledek metody PDOStatement::fetchAll()
$data = array(

  // záznam 1
  array(
    "id" => 1,
    "column" => "value"
  ),

  // záznam 2
  array(
    "id" => 2,
    "column" => "value 2"
  )

  // atd
);

$json = json_encode($data);
file_put_contents("data/table.json", $json);

a z druhé stránky to pak vytáhneš (nejsem si jistý, jestli takto ta funkce bude správně fungovat):

$json = file_get_contents("http://tvoje.stranka.cz/data/table.json");
$data = json_decode($json);

// můžeme zobrazit obsah tabulky
Nahoru Odpovědět
13.4.2015 8:05
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Odpovídá na Martin Konečný (pavelco1998)
Michal Žůrek - misaz:13.4.2015 8:42

pokud je povolené stahování z externího zdroje tak bude fungovat dobře, jen bych tedy podotkl, že je vcelku jedno jaký formát dat zvolí. Může zvolit třeba XML, ke kterému již PHP má celkem dobré nástroje.

 
Nahoru Odpovědět
13.4.2015 8:42
Avatar
tbartolen
Člen
Avatar
Odpovídá na Martin Konečný (pavelco1998)
tbartolen:13.4.2015 9:32

Takže pokud tomu rozumim správně, vytvořím si jakési PHP pole, do kterého budu načítat data z té druhé stránky, pomocí funkce put JSON, a ty data pak budu načítat do tabulky, kterou musím ještě udělat někde v CSS na svojí vlastní stránce...

Nahoru Odpovědět
13.4.2015 9:32
Navštiv www.fb.com/skkelticz
Avatar
Odpovídá na Michal Žůrek - misaz
Martin Konečný (pavelco1998):13.4.2015 9:53

Je pravda, že formátu může být více, ale JSON mi přijde takový nejjednodušší.

Nahoru Odpovědět
13.4.2015 9:53
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Martin Konečný (pavelco1998):13.4.2015 9:54

Pomocí funkce json_decode() se ti JSON data převedou do PHP pole, které pak můžeš projít cyklem (třeba foreach).
V tom poli máš pak data z toho souboru a můžeš si je nastylovat jak chceš.

Editováno 13.4.2015 9:55
Nahoru Odpovědět
13.4.2015 9:54
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
tbartolen
Člen
Avatar
Odpovídá na Martin Konečný (pavelco1998)
tbartolen:13.4.2015 10:06

A stačí nadefinovat cestu jako URL na stránku s tabulkou ze které chci data, nebo musím nastavit přímo cestu do toho zdrojáku té stránky ze které to chci...nechci totiž brát celou stránku, ale jen data z te tabulky...

Jinak tohle bude asi poprvé, co budu psát takhle surovej kód a vyýšlet ho, zatim sem vše měl přes wordpress a jen si upravovat už hotový řešení, proto tolik otazek :-)

Nahoru Odpovědět
13.4.2015 10:06
Navštiv www.fb.com/skkelticz
Avatar
Odpovídá na tbartolen
Martin Konečný (pavelco1998):13.4.2015 10:57

Jde to vytahat i přímo z té stránky, ale je to komplikovanější a hlavně zbytečné. Pokud máš na tom serveru, kde se tabulka generuje, přístup i k datům, tak si udělej nový souboj, kde bude jen ten JSON, nic víc.
Pak to pomocí nějaké fce (třeba file_get_conten­ts()) vytáhneš.

V tom souboru to bude vypadat třeba takto:

{
  [
     {
        "id": 1,
        "column": "value"
     },
     {
       "id": 2,
       "column": "value 2"
     }
  ]
}

na tom druhým serveru to vytáhneš, použiješ json_decode() a budeš z toho mít PHP pole.

Nahoru Odpovědět
13.4.2015 10:57
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
tbartolen
Člen
Avatar
Odpovídá na Martin Konečný (pavelco1998)
tbartolen:13.4.2015 11:22

Na tu stránku ze které chci brát právě přístup k datům nemám...
http://www.hokejbal.cz/1-liga/tabulky/

Jde o to abych měl údaje z téhle tabulky, a jde mi vlastně jen o pozici název týmu a počet bodů, abych nemusel každý kolo aktualizovat 15 tabulek ručně... A tím json a nebo XML to asi nepůjde, když nemám přístup do té stránky jako takové :(

Nahoru Odpovědět
13.4.2015 11:22
Navštiv www.fb.com/skkelticz
Avatar
Odpovídá na tbartolen
Martin Konečný (pavelco1998):13.4.2015 11:36

Tak to je pak něco jinýho. Až budu doma, podívám se na to, pokud nezapomenu :D

Nahoru Odpovědět
13.4.2015 11:36
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Ľuboš Čurgó
Tvůrce
Avatar
Odpovídá na tbartolen
Ľuboš Čurgó:13.4.2015 11:36

Ahoj, pochybujem ze z javascriptom sa ti podari nieco vytiahnut z cudzej stranky koli bezpecnosti vid http://en.wikipedia.org/…urce_sharing, je to hlavne koli XSS. Najlepsie co mozes spravit je kontaktovat spravcu cudzej web stranky ci ma web servis ktory taketo informacie poskytuje

 
Nahoru Odpovědět
13.4.2015 11:36
Avatar
Odpovídá na tbartolen
Martin Konečný (pavelco1998):13.4.2015 16:10

Je to takový podivný řešení, ale zdá se, že funguje :D

<?php

$data = file_get_contents("http://www.hokejbal.cz/1-liga/tabulky/");
$d = new DOMDocument();
@$d->loadHtml($data);

$els = $d->getElementsByTagName("table");

echo "<pre>";

$data = str_replace("\t", "", $els[0]->childNodes[1]->nodeValue);

$matches = preg_split("#([[:digit:]]\.)(.*)#", $data);

foreach ($matches as $match) {
        $x = explode("\n", trim($match));

        // první to hodí prázdné pole, tak ho překočím
        if (count($x) < 2) {
                continue;
        }

        print_r($x);
}

Nevím, jak PHP rozumíš, ale v podstatě to má udělat následující:

  1. vytáhne celý HTML dokument ze stránky hokejbal.cz
  2. vytvoří se objekt třídy DOMDocument a HTML se do něj načte (jelikož web neni validní, pak to hází warningy, proto je před tím ten zavináč na potlačení chyb)
  3. vyhledají se všechny tagy table
  4. $els je pole, které obsahuje obě tabulky (0 = první, 1 = druhá)
  5. $els->childNodes obsahuje jednotlivé části tabulky - childNodes[1] je obsah tagu tbody (jednotlivá data)
  6. pomocí preg_split se oddělí jednotlivé řádky podle čísel 1. až 6.
  7. projdou se foreachem jednotlivé řádky a do $x se uloží jednotlivé sloupce
  8. print_r ti pak ukáže, jak vypadá výsledek

Asi to půjde nějak jednodušeji, ale takto mě to napadlo jako první.

Nahoru Odpovědět
13.4.2015 16:10
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 14 zpráv z 14.