![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 16 Pomógł: 0 Dołączył: 20.10.2012 Ostrzeżenie: (0%) ![]() ![]() |
Sprawa dotyczy późnego i dynamicznego określania nazwy zmiennych w skrypcie zawierającym formularz w nowych wersjach PHP
Zmienna ma nazwę postaci: opcja_$row_z[0] gdzie $row_z[0] jest generowana gdzieś w innym miejscu. Tu dla uproszcznia przyjęto $row_z[0]=29; Skrypt ten dobrze działa w WAMP5 (Apache1.3, PHP 5.04) , natomiast w XAMPP 1.8 (Apache2.4, PHP 5.47) nie rozpoznaje zinterpretowanej nazwy zmiennej opcja_29 uzyskanej z elementu checkbox formularza wyswietlając na ekranie: Array ( [opcja_29] => on ) opcja_29 : Notice: Undefined variable: opcja_29 in C:\xampp-portable\htdocs\4-00.php on line 12 A oto kod "4-00.php"
|
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 16 Pomógł: 0 Dołączył: 20.10.2012 Ostrzeżenie: (0%) ![]() ![]() |
(1) Co do zmiennych globalnych, to były TAKŻE one wyłączone w INI (register_globals=off )
w WAMPIE gdzie skrypt pięknie hulał tylko była nieco mniejsza wersja PHP5.04. (2)Jesli chodzi o $ temp to rzeczywiscie mogę wyświetlić echo $temp z tym że $temp nie jest już nazwą unikalną. Sprawa jest taka ze checkboxów mogę miec dowolną ilość , tyle ile wyrzuci mi wynik z bazy danych, poszczególne checkboxy nazywane są jako opcja_XX gdzie XX jest nieznane w momencie pisania skryptu. (3) Muszę przyznać że zrobiłem kiedyś wersję całkowicie tablicową, to jest zamiast zmiennych łańcuchowych typu opcja_$var dawałem $opcja[var] [ind] , no i oczywiście zastowałem tablice sesyjne i wsjo DZIAŁAŁO. Myślałem ze zapomocą stringów też się da, ale nowy PHP (powyżej 5.4.4) to blokuje, gdyż poprzednio interpreter widział przetworzone pole input jako zmienną. Ten post edytował wpm834 2.04.2014, 11:01:52 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 6 807 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
(3) Muszę przyznać że zrobiłem kiedyś wersję całkowicie tablicową, to jest zamiast zmiennych łańcuchowych typu opcja_$var dawałem $opcja[var] [ind] , no i oczywiście zastowałem tablice sesyjne i wsjo DZIAŁAŁO. To co stoi na przeszkodzie teraz? A jeśli musisz zostać przy nazewnictwie "opcja_XX", to przy odbieraniu danych przeleć w pętli tablicę $_GET:
i badaj $name pod kątem początkowego stringu "opcja_", jeśli taką ma nazwę, to wytnij resztę, rzutuj na int i będziesz mieć id opcji. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 18.10.2025 - 11:22 |