Dynamiczne zmienne


(Bipocich) #1

Witam chciałbym utworzyć dynamiczne zmienne.

Sporo się naszukałem w Internecie jednak niewiele znalazłem.

Mianowicie chodzi o to aby zmiennej $test[numer] (generowanej dynamicznie) przypisać imię maciek z tym samym numerem numerem.

$i=0;

do{


$test{$i} = "Maciek'.$i.'";


echo $test2;


$i=$i+1;

echo $i;


}while($i<2);

Trochę z tym kombinowałem, jednak nie do końca wyszło :frowning:

Proszę o pomoc.


(hoobert) #2

Możesz to zrobić w ten sposób:

$i=0;


do{

     $test = 'test'.$i;

     $$test = "Maciek'.$i.'";


     $i=$i+1;


}while($i<=2);


echo $test2;

chociaż lepiej byłoby użyć tablic.


(Drobok) #3

Jak ma wyjść jak wyświetlasz co innego, niż to w czym zapisujesz :stuck_out_tongue:


(Bipocich) #4

hoobert Wielkie THX za odpowiedź, zadziałało :smiley:

Zrobiłem to tak:

$i=0;


do{

$test = 'test'.$i;

$$test = $_POST['test'.$i.'']; // do zmiennej test 1 przypisuje dane z formularza o nazwie test1

 $i=$i+1;


}while($i<$a);

Później się wgłębię bardziej o co chodzi z tym podwójnym dolarem :stuck_out_tongue: Okej, a gdybym teraz chciał w kolejnej pętli warunkowej wyświetlić wszystkie testy ($a ilość pól test od $a w poprzednim formularzu) jak powinienem to zapisać w tej pętli?

$i=0;


do{


// Tu chciałbym wyświetlić wszystkie wcześniej zapisane testy (test0, test1, test2, testn)


}while($i<$a);

(hoobert) #5

Po kodzie z pierwszego okienka z Twojego ostatniego postu można na przykład tak:

for($j=0;$j<$i;$j++)

{

	$test = 'test'.$j;

	echo $$test;

}

ale dalej nie rozumiem, dlaczego nie korzystasz z tablic, a to rozwiązanie jest co najmniej dziwne.


(Bipocich) #6

Już trochę rozjaśnię, bo wiem jak to jest z ciekawością :smiley:

Mianowicie we wcześniejszej stronie wyświetlam w postaci form imie, nazwisko i ilość pkt.

Ilość punktów można zmieniać. Przykładowo, jeśli mamy 20 osób łatwiej jest zmienić każdemu ilość punktów za jednym razem.

Do każdego pola "name" nazwiska przypisywana jest nazwa w następujący sposób

name="punkty'.$a.'"

Analogicznie postępuję z polami pkt i imie. Następnie ta strona wysyła te dane do pliku php. Plik php odbiera te dane jednak nie wiem dlaczego nie chce ich zaktualizować. To pewnie przez ten podwójny $. A oto część kodu odpowiadająca za odebranie danych i zaktualizowanie ich. Co tu jest nie tak w zapytaniu sql?

$i=0;


do

{



$imie = 'imie'.$i;

$$imie = $_POST['imie'.$i.''];


$nazwisko = 'nazwisko'.$i;

$$nazwisko = $_POST['nazwisko'.$i.''];


$punkty = 'punkty'.$i;

$$punkty = $_POST['punkty'.$i.''];

$i=$i+1;



}while ($i<$a);







$i=0;

do


{	



	$imie = 'imie'.$i;

	$nazwisko = 'nazwisko'.$i;

	$punkty = 'punkty'.$i;




echo $$nazwisko; echo $$imie; echo $$punkty;


 mysql_query("UPDATE dane SET punkty='$$punkty' WHERE nazwisko='$$nazwisko' and imie='$$imie'")

    or die('

Błąd zapytania
'); $i=$i+1; }while ($i<$a); [/code]


(hoobert) #7

nie wgłębiałem się w ten kod, ale tu jest błąd składni:

mysql_query("UPDATE dane SET punkty='$$punkty' WHERE nazwisko='$$nazwisko' and imie='$$imie'")

spróbuj zamienić ten fragment na:

mysql_query("UPDATE dane SET punkty='".$$punkty."' WHERE nazwisko='".$$nazwisko."' and imie='".$$imie."'")

(Bipocich) #8

Wielkie THX hoobert, jesteś BOSKI! !!

-- Dodane 10.11.2012 (So) 0:36 --

Witam ponownie :smiley:

Co w poniższej części kodu jest nie tak??:

$wynik4= @mysql_query("select * from dziennik ") or die ("zla tabela 1");


while($dziennik=mysql_fetch_assoc($wynik4)){


$b=1;


do{

$id='pkt'.$dziennik['login'].$b;


$$id=$_POST[$id];


$login=$dziennik['login'];




mysql_query("UPDATE dziennik SET ".$b."='".$$id."' WHERE login='.$login.' ")


    or die('

Błąd zapytania 1
'); $b=$b+1; }while($b16); }[/code]