Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Wykonanie kodu PHP z bazy danych
Forum PHP.pl > Forum > Przedszkole
mlody69
Witam,
od razu proszę o nie linczowanie mnie za to co chcę zrobić, jest mi to potrzebne w jednej funkcji i tyle smile.gif

Opiszę w czym rzecz, plik php który przedstawia się mniej więcej tak:
  1. while($cos = mysql_fetch_assoc($zapytanie))
  2. {
  3. $id = $cos['id'];
  4. $kod = $cos['kod'];
  5.  
  6. echo '<td>'.$kod.'</td>';
  7. }
  8.  


Zmienna $kod przechowuje na przykład: echo 'coś'

Moje pytanie brzmi, jak wejściowo powinna wyglądać zmienna $kod aby jej zawartość się wykonała, nie wyświetliła?
xxdrago
Daj całość... trochę źle napisałeś ty decydujesz kiedy się wyświetla dodając echo, jeżeli nic z nią nie zrobisz porostu jej "nie będzie widać" - zmiennej biggrin.gif
mlody69
To jest można powiedzieć całość (oprócz zapytania). Tego nie mogę ruszyć
xxdrago
daj funkcje jaką chcesz użyć smile.gif
mlody69
Ona tutaj w ogóle nie ma żadnego znaczenia, to jest kod mojej funkcji wink.gif W niej powinno wykonywać ten kod (nie mogę użyć eval) a nie wyświetlać go.
crocodillo
eval("echo 'test';");
mlody69
@crocodillo

Dziękuje, jednak to wyświetla
  1. <td>eval("echo 'test';");</td>
crocodillo
To nie zrozumiałem pytania. Ty masz plik html i chcesz w nim wykonać skrypt php? Bo już nie wiem o co chodzi. eval() jest funkcją php. Myślałem, że chciałeś wykonać kod pobrany z bazy.

ed: Dopiero zauważyłem, że nie możesz użyć eval().
mlody69
To jest plik .php jednak ten kod musi się wykonać między echo '<td>$cos</td>';
Necsord
Cytat(mlody69 @ 17.02.2012, 22:26:53 ) *
Zmienna $kod przechowuje na przykład: echo 'coś'

Moje pytanie brzmi, jak wejściowo powinna wyglądać zmienna $kod aby jej zawartość się wykonała, nie wyświetliła?


  1. echo "cos co powinno się wyświetlić";
  2. $kod = '
  3. $zmienna = "costam";
  4. echo "OK";
  5. ';
  6. echo '<td>';
  7. eval($kod);
  8. echo '</td>';
  9. echo "cos co powinno się wyświetlić";
  10. echo $zmienna;


Wykonuje się, a zarazem nie wyświetla żadnego echo z $kod. Jeżeli jednak źle się wysłowiłeś i ma wyświetlać echo z $kod to usuń ob_start i ob_end_clean.
mlody69
Dzięki ale nie do końca o to mi chodziło. Muszę jakoś treść w tej tabeli zmienić aby była ona wykonywalna. Kodu php nie mogę zmienić
crocodillo
A możesz zmienić kod przed tym wyświetleniem? Tzn przed echo '<td>$cos</td>'; ?

Jeśli tak, to możesz do $cos przypisać obiekt, i wykorzystujesz magiczną metodę __toString(). Innej możliwości nie widzę. Jeśli w ogóle nie możesz edytować php, to nie zrobisz tego.
mlody69
Nie bardzo, jedynie zapytanie
Necsord
Cytat(mlody69 @ 18.02.2012, 00:22:24 ) *
Dzięki ale nie do końca o to mi chodziło. Muszę jakoś treść w tej tabeli zmienić aby była ona wykonywalna. Kodu php nie mogę zmienić

Ja mam problem ze zrozumieniem ciebie albo tobie nie wychodzi przekazywanie informacji co ty w końcu chcesz. jak narazie to z twoich wypowiedzi wynika tyle, że:
1) Kod ma się wykonac pomiedzy td.
2) Kod nie ma się wyświetlić.
3) Jakaś treść ma się "jakoś" zmienić.
4) Treść która się zmienia ma być wykonywalna.
5) Kod php nie może zostać zmieniony.

W informacjach które starasz sie przekazać jest zarazem wszystko i nic.
mlody69
Możliwe, że jest to niezrozumiałe. Jest mi to bardzo potrzebne, na pewno jest to niepraktyczne ale cóż. Działa to tak:
1)skrypt.php?co=echo 'no fajnie';
2) Dodaje ten kod do bazy
3)Inny skrypt pobiera ten kod i wyświetla
  1. while($cos = mysql_fetch_assoc($zapytanie))
  2. {
  3. $id = $cos['id'];
  4. $kod = $cos['kod'];
  5.  
  6. echo '<td>'.$kod.'</td>';
  7. }


Wynik jest taki:
  1. <td>echo 'no fajnie';</td>

A powinien być:
  1. <td>no fajnie</td>
Necsord
Masz 2 wyjścia.

1) eval() na tej zmiennej.
2) W PHP 5.3+
  1. // w skrypt.php?
  2. $kod = function(){
  3. echo "cos";
  4. };
  5.  
  6. // w twoim kodzie
  7. $kod();


Obie metody wymagaja edycji PHP'a.
Kwestie bezpieczeństwa pomijam bo samo używanie kodu uzyskanego z GET'a samo się wypowiada.
crocodillo
Hmmm wygląda na to, że Pan mlody69 raczej gdzieś się włamać chce, ale nie za bardzo wie jak się za to zabrać smile.gif

jeśli zmienna $a jest zmienną tekstową (string) to w php wykonując polecenie echo $a; TYLKO wyświetlisz zawartość tej zmiennej. Nie ma takiej możliwości, żeby echo wykonało kod php zawarty w zmiennej (oczywiście chodzi mi o echo $a;).
mlody69
Włamać? Testuje na localu pewne rozwiązania i tyle. Dziękuje wszystkim za odpowiedzi, wykorzystam pomysły Necsord.
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.