Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php][MySQL] Wykonanie kodu php
mokry
post 25.09.2006, 17:37:28
Post #1





Grupa: Zarejestrowani
Postów: 374
Pomógł: 23
Dołączył: 3.06.2006
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Wykonuje zapytanie "SELECT * FROM..."
Wyswietlam wyniki z otrzymanej tablicy i tu problem:

Chciałbym aby kod php, który jest w bazie danych w jednym z pol wykonał się przy wywołaniu pola na stronie...
Dokładniej...
Zawartość pola "tekst" z bazy danych:
Kod
Wyświetl poniższy tekst:<br>
<?
echo "wyswietl ten tekst";
?>


Wynik ma być:
Kod
Wyświetl poniższy tekst:<br>
wyswietl ten tekst


a jest:
Kod
Wyświetl poniższy tekst:


Jak moge takie cos otrzymac?
Prosze o wszelka pomoc/ukierunkowanie.


--------------------
Pomogłem? Podziękuj proszę klikając poniżej "POMÓGŁ" ;)
Go to the top of the page
+Quote Post
wijet
post 25.09.2006, 17:46:28
Post #2





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 20.12.2005
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Powinieneś użyć funkcji eval()
tu masz do poczytania eval()

  1. <?php
  2. $kod_do_wykonania = "echo 'teks wyswietlany';";
  3. eval($kod_do_wykonania);
  4. ?>


Ten post edytował wijet 25.09.2006, 17:51:15


--------------------
Go to the top of the page
+Quote Post
mokry
post 25.09.2006, 18:18:57
Post #3





Grupa: Zarejestrowani
Postów: 374
Pomógł: 23
Dołączył: 3.06.2006
Skąd: Katowice

Ostrzeżenie: (0%)
-----


W takim razie czy takie wyrazenie bedzie poprawne?

  1. <?
  2. $str = preg_replace("#[wykonaj](.*?)[/wykonaj]#si", eval("1"), $str);
  3. ?>


Kod napisalem teraz na szybko na podstawie generatora bbcode, bo z tego co widze to niebardzo...
wyrzuca komunikat:

Cytat
Warning: Unexpected character in input: '' (ASCII=1) state=1 in /home/allforweb/domains/domena/public_html/engine/funkcje/index.php(26) : eval()'d code on line 1


Ten post edytował mokry 25.09.2006, 18:28:03


--------------------
Pomogłem? Podziękuj proszę klikając poniżej "POMÓGŁ" ;)
Go to the top of the page
+Quote Post
wijet
post 25.09.2006, 18:35:51
Post #4





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 20.12.2005
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Sprobój to wyrażenie pomiedzy [wykonaj] a [/wykonaj]
zamienic na
  1. <?php eval('wyrażenie_do_wykonania;') ?>

nie zapomnij o sredniku na koncu wyrazenia do wykonania


--------------------
Go to the top of the page
+Quote Post
mokry
post 25.09.2006, 18:39:57
Post #5





Grupa: Zarejestrowani
Postów: 374
Pomógł: 23
Dołączył: 3.06.2006
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Dalej cos nie dziala :/

Chodzi tutaj o to, aby kod wykonywal sie tylko w znacznikach bbcode [wykonaj] [/wykonaj]

Dodatkowym utrudnieniem, choc niekoniecznie, jest kolorowanie skladni php, ktore akurat dziala prawidlowo. Czyli oprocz tego ze jest tam kod html, znaczniki bbcode to jeszcze musialaby byc mozliwosc wykonania kodu php...

Ten post edytował mokry 25.09.2006, 18:43:50


--------------------
Pomogłem? Podziękuj proszę klikając poniżej "POMÓGŁ" ;)
Go to the top of the page
+Quote Post
myth
post 25.09.2006, 22:00:01
Post #6





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 25.09.2006

Ostrzeżenie: (0%)
-----


  1. <?php
  2. $str = "Bla bla bla.. 1 [wykonaj]echo 'hello world! :-)';[/wykonaj] bla bla bla.. 2";
  3.  
  4. #-- usuwamy lewa strone 'Bla bla bla.. 1'
  5. $str1 = preg_replace('#(.*?)[wykonaj]#si', '', $str); 
  6.  
  7. #-- usuwamy prawa strone 'bla bla bla.. 2'
  8. $str2 = preg_replace('#[/wykonaj].+#si', '', $str1);
  9.  
  10. echo eval($str2);
  11. ?>


Pewnie da sie jeszcze prosciej. dry.gif

Edit: No tak, forum usuwa slashe. W zmiennych $str1 oraz $str2 przed "[" oraz "]" musisz dodac "\" , bo [] traktowane jest jako klasa.

Pozdrawiam.

Ten post edytował myth 25.09.2006, 22:15:18
Go to the top of the page
+Quote Post
mokry
post 26.09.2006, 00:24:25
Post #7





Grupa: Zarejestrowani
Postów: 374
Pomógł: 23
Dołączył: 3.06.2006
Skąd: Katowice

Ostrzeżenie: (0%)
-----


po wstawieniu na strone:
  1. <?
  2. #-- usuwamy lewa strone 'Bla bla bla.. 1'
  3. $str1 = preg_replace('#(.*?)[wykonaj]#si', '', $row['tresc']); 
  4. #-- usuwamy prawa strone 'bla bla bla.. 2'
  5. $str2 = preg_replace('#[/wykonaj].+#si', '', $str1);
  6. $row['tresc'] = eval($str2);
  7. ?>

oczywiscie ze slashami, dalej wyskakuja mi bledy :/
Probowalem kod w takich postaciach:
Kod
[wykonaj]echo 'tekst';[/wykonaj]


Kod
[wykonaj]
echo 'tekst';
[/wykonaj]


Kod
[wykonaj]
<?
echo 'tekst';
?>
[/wykonaj]


Kod
[wykonaj]<? echo 'tekst'; ?>[/wykonaj]


Za kazdym razem bez pozytywnego skutku...
Bledy:
Cytat
Parse error: syntax error, unexpected $end in /home/allforweb/domains/domena/public_html/engine/funkcje/index.php(34) : eval()'d code on line 1

I tak przy kazdej pozycji z petli: "while($row = mysql_fetch_array($wynik)) {
(...)
}"

Ten post edytował mokry 26.09.2006, 00:25:47


--------------------
Pomogłem? Podziękuj proszę klikając poniżej "POMÓGŁ" ;)
Go to the top of the page
+Quote Post
myth
post 26.09.2006, 12:53:25
Post #8





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 25.09.2006

Ostrzeżenie: (0%)
-----


http://tiny.pl/7sn9

Sprawdź teraz. blink.gif
Go to the top of the page
+Quote Post
mokry
post 27.09.2006, 01:04:28
Post #9





Grupa: Zarejestrowani
Postów: 374
Pomógł: 23
Dołączył: 3.06.2006
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Teoretycznie dziala, ale w tym momencie mam tylko akceptowane [wykonaj], cala reszta jest usuwana :/


--------------------
Pomogłem? Podziękuj proszę klikając poniżej "POMÓGŁ" ;)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 12:55