![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 66 Pomógł: 1 Dołączył: 4.05.2019 Skąd: PHP5.6 Ostrzeżenie: (0%) ![]() ![]() |
1. Do tabeli SQL zapisuje "prawdziwe" zmienne przypisane do tablicy w takiej postaci:
2. Następnie pobieram i obrabiam za pomocą explode w taki sposób: Dzięki czemu dostaje prawidłową (prawie!)funkcjonalną tablice gdzie $NazwaZmiennej1 = Q[1] itd. Wyświetla się to jako tekst, jednak chce nadać temu wartość PHP za pomocą funkcji eval(); ale siedzę nad tym dłuższą chwile testując różnorakie pomysły i nie idzie po mojej myśli... Cały kod wygląda tak:
Zamiast wyniku =1,2,3 chcę osiągnąć przypisanie tego wyniku do zmiennej tj. $NazwaZmiennej1 = $Q[1] ($NazwaZmiennej1 = 1) $NazwaZmiennej2 = $Q[2] ($NazwaZmiennej2 = 2) $NazwaZmiennej3 = $Q[3] ($NazwaZmiennej3 = 3) Aby następnie te zmienne wyświetlić poza pętlą for(); Czy to jest w ogóle możliwe?? |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 799 Pomógł: 1827 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
A nie lepiej stworzyć tabelę dwukolumnową (nazwa, wartosc) i przechowywać odrębnie każdą zmienną - jej nazwę i wartość?
Potem takie dane możesz zaczytać do tabeli w PHP (indeksy stanowią nazwy Twoich zmiennych). Ale jeśli tak bardzo chcesz:
-------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 66 Pomógł: 1 Dołączył: 4.05.2019 Skąd: PHP5.6 Ostrzeżenie: (0%) ![]() ![]() |
No właśnie nie lepiej, bo to jest wzór za pomocą którego zczytuje zapisaną historię danych z formularza i te dane się różnią, a tworzę tzw. panel admina gdzie chce mieć podgląd i mogę sobie pozwolić na tego typu zagmatwany kod. Ułatwi mi to pracę gdy np. dodam nowego inputa w formularzu, bo będę mógł kolejną pozycję (tj. nowego inputa) dopisać i później zczytywać z bazy, zamiast zapisywać wszystko ręcznie w kilku miejscach w pliku. Nie wiem czy zrozumiale to opisałem, ale uważam to za dobry pomysł^^
Chyba nie kumam Twojego rozwiązania, bo: eval(${'wynik'}=$wtf); nie śmiga, wywala: Parse error: syntax error, unexpected end of file in .. eval()'d code on line 1 EDIT: Teraz doczytałem o klamrach. Nazwy zmiennych są unikatowe i znacząco różnią się od siebie więc to rozwiązanie niestety nie przejdzie. Nie ma innego sposobu? Ten post edytował phpuser88 27.04.2022, 19:31:13 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 396 Pomógł: 71 Dołączył: 15.07.2014 Ostrzeżenie: (0%) ![]() ![]() |
Dobra, to teraz ja zadam pytanie.
Dlaczego danych z GET-a nie obrobisz za pomocą parse_url() + małej pętli i nie wrzucisz tego sobie fizycznie do tablicy gdzie przed zapisaniem do bazy wsadzisz do JSON-a? Iterować po tablicy jest łatwiej niż sprawdzać zmienne czy istnieją, szczególnie, że nie wiesz do końca jakie one będą, bo nie masz petternu dla nich z tego co rozumiem. Ten post edytował Salvation 27.04.2022, 19:34:23 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 66 Pomógł: 1 Dołączył: 4.05.2019 Skąd: PHP5.6 Ostrzeżenie: (0%) ![]() ![]() |
Dane są z POST. Właśnie doczytałem o parse_url() i to bardzo fajne rozwiązanie, ale nie działa na POST i raczej nie o to chodzi.
Chciałbym tylko nadać "funkcjonalność" zmiennym, które są wczytane z bazy. Ten post edytował phpuser88 27.04.2022, 20:10:58 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 799 Pomógł: 1827 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Teraz doczytałem o klamrach. Nazwy zmiennych są unikatowe i znacząco różnią się od siebie więc to rozwiązanie niestety nie przejdzie. To rozwiązanie zakłada właśnie unikalność nazw zmiennych. Tu żadnego eval się nie stosuje. Podałem Ci cały kod niezbędny do utworzenie zmiennej. -------------------- |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 66 Pomógł: 1 Dołączył: 4.05.2019 Skąd: PHP5.6 Ostrzeżenie: (0%) ![]() ![]() |
Iterować po tablicy jest łatwiej niż sprawdzać zmienne czy istnieją, szczególnie, że nie wiesz do końca jakie one będą, bo nie masz petternu dla nich z tego co rozumiem. W bazie mam zapisane w dwóch kolumnach zmienne, które są przygotowane specjalnie pod tablice w taki sposób: #dane#dane2#dane3...Następnie przepuszczam przez explode i przypisuje zawartość danych do z góry określonych zmiennych (mam pattern), tj.
Unikalne zmienne później wykorzystuje w kilku miejscach, aby wyświetlić ich wartość. Jednak za każdym razem gdy dodam coś nowego, muszę ręcznie dopisywać w pliku, w kilku miejscach z zachowaniem kolejności kolejne $NazwaZmiennejX = $Q[X]. Chciałbym ten proces zautomatyzować przez wpakowanie całego patternu do bazy, a następnie gdy dodam coś nowego, to za pomocą prostego formularza zrobię update patternu w bazie i później w pliku wszystko zostanie zaktualizowane w kilku miejscach, bo będzie z czytywane z bazy. Problem polega na tym, że gdy wrzucę pattern do bazy i chce zrobić z niego funkcjonalne zmienne za pomocą eval(); to zamiast przypisania zawartości $Q[x] do $UniqZmiennejX, wyświetla się tylko wynik $Q[x], a unikalne zmienne pozostają nie aktywne i nie wiem jak zrobić, aby PHP uruchomił taki kod z bazy: $NazwaZmiennej1 = $Q[1];$NazwaZmiennej2 = $Q[2]; itd. Po uruchomieniu takiego kodu reszta będzie miała właściwą zawartość i jeśli będę chciał dodać coś nowego, to zrobię update bazy w jednym miejscu z kolejnym $NazwaZmiennejX = $Q[X]; @trueblue, tyle, że zmienna w klamrze nie rozwiązuje tego problemu, albo totalnie na maxa nie ogarniam w co szczerze wątpię. Raczej problem leży ze zrozumiałym opisem po mojej stronie, albo z założeniem, że jest możliwe do wykonania wczytanie funkcjonalnego kodu PHP z bazy w takiej postaci tuż pod $Q = explode("#", $row['historia']);
Ten post edytował phpuser88 27.04.2022, 21:10:27 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 6 799 Pomógł: 1827 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
-------------------- |
|
|
![]() ![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 66 Pomógł: 1 Dołączył: 4.05.2019 Skąd: PHP5.6 Ostrzeżenie: (0%) ![]() ![]() |
Wybacz za późną odpowiedź. Próbowałem z klamrami, ale nie działają. Dzięki za próbę pomocy z rozwiązaniem raczej nie możliwego problemu.
Stworzyłem na nowo kompletny przykład, przedstawia on połowicze rozwiązanie, bo wyświetla prawidłowe wartości, ale bez "zmiennych" na których bazowałem w wielu miejscach w pliku porównując i analizując dane. Generalnie cały przykład jest daremny, bo mogę to zastąpić prostym i bezpośrednim odpytaniem `dane` i otrzymam ten sam wynik. I tak to będzie chyba bardziej komfortowe niż ręczne dopisywanie w kilkunastu miejscach kolejnego akapitu z $UniqNazwaZmiennej = $Q[+1];
edit: Właśnie sobie uświadomiłem, że jeśli zmienię strukturę danych w bazie i wstawie w eval() kolejną tabele z bazy jako "nowa zmienna", to powinienem otrzymać satysfakcjonujący wynik ![]() Może ogarnia ktoś poprawną składnie eval? bo nie mogę uzyskać tego efektu, a chodzi mi o to:
Ten post edytował phpuser88 29.04.2022, 15:21:12 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 6 799 Pomógł: 1827 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Za dużo slashy i cudzysłowów. Jeśli już, to raczej:
Nie wiem też czy na pewno dobrałeś poprawną kolejność, według mnie powinno być przypisanie do zmiennej z $db_pattern wartość z $Q, a nie odwrotnie. Może wykorzystasz:
-------------------- |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 66 Pomógł: 1 Dołączył: 4.05.2019 Skąd: PHP5.6 Ostrzeżenie: (0%) ![]() ![]() |
BOSKO!
![]() Przy eval próbowałem wspomnianą konfiguracje i zwraca błąd składni, ale to już nie istotne. ![]() Dzięki wielkie! i dzięki za poznanie mnie z get_defined_vars(); bo to świetny zbiór informacji w jednym miejscu^^ |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.06.2025 - 16:35 |