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: Komunikace mezi 2 PHP.

Aktivity
Avatar
Le_Ze
Člen
Avatar
Le_Ze:11.10.2014 20:59

Nazdar kluci, pomůžete?
Mam v PHP soubor.
Potřebu v něm přes JS spustít další PHP soubor a načíst s něho data.
Pomůžete?
Už jsem se dočetl že to musí byt přes ajax.
Vyzkoušel jsem par návodu na netu, ale nějak se nedaří.

Prostě mam php data.php
v něm toto.

<?php
$promena = "test";
?>

Jak v druhem PHP, přes JS spustím ten skript data.php a načtu hodnotu $promena

Dik moc.

Editováno 11.10.2014 21:01
 
Odpovědět
11.10.2014 20:59
Avatar
Odpovídá na Le_Ze
Neaktivní uživatel:11.10.2014 21:06

V JS to nepůjde, zkus v PHP include.

<?php include("data.php"); ?>
Nahoru Odpovědět
11.10.2014 21:06
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Neaktivní uživatel:11.10.2014 21:09

On zrejme chce načítať ten druhý súbor až neskôr po nejakej akcii zo strany používateľa a to s include nevyrieši :)

Nahoru Odpovědět
11.10.2014 21:09
Neaktivní uživatelský účet
Avatar
Jan Lupčík
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Jan Lupčík:11.10.2014 21:23

Tak to může vyřešit pomocí podmínek a include(); :)

if(...) {
include('data.php');
}
Nahoru Odpovědět
11.10.2014 21:23
TruckersMP vývojář
Avatar
Honza Bittner
Tvůrce
Avatar
Odpovídá na Le_Ze
Honza Bittner:11.10.2014 21:43

http://bit.ly/1xDwOOT

Editováno 11.10.2014 21:43
Nahoru Odpovědět
11.10.2014 21:43
FIT ČVUT alumnus :-) Sleduj mě na https://twitter.com/tenhobi a ptej se na cokoli na https://github.com/tenhobi/ama.
Avatar
Le_Ze
Člen
Avatar
Le_Ze:11.10.2014 21:43

Tak jinak.

<?php
  $register_GPA = `sudo i2cget -y 1 0x20 0x13`;
  echo $register_GPA;
?>

Takto mi to načte data s registru a vypíše přes PHP.

Já to však potřebují strčít v JS do timeru.

Jak jsem tak patral, tak jediný způsob je vytvořit si třeba index.php.
Do něho dat JS.
A v něm přes ajax zavolat přes post ten první PHP a přenést tuto hodnotu.

 
Nahoru Odpovědět
11.10.2014 21:43
Avatar
Odpovídá na Le_Ze
Neaktivní uživatel:11.10.2014 22:00

Pokud nepotřebuješ posílat ze stránky (která bude přes js volat tu druhou) žádná data, tak můžeš použít normálně get. jQuery má krásnou metodu na ajaxové volání stránky, mrkni tady: http://api.jquery.com/jquery.ajax/

Nahoru Odpovědět
11.10.2014 22:00
Neaktivní uživatelský účet
Avatar
Le_Ze
Člen
Avatar
Odpovídá na Neaktivní uživatel
Le_Ze:11.10.2014 23:28

Kluci poraďte.
Nikdy jsen v PHP, JS a ajaxu nedělal.
Náhodou mi jeden známy daroval RasPi a já zkouším.

Našel jsem asi to co potřebují.
http://www.w3schools.com/…ajax_php.asp

Trochu tuším jak to funguje, ale asi sem si něco přised.
Upravím PHP File

<?php
$q=$_REQUEST["q"]; $hint="Test";
echo $hint;
?>

Když zadám do First name cokoliv, vypiše mi to Test.

Nevím však jak na tem JS v HTML.
Rad bych zrušil celou funkcí.
Prostě aby hned při spuštění stránky se hodnota té proměnné načetla v JS.

Editováno 11.10.2014 23:29
 
Nahoru Odpovědět
11.10.2014 23:28
Avatar
Odpovídá na Le_Ze
Neaktivní uživatel:12.10.2014 0:00

Já moc nevím, co se snažíš udělat :) Jestli jsem to dobře pochopil - chceš do prvního souboru dosadit hodnotu do proměnné pomocí js z druhého souboru - tak to není možné. Pokud to myslíš jinak, tak ti nerozumím. Ideálně sem pošli všechny soubory a řekni nám znovu, co chceš udělat (ne jak, ale co).

Nahoru Odpovědět
12.10.2014 0:00
Neaktivní uživatelský účet
Avatar
Le_Ze
Člen
Avatar
Odpovídá na Neaktivní uživatel
Le_Ze:12.10.2014 0:09

