Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] zapisywanie wyniku echo
Forum PHP.pl > Forum > Przedszkole
narf
Witam.

Mam tablice jednowymiarowa, ktorej elementami sa wywolania funkcji javascript "<script lan..." (m.in. obliczenia odleglosci z google maps).
Wywolujac elementy tablicy poprzez echo dostaje to, co chce czyli wyniki obliczen js.
Gdy chce zapisac tablice do pliku txt, to oczywiscie zapisuje mi formulki wywolan funkcji zamiast ich wynikow.
Jak zapisac do pliku wynik? czyli to, co otrzymuje po zastosowaniu echo.

Z gory dziekuje!
drPayton
zamiast
  1. <?php
  2. echo $zmienna;
  3. ?>

zrób
  1. <?php
  2. file_put_contents('plik.txt',$zmienna);
  3. ?>

A jeśli nie o to chodziło/nie działa to napisz coś więcej (fragment kodu)...
Grzyw
Jeżeli dobrze zrozumiałem, to co wyrzucasz na ekran przez echo ma nie tylko wartość odległości, ale pewnie inne znaczniki. Jeżeli tak jest, napisz, co dokładnie zawiera ta zmienna. Możesz to sobie przyciąć funkcjami obsługi łańcuchów znaków.
narf
nie zrouzmieliscie mnie

tworze sobie tablice na podstawie pliku txt
Kod
   $x=file("x/x.txt");
      for($i=0; $i<count($x); $i++) {
         $x_ar[]="<script language=\"javascript\">dystans('".substr()_i_cala_reszta."');</script>";
      }


i jak ja echuje
Kod
   for($i=0; $i<count($x_ar); $i++) {
         echo $x_ar[$i]."
";
      }


to dostaje np.
Kod
666
    1337
    404

i jest super, bo js sobie wszystko liczy.

natomiast jak zapisuje tablice do pliku, to (co logiczne) znajduje w nim
Kod
<script language="javascript">dystans('".substr()_i_cala_reszta1."');</script>
    <script language="javascript">dystans('".substr()_i_cala_reszta2."');</script>
    <script language="javascript">dystans('".substr()_i_cala_reszta3."');</script>

a chcialbym zapisac to, co wyswietla przegladarka - policzony php i js.

jak to zrobic?
czy moze raczej mam napisac sobie sam w php odpowiednik google_map'owskiej funkcji js distanceFrom() i olac js w tym wypadku? ;p


p.s. w poscie porobilo mi dotakowe wciecia w code i zjadlo 1 br'a. ;p
drPayton
Ambitny problem, sporo godzin poświęciłem na rozwiązanie ale udało się.
Tu dałem przykład, na którego podstawie zbudujesz własne skrypty.
Możliwe, że dałoby się je uprościć, ale to już zadanie dla Ciebie, czy innych forumowiczów.

Żeby było łatwiej, oparłem skrypt na darmowym advAJAX
Potrzebne są 4 pliki:
advajax.js (skrypt biblioteki advAJAX), w moim przykładzie, oczywiście można zrobić po swojemu
test.php
fakeJS.php
saveResult.php

Listingi:
test.php

  1. <?php
  2. echo '<script type="text/javascript" src="advajax.js"></script>';
  3. echo '<script type="text/javascript" src="fakeJS.php"></script>';
  4. ?>


fakeJS.php

  1. <?
  2. Header("content-type: application/x-javascript");
  3.  
  4. echo '
  5. function liczCos(liczba)
  6. {
  7. return "wynik to: " + liczba*2 + "\n";
  8. }
  9. ';
  10. echo '
  11. function saveResult(testPseudoArray)
  12. {
  13. advAJAX.post({
  14. url: "saveResult.php",
  15. parameters: { testPseudoArray: testPseudoArray},
  16. onComplete : function(obj) {
  17. alert("Plik zapisany!");
  18. }
  19. });
  20. }
  21. ';
  22.  
  23. echo 'var test = "";';
  24.  
  25. for ($i=0; $i<10; $i++) {
  26. echo 'test += liczCos('.$i.');';
  27. }
  28.  
  29. echo 'saveResult(test)';
  30.  
  31. ?>


saveResult.php

  1. <?php
  2. file_put_contents("plik.txt", $_POST['testPseudoArray']);
  3. ?>


Odpalamy poprzez test.php

Cała "magia" polega na mało znanym: Header("content-type: application/x-javascript"); , który symuluje JS w skrypcie de facto PHP.
Można stosować tam swobodnie PHP, a JS wstawiamy przez echo, ale bez <script>, bez komentarzy CDATA etc

Korzystałem z Tutoriala na www.javascriptkit.com
narf
fantastycznie!

BARDZO dziekuje, drPayton i serdecznie pozdrawiam!
drPayton
Cieszę się, że mogłem pomóc i również pozdrawiam! smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.