Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> wykonanie funkcji w stringu, wykonanie funkcji umieszczonej w zmiennej jako string
hola777
post
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 7.10.2011

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


WItam
Problem jest następujący

napisałem klasę która ma rysować tabele z danymi
operacja ($tabe, nagłówki, pola)

Wszystko działa lecz chciałem dodać jeszcze wykonywanie funkcji do pola

operacja ($tabela, "nagłówek1;nagłówek2;nagłówek3;nagłówek4;..","pole1;pole2;dzałanie(zamien)=pole3;pole4;...")

";" i "=" to separatory

jest możliwość aby ciąg znaków dzałanie(zamien)=pole3 po zamianie dzałanie(pole3) się wykonał

np: substr(zamien,0,100)=text

niestety wyświetla mi się jako ciąg znaków

Ten post edytował hola777 25.10.2011, 11:35:46
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
Sephirus
post
Post #2





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


Moja sugestia zamień to na tablicę zamiast pisac z separatorami możesz dać to w tablicy jako argument funkcji.

zobacz twoja opcja:

  1. operacja ($tabela, "nagłówek1;nagłówek2;nagłówek3;nagłówek4;..","pole1;pole2;dzałanie(zamien)=pole3;pole4;...")


moja:

  1. operacja ($tabela, array('naglowek1','naglowek2','naglowek3','...'),array('pole1','pole2',substr('pole3',0,100),'pole4','...')


Nie uważasz że to lepsze podejście? smile.gif

A jeśli chcesz to dalej na stringach robić to musisz użyć wyrażenia regularnego w funckji preg_replace i wrzucić to co wyjdzie w EVAL co raczej wskazane nie jest wink.gif


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post
hola777
post
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 7.10.2011

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


Cytat(hola777 @ 25.10.2011, 11:34:13 ) *
WItam
Problem jest następujący

napisałem klasę która ma rysować tabele z danymi
operacja ($tabe, nagłówki, pola)

Wszystko działa lecz chciałem dodać jeszcze wykonywanie funkcji do pola

operacja ($tabela, "nagłówek1;nagłówek2;nagłówek3;nagłówek4;..","pole1;pole2;dzałanie(zamien)=pole3;pole4;...")

";" i "=" to separatory

jest możliwość aby ciąg znaków dzałanie(zamien)=pole3 po zamianie dzałanie(pole3) się wykonał

np: substr(zamien,0,100)=text

niestety wyświetla mi się jako ciąg znaków

Pomysł dobry jednak w tym wypadku nieprzydatny.

Trochę objaśnię sytuacje, poprzedni może nie podałem wszystkich informacji.

Wywołanie operacji klasy

operacja ($tabela, "nagłówek1;nagłówek2;nagłówek3;nagłówek4;..","pole1;pole2;dzałanie(zamien)=pole3;pole4;...")

zamiewniłem tylko "=" na "**" (to jakby w działaniu było przypisanie)

operacja ($tabela, "nagłówek1;nagłówek2;nagłówek3;nagłówek4;..","pole1;pole2;dzałanie(zamien)**pole3;pole4;...")

pole1, pole2... to tylko nazwy pola tablicy - $tabela


A oto klasa


  1. class listuj extends szukaj_w_bazie
  2. {
  3. var $rezultat_l;
  4. function lista($tabela, $pola, $dane){
  5. $pole = explode (";", $pola);
  6. $dane1 = explode (";", $dane);
  7. $tkol = 0;
  8. $ile_t = $tabela-> num_rows;
  9. //echo $ile_t;
  10. $tabela_t = '<table width = "100%"><tr bgcolor = "#7b8487">';
  11. for($iq=0;$iq<count($pole);$iq++)
  12. {
  13. $tabela_t = $tabela_t.'<td><b>'.$pole[$iq].'</b></td>';
  14.  
  15. }
  16. $tabela_t = $tabela_t.'</tr>';
  17. for($ii=0;$ii < $ile_t ; $ii++)
  18. {
  19. $tabela_w = $tabela -> fetch_assoc();
  20. if ($tkol == 0){
  21. $tabela_t = $tabela_t.'<TR BGCOLOR="'.WIERSZ_C.'">';
  22. $tkol = 1;
  23. }else {
  24. $tabela_t = $tabela_t.'<TR BGCOLOR="'.WIERSZ_J.'">';
  25. $tkol = 0;
  26. }
  27. for($iw=0;$iw < count($dane1) ; $iw++){
  28. if (strstr($dane1[$iw],"**")){
  29. $dzialanie = explode ("**",$dane1[$iw]);
  30. //$new_pole = str_replace("zamien",$tabela_w[$dane1[$dzialanie [1]]], $dzialanie[0]);
  31. $new_pole = str_replace("zamien",$tabela_w[$dzialanie [1]], $dzialanie[0]);
  32. //echo '--0--'.$dzialanie [0] .'--1--'. $dzialanie [1] .'--new--'.$new_pole;
  33. $tabela_t = $tabela_t."<td>".$new_pole."</td>";
  34. }else{
  35. $tabela_t = $tabela_t.'<td>'.$tabela_w[$dane1[$iw]].'</td>';
  36. }
  37. }
  38. $tabela_t = $tabela_t.'</tr>';
  39. }
  40. $tabela_t = $tabela_t.'</table>';
  41. $this -> rezultat_l = $tabela_t;
  42. }
  43. }


Ponieważ wszystko jest w pętli przebiegającej przez $tabela nie mogę wykonać funkcji na pole3 bo nie jest to odwołanie do danych a tylko nazwa pola tabeli $tabela
Go to the top of the page
+Quote Post
croc
post
Post #4





Grupa: Zarejestrowani
Postów: 706
Pomógł: 108
Dołączył: 12.03.2010

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


Co ma w ogóle DOKŁADNIE robić ta funkcja? Masz tak enigmatycznie ponazywane zmienne, że trudno to wywnioskować.
Go to the top of the page
+Quote Post
hola777
post
Post #5





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 7.10.2011

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


Sorry za opóźnienie z odpowiedzią ale nie miałem dostępu do internetu.

Klasa ma za zadanie wypisać dane podane w $tabela (dane pobierane z bazy mysql) w tabeli, chciałem dodać wykonywanie funkcji na polu tak by była bardziej uniwersalna, ale nie wiem jak przekazać funkcje w stringu.

Klasa pobiera $tabela(dane z bazy)
$pola(nazwy kolumn)
$dane(nazwy pola tablicy)

Wsio działa ok ale dodane działanie się nie wykona z oczywistych powodów bo jest ciągiem.

Klasa przydaje mi się bo wyświetlam wile danych z bazy w formie tabeli



Chyba się nie da.
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 Aktualny czas: 20.08.2025 - 07:30