Už jsem to tu psal.

<?php
  $register_GPA = `sudo i2cget -y 1 0x20 0x13`;
  echo $register_GPA;
?>

Toto mi při spuštění načte hodnotu s registru v linuxu.
Ja je však nechci načítat jen jednou při spuštění, ale dat to do JS a do timeru.
Aby se to aktualizovalo.

Editováno 12.10.2014 0:10
 
Nahoru Odpovědět
12.10.2014 0:09
Avatar
Odpovídá na Le_Ze
Martin Konečný (pavelco1998):12.10.2014 0:35

Moc jsem to nečetl, ale mohlo by ti pomoct něco jako tohle:

<script>

function aktualizace()
{
    $.get("stranka_ktera_vypise_hodnotu_registru.php", function(hodnota) {
      $("#nejakyElement").html(hodnota);
    })
}

window.setInterval("aktualizace", 10000);

</script>

Píšu to z hlavy, takže nevim, jestli to bude fungovat. Navíc bys na to musel mít knihovnu jQuery (v čistým JS by to bylo o pár řádků delší).
V podstatě by tenhle kód měl udělat to, že se každých 10 sekund (10000 milisekund) pošle požadavek na soubor stranka_ktera_vypise_hodnotu_registru.php, jehož odpověď (text vypsaný pomocí echo) se uloží do proměnné hodnota, kterou už pak můžeš kdekoliv zobrazit.

Nahoru Odpovědět
12.10.2014 0:35
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Pavel Mareš
Tvůrce
Avatar
Pavel Mareš:12.10.2014 8:28

Jestli to dobře chápu (a jsem si tím téměř na 100% jist), má Martin v podstatě pravdu, ale toto je asi to co chceš: (je to v JQuery, jelikož v čistém JS to nehodlám dělat)

function vezmiHodnotu(element) {
        $.post('cesta_k_souboru_php.php',
                value: element,
                function(result) {
                        VysledekZeSouboru = result; //není potřeba, jen když třeba chceš vědět jestli to vyšlo
                }
        );
}
setTimeout(function(){
        elHodnoty = $("span.hodnota");
        vezmiHodnotu(elHodnoty);
}, 10000); //za 10s se to spustí

Teoreticky by to mělo fungovat, píšu to také z hlavy, takže tu není 100% jistota, ale mělo by to fungovat.

Nahoru Odpovědět
12.10.2014 8:28
Však ono půjde ...
Avatar
Le_Ze
Člen
Avatar
Odpovídá na Pavel Mareš
Le_Ze:12.10.2014 8:42

Děkují moc - vyzkouším.

je to v JQuery, jelikož v čistém JS to nehodlám dělat

Nelenil jsem a zkoušel to řešení co je na te strance co jsem tu dal.
http://www.w3schools.com/…ajax_php.asp

Ta PHP stranka by měla byt nšjak tako.

<?php
$q=$_REQUEST["q"]; $hint=sudo i2cget -y 1 0x20 0x13;
echo $hint;
?>

Se strankou s JS jsem take zkoušel.

<html>
<head>
<script>
function showHint(str) {
  document.getElementById("txtHint").innerHTML="";
  var xmlhttp=new XMLHttpRequest();
  xmlhttp.onreadystatechange=function() {
  if (xmlhttp.readyState==4 && xmlhttp.status==200) {
  document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
    }
  }
  xmlhttp.open("GET","gethint.php?q="+str,true);
  xmlhttp.send();

}
</script>
</head>
<body>


<form>
First name: <input type="text" onkeyup="showHint(this.value)">
</form>
<p><span id="txtHint"></span></p>

</body>
</html>

Jen se ještě trochu trapím.
Třeba zrušit tu http čast a tu proceduru volat přimo v JS a ne přes input
Poradite.

Editováno 12.10.2014 8:43
 
Nahoru Odpovědět
12.10.2014 8:42
Avatar
Odpovídá na Le_Ze
Neaktivní uživatel:12.10.2014 14:40

Tak to je opravdu AJAX :)
Viděl bych to nějak takto:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="http://code.jquery.com/jquery-1.10.2.js"></script>
<script type="text/javascript">
setInterval(function()
{
  $("semToVypis").load('/cesta/k/souboru.php');
}, 1000);
</script>
</head>
<body>
<div id="semToVypis"></div>
</body>
</html>

Tohle ti bude každou sekundu vypisovat obsah souboru soubor.php do divu #semToVypis

Nahoru Odpovědět
12.10.2014 14:40
Neaktivní uživatelský účet
Avatar
Le_Ze
Člen
Avatar
Le_Ze:12.10.2014 16:17

