Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: wykonanie funkcji w stringu
Forum PHP.pl > Forum > PHP
hola777
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
Sephirus
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
hola777
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
croc
Co ma w ogóle DOKŁADNIE robić ta funkcja? Masz tak enigmatycznie ponazywane zmienne, że trudno to wywnioskować.
hola777
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.
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.