Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> nazwa zmiennej jako zmienna
-Kossak-
post
Post #1





Goście







witam , mam maly problemik i nigdzie nie moglem znaleźć rozwiązania....

Generuje formularz w którym ilość elementów jest równa liczbie trafien z bazy mysql.
Formularz typu "checkbox" z nazwa która kryje sie pod zmienna $temp1.


$name=1;
while ($line = mysql_fetch_array($result, MYSQL_ASSOC))
{
foreach ($line as $col_value)
{
$temp = "'";
$temp1 =$temp.$name.$temp;
$_SESSION[$temp1]= $col_value;
echo "$col_value<input type='checkbox' name=$temp1>$temp1<br/>";
$name++;
}
}

I tu zaczynaja sie schody. Wysylał metoda POST.
jezeli wyświetlam zawartość $temp1 to wyskakuje : '1'
(jak wysylam metoda GET to pokazuje ze checkbox ma nazwe 1 czyli wszystko si)


Jednak jezeli na nastepnej stronce próbuje wydobyc $_POST[$temp1] to nawet jezeli jest zaznaczone pole to tak jakby go nie było... jezeli natomiast wyświetlam
np. $_POST['1'] to juz jest "on" i wszystko działa.

Tak samo mam z $_SESSION[$temp1] (tyle ze na odwrot). Jak podam wartośc np. $_SESSION['1'] to sie nic nie wyświetla. A jak $_SESSION[$temp1] to juz prawidlowo....

Czy ktos może mi wyjaśnić czemu tak sie dzieje ? I jak temu zaradzic ?
Kazda stronka zaczyna sie sesją i reszta zmiennych dziala normalnie.

Z góry dziekuję.
Go to the top of the page
+Quote Post
bigZbig
post
Post #2





Grupa: Zarejestrowani
Postów: 740
Pomógł: 15
Dołączył: 23.08.2004
Skąd: Poznań

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


Popelniasz kilka bledow.
1. Zły tytul tematu bowiem nie porusza on problemu nazw zmiennych jako zmienne. Poczytaj sobie w manualu rozdział Zmienne zmienne

2. Jak uczy manual - "Nazw zmiennych dotyczą te same reguły, co innych rodzajów nazw w php. Poprawna nazwa zmiennej zaczyna się od litery lub znaku podkreślenia "_", po których może wystąpić dowolna ilość liter, cyfr lub znaków podkreślenia."
Ty w przypadku sesji uzywasz $temp jako indeksu tabliicy superglobalnej $_SESSION, a w przypadku pola input przypisujesz mu zmienna $temp nazwe. I tak w przypadku sesji twoja zmienna ma nazwe $_SESSION['1'] - co jest dozwolone a w przypadku pola input Twoja zmienna ma nazwe "1" co jest juz niedopuszczalne. (To ze odczytujesz ja z tablicy superglobalnej $_POST lub $_GET - to juz rzecz wtórna.)
  1. <?php
  2.  
  3. $index=1;
  4. while ($line = mysql_fetch_array($result, MYSQL_ASSOC))
  5. {
  6. foreach ($line as $col_value)
  7. {
  8. $_SESSION[$index]= $col_value;
  9. echo $col_value.'<input type=\"checkbox\" name=\"nazwa['.$index.']\" />'.$index.'<br />';
  10. $index++;
  11. }
  12. }
  13.  
  14. ?>

Po wykonaniu formularza mozesz odczytac zmienne $_SESSION[$index] lub w zaleznosci jaka metoda przesylales zmienne $_POST['nazwa'][$index] lub $_GET['nazwa'][$index]

3. Specyfikacja xhtml mowi miedzy innymi ze wszystkie tagi musza byc zamkniete a wiec nie tylko <br /> (zwroc uwage na spacje przed ukosnikiem), ale takze <input />. Ponadto wartosci wszystkich atrybutow powinny byc otoczone cudzyslowami.

Ten post edytował bigZbig 11.04.2005, 10:36:38


--------------------
bigZbig (Zbigniew Heintze) | blog.heintze.pl
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 - 09:12