Nějak to nefunguje.
Tady je soubor který volám.

<?php
$q=$_REQUEST["q"]; $hint=`sudo i2cget -y 1 0x20 0x13`;
echo $hint;
?>
Tady je to s čím jsem si hral a zkušel.
<html>
<head>
<script>
function showHint(str) {
  document.getElementById("txtHint").innerHTML="";
  var xmlhttp=new XMLHttpRequest();
  xmlhttp.onreadystatechange=function() {
  if (xmlhttp.readyState==4 && xmlhttp.status==200) {
  document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
    }
  }
  xmlhttp.open("GET","gethint.php?q="+str,true);
  xmlhttp.send();

}
</script>
</head>
<body>


<form>
First name: <input type="text" onkeyup="showHint(this.value)">
</form>
<p><span id="txtHint"></span></p>

</body>
</html>

Je to funkční.
Když něco napišu do inputu vypiše mi to ten obsah registru.

A tu to co tu dal p.Vítek

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="http://code.jquery.com/jquery-1.10.2.js"></script>
<script type="text/javascript">
setInterval(function()
{
  $("semToVypis").load('gethint.php');
}, 1000);
</script>
</head>
<body>
<div id="semToVypis"></div>
</body>
</html>
Editováno 12.10.2014 16:19
 
Nahoru Odpovědět
12.10.2014 16:17
Avatar
Le_Ze
Člen
Avatar
Odpovídá na Le_Ze
Le_Ze:12.10.2014 16:23

Nefunguje, žadne chyby nevyhazuje, jen prazdna stranka.

 
Nahoru Odpovědět
12.10.2014 16:23
Avatar
Odpovídá na Le_Ze
Martin Konečný (pavelco1998):12.10.2014 17:54
$("semToVypis").load('gethint.php');

U toho ti chybí znak #, což znamená v jQuery ID elementu.

$("#semToVypis").load('gethint.php');
Nahoru Odpovědět
12.10.2014 17:54
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Le_Ze
Člen
Avatar
Odpovídá na Martin Konečný (pavelco1998)
Le_Ze:12.10.2014 18:15

:D děkují všem.
Ještě poslední.
Jak dostanu tu staženou hodnotu s Query ID elementu?
Nechci to vypisovat na stanku ale zpracovat.

Asi nějak takto, ale nefunguje to.

setInterval(function()
{

  $("#semToVypis").load('gethint.php');
  text = #semToVypis;
  document.write(text);
}, 1000);
Editováno 12.10.2014 18:16
 
Nahoru Odpovědět
12.10.2014 18:15
Avatar
Odpovídá na Le_Ze
Martin Konečný (pavelco1998):12.10.2014 19:34

Tak můžeš udělat něco ve smyslu

var text = $("#semToVypis").html();

Ale pokud to chceš zpracovávat, spíš bych na to použil metodu $.get() než $.load().

Nahoru Odpovědět
12.10.2014 19:34
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Le_Ze
Člen
Avatar
Le_Ze:12.10.2014 19:59

Klucí, děkují moc.

Ale pokud to chceš zpracovávat, spíš bych na to použil metodu $.get() než $.load().

No jsem rad že jste mi tady pomohli s tým load a že jsem to vůbec rozchodil.
Nevím zda jste to tady čet.
Nemam nic společného s programováním.
Dostal jsem Rasberry pi a snažím se ho ovladat přes web rozhraní.

Stejnak vím že mně nemíné se naučit alespoň základy, ale zatím si hrají :)

 
Nahoru Odpovědět
12.10.2014 19:59
Avatar
Le_Ze
Člen
Avatar
Odpovídá na Le_Ze
Le_Ze:15.10.2014 5:16

Nazdar kluci.
Už mi s toho začíná hrabat.
To k čemu jsme tu tak pracně dospělí funguje.
Spokojen.

<script type="text/javascript">
setInterval(function()
{
  $("#semToVypis").load('gethint.php');
  var text = $("#semToVypis").html();
}, 1000);
</script>

Mam však ve stejném adresáři další skript.
zap_GPA0.php
Když to strčím do prohlížeče, zapne se mí pin GPA0.
Snažím se ho spustit stejným způsobem a nejde to.

$("#test").load('zapGPA0.php');

Zkoušel jsem i toto.

$("#test").load("'zapGPA0.php'?pin=1");

Así musí byt v tom souboru, co volám nějaká návratová hodnota, že, aby to fungovalo.
Nebo zas jsem něco posmolil.
Jde to vyřešíte bez ní?

Editováno 15.10.2014 5:18
 
Nahoru Odpovědět
15.10.2014 5:16
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 21 zpráv z 21.