Halloweenská akce! Na stránce s dobitím bodů zadej dole kód STRASIDELNYCH20 a získej porci +20% bodů zdarma!
Akce končí 31.10. o půlnoci.

Diskuze: PHP GET odesilani proměnných

PHP PHP PHP GET odesilani proměnných American English version English version

Aktivity (1)
Avatar
Petr Hrtáň
Člen
Avatar
Petr Hrtáň:17. června 13:12

Ahoj, potřeboval bych dostat proměnne ze stránky send.php, která získává počet řádku z mysql. Skript je pousten každých 20s pomocí javascriptu. Tzn. že mi napíše počet řádků. Potřebuji, aby se mi metodou GET přenesla tato hodnota do stranky vystup.php

Zkusil jsem: $rows je vrácená hodnota z DB.
Zkoušel jsem do skriptu send.php umístit echo <a href="vystup.php?radek=,$rows,"></a>;

 
Odpovědět 17. června 13:12
Avatar
Šimon Rataj
Člen
Avatar
Šimon Rataj:17. června 14:41

A co dělá ten tvůj pokus?

 
Nahoru Odpovědět 17. června 14:41
Avatar
dokanscze
Člen
Avatar
dokanscze:17. června 16:00

Jestli jsem pochopil správně co máš za problém, tak tvoje řešení vypada nějak takhle:

Tohle je jakým zbusobem posíláš data, ale spíš bych použil něco jako ajax requesty na tvuj server

$rows = 10;

echo "<a href = 'vystup.php?radky=$rows'>Tvuj odkaz</a>";

A takhle bys k nim pak přistupoval, v mém případě je jen echuju

echo $_GET['radky'];

Popřípadně bys mohl je zvážit dávat jako hidden input do formu a ten pak posílat

echo("
<form action='vystup.php' method='get'>
<input type='hidden' name='radky' value=$radky>
<input type='sumbit'>
</form>
");

Ale to už je záleží na praktickém užití

Editováno 17. června 16:00
 
Nahoru Odpovědět 17. června 16:00
Avatar
Petr Hrtáň
Člen
Avatar
Odpovídá na dokanscze
Petr Hrtáň:18. června 6:38

Ahoj, děkuji za odpověď. Přesně nějak takhle to mám napsané. Co ale potřebuji je to, že skript je automaticky spostem javascriptem. Nikde jej nezobrazuji a potřeboval bych a by tu hodnotu řádku přenesl do vystup.php.

Jednoduše řečeno.Každých 5s načti počet řádků v DB a pošli na stránku vystup.php

 
Nahoru Odpovědět 18. června 6:38
Avatar
dokanscze
Člen
Avatar
dokanscze:18. června 23:56

Tak to by se řešilo pomocí JS a ajax requestů, sám v tom moc nejsem zběhlý, ale něco jsem ti napsal. Je to asynchronií funkce (běží mimo hlavní běh stránky), posíla dotaz na stránku "getData.php" ta pak echuje výsledek ať už se jedná o JSON nebo jen string (v mém přiadě je to stavené jen na string).

Ale tento kód nemusí běžet na všech prohlížečích, jedná se o relativní novinku v JS.

Dále bych pak spíš použil neco jako JQuery pro vytváření elementů v documentu a i samotne ajax requesty se stanou mnohem jednoduší

async function getData() {
    let response = new XMLHttpRequest();
    response.onreadystatechange = function () {
        if (this.readyState === 4 && this.status === 200) {
            let createA = document.createElement('a');
            let createAText = document.createTextNode("Data");
            let text = "load.php?radky=" + this.responseText;
            createA.setAttribute('href', text);
            createA.appendChild(createAText);
            document.getElementById('data').appendChild(createA);
            document.getElementById('data').appendChild(document.createElement("br"));
        }
    };

    response.open("GET", 'getData.php', true);
    response.send();

    setTimeout('', 5000);
    return getData();
}

PS: Jestli nevíš co přesně je Ajax tak tady na ITNetworku je o tom i tutoriál https://www.itnetwork.cz/…vod-do-ajaxu

 
Nahoru Odpovědět 18. června 23:56
Avatar
dokanscze
Člen
Avatar
dokanscze:19. června 0:21

Tak ještě přidávám snad lepší kód který by měl fungovat všude

 function getData() {
    let response = new XMLHttpRequest();
    response.onreadystatechange = function () {
        if (this.readyState === 4 && this.status === 200) {
            let createA = document.createElement('a');
            let createAText = document.createTextNode("Data");
            let text = "load.php?radky=" + this.responseText;
            createA.setAttribute('href', text);
            createA.appendChild(createAText);
            document.getElementById('data').appendChild(createA);
            document.getElementById('data').appendChild(document.createElement("br"));
        }
    };

    response.open("GET", 'getData.php', true);
    response.send();


    setTimeout(getData, 5000);
}
 
Nahoru Odpovědět 19. června 0:21
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 6 zpráv z 6.