Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak to zapisac w tabeli
Forum PHP.pl > Forum > Bazy danych > MySQL
123tomek
Witam!
Utworzylem w bazie tabele ktora ma przechowywac teksty dla roznych czesci mojego powstajacego serwisu. Tabela zawiera id_opisu (INT) oraz pola PL, EN, DE itd. (TEXT) ktore przechowuja opisy. Z poziomu PHP odczytuje kolejne opisy jako stringi do zmiennych sesyjnych i wyswietlam poprzez ECHO $_SESSION['opis'].
Pojawil sie jednak problem gdy chce przechowywac tekst wraz ze zmiennymi ktore pozniej w PHP maja automatem wyswietlac ich zawartosc. Czyli chcialbym wyswietlic tekst typu: "Witaj Zdzichu, wlasnie sprawdzam ze masz XYZ kredytow i masz szanse na wiecej. Mozesz zdobyc w ciagu kazdej godziny ABC kredytow." tylko ze Zdzichu = $_SESSION['NazwaUzytkownika'], XYZ = $_SESSION['Kredyty'], ABC = $_SESSION['Poziom'] * $Ilosc_kredytow_na_godzine (czyli iloczyn poziomu gracza * stala kwota kredytow jakie mozna zdobyc w godzine).

Nie chcialbym szatkowac tego tekstu na kawalki:
1."Witaj "
2.", wlasnie sprawdzam ze masz "
3." kredytow i masz szanse na wiecej. Mozesz zdobyc w ciagu kazdej godziny"
4." kredytow."
i zapisywac jako osobne pola tabeli bo to bez sensu.

Probowalem wstawic do bazy cos takiego:
'Witaj '.$_SESSION['NazwaUzytkownika'].', wlasnie sprawdzam ze masz '.$_SESSION['Kredyty'].' kredytow i masz szanse na wiecej. Mozesz zdobyc w ciagu kazdej godziny '.$_SESSION['Poziom'] * $Ilosc_kredytow_na_godzine.' kredytow.

Ale z marnym skutkiem (mysql to zapisal do bazy ale po pierwsze po wyswietleniu w PHP wszystko jest traktowane jako teks i wyswietla sie bez przypisywania zmiennych, po drugie nie moge edytowac juz takiego pola w tabeli bazy, musze usunac rekord i wprowadzac go calkiem na nowo - nie dziala UPDATE (ale to moze wina kodowania pl znakow albo wlasnie tych apostrofow))

Jak prawidlowo zapisac taki string aby po zaladowaniu go do zmiennej PHP $_SESSION['opis'] i wydaniu komendy ECHO $_SESSION['opis'] wszystko ladnie sie zczytalo ze zmiennych i prawidlowo wyswietlalo?

Pozdrawiam


EDIT:

Odpowiem sam sobie bo moze sie komus przydac. Znalazlem w manualu PHP:

  1. <?
  2. //This example lets you parse an unparsed strings variables. Warning: This could cause security leaks if you allow users to pass $variables through this engine. I recommend only using this for your Content Management System.
  3. $mytime=time();
  4. $mydog="My Dog Ate My PHP!";
  5.  
  6. # Your Parsing String:
  7. $s1 = 'Hyphen Variable Preserving: $mytime, and $mydog';
  8. echo "Before: <br><br>$s1<br><br>";
  9.  
  10. # Remember, wherever you define this, it will not be defined GLOBAL into the function
  11. # which is why we define it here. Defining it global could lead to security issues.
  12. $vardata=get_defined_vars();
  13.  
  14. # Parse the string
  15. $s1 = StrParse($s1,$vardata);
  16.  
  17. echo "After: <br><br>$s1";
  18.  
  19. function StrParse($str,$vardata) {
  20. # Takes a string, or piece of data, that contains PHP Variables
  21.  
  22. # For example, unparsed variables like: Test using time: $mytime
  23. # This example shows $mytime, and not the actual variable value.
  24. # The end result shows the actual variable value of $mytime.
  25.  
  26. # This is useful for building a content management system,
  27. # and directing your variables into your content data,
  28. # where content is stored in a file or database, unparsed.
  29. # Of course this could slow down page loads, but it's a good way
  30. # to parse data from current variables into your loaded new data
  31. # making it compatible.
  32.  
  33. # Then the variables are replaced with the actual variable..
  34. $getvarkeys=array_keys($vardata);
  35. $ret=$str;
  36. for ($x=0; $x < count($getvarkeys); $x++) {
  37. $myvar=$getvarkeys[$x];
  38. #echo "Variable: " . $myvar . " [" . $vardata[$myvar] . "]<br>";
  39. $ret=str_replace('$' . $myvar, $vardata[$myvar], $ret);
  40. }
  41. return $ret;
  42.  
  43. }
  44.  
  45. ?>


Wystarczy ze w bazie zapisze stringi jako zwykly tekst:
"Witaj $imie, wlasnie sprawdzam ze masz $kasa kredytow i masz szanse na wiecej. Mozesz zdobyc w ciagu kazdej godziny $zysk kredytow."
W kodzie pod zmienne $imie, $kasa, $zysk wrzucam odpowiednie dane i uzywam funkcji StrParse na moim opisie (oczywiscie wywolujac wczesniej $vardata=get_defined_vars(); )

Dziala.
jajcarzd1
Zerknij na ten Temat: Nazwa zmiennej przechowywana w MySql temat bo dziś wypowiadalem się w podobnym temacie i tam masz rozwiązanie jak to załatwić. Czyli eval + klamry {}. Poniżej przykład z manuala

  1. <?php
  2. $string = 'cup';
  3. $name = 'coffee';
  4. $str = 'This is a $string with my $name in it.';
  5. echo $str. "\n";
  6. eval("\$str = \"$str\";");
  7. echo $str. "\n";
  8. ?>


Pozdro
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.