[PHP] Dynamiczne tworzenie zmiennej na podstawie innej zmien

Języki, których efekty są wykonywane po stronie serwera. PHP, ASP czy CGI w połączeniu z bazami danych SQL dają niezwykłe możliwości budowy i zarządzania stron WWW. Tu zadajemy pytania oraz demonstrujemy kod, z którym mamy problem.
isaiah
Posty: 1
Rejestracja: wt gru 12, 2006 11:05 pm

[PHP] Dynamiczne tworzenie zmiennej na podstawie innej zmien

Post autor: isaiah »

Witam,
nie wiem czy temat posta jest dla Was czytelny, ale nie potrafilem krotko opisac tego o co mi czodzi. Samymi slowami tez nie dam rady wiec oto przyklady z komentarzami:

[php]<?php
echo "<input name='ile$row[productID]' type='text' id='ile$row[productID]' value=' '>";
?>[/php]
To u gory to fragment dynamicznie tworzonego formularza na podstawie wpisów z bazy danych. Do kazdego pola textowego w atrybucie name i id jest przypisywany jest ciąg znaków ile oraz wartosc zmiennej $row[productID] czyli np.: ile01, ile22, ile17.

Po wysłaniu formularza wartość poa textowego jest dostepna w zmiennej np. $_POST[ile01]

I teraz moje pytanie, jak ustawic wartosc value na wartosc zmiennej ktora dopiero stworzymy.

chodzi o cos w tym stylu:

<?php
echo "<input name='ile$row[productID]' type='text' id='ile$row[productID]' value=' $ilei_tu_wartosc_zmiennej_$row[productID]'>";
?>[/b]

Dla ciekawych po co tak robic powiem ze przydaje sie gdy mamy formularz ktory sprawdzamy pod katem bledow w wypelnieniu i gdy takie znajdziemy czyscimy tylko zmienne z bledami a inne dzieki temu pozostaja w swoich polach.
Hawk
Przelotem
Przelotem
Posty: 209
Rejestracja: ndz gru 22, 2002 9:34 pm

Re: [PHP] Dynamiczne tworzenie zmiennej na podstawie innej zmien

Post autor: Hawk »

Spróbuj tak:

[php]<?php
echo ' <input name="ile['.$row["productID"].']" type="text" id="ile['.$row["productID"].']" value="" />'."\n";
?>[/php]

A przy wyświetlaniu:

[php]<?php
$ile = $_POST["ile"];
echo ' <input name="ile['.$row["productID"].']" type="text" id="ile['.$row["productID"].']" value="'.$ile[$row["productID"]].'" />'."\n";
?>[/php]

Idea jest taka: zamiast tworzyć zmienne typu $_POST["ile01"], itp. tworzymy tablicę $_POST["ile"], której indeksami są wartości zmiennej $row["productID"] - w związku z czym nie ma problemów z dostaniem się do odpowiedniego elementu.
123456
Zaczyna działać
Zaczyna działać
Posty: 514
Rejestracja: sob paź 28, 2006 1:19 pm

...

Post autor: 123456 »

Rozwiazanie z tablica jest bardzo dobre i warto je stosowac, jednak napisze jeszcze poprawna wersje tego co chciales uzyskac.
Do kazdego pola textowego w atrybucie name i id jest przypisywany jest ciąg znaków ile oraz wartosc zmiennej $row[productID] czyli np.: ile01, ile22, ile17.
Dynamiczne nazwy zmiennych w PHP tworzy sie w nastepujacy sposob:
[php]<?php

$index = 123; // index ustalany np. w petli

${"zmienna{$index}"} = "wartosc zmiennej"; // dynamiczne zlozenie nazwy zmiennej

print $zmienna123; // odwolanie do zmiennej jak do kazdej innej...

// ...i na ekranie jest "wartosc zmiennej"

?>[/php]
viraptor
Zaczyna działać
Zaczyna działać
Posty: 633
Rejestracja: pn cze 28, 2004 12:58 pm
Kontakt:

Re: [PHP] Dynamiczne tworzenie zmiennej na podstawie innej zmien

Post autor: viraptor »

Co tu się dzieje? Nie, nie, nie i jeszcze raz nie dla "register_globals"!
Skoro ileXX jest dostępne w post, to po prostu sprawdzasz:
[php]for($i=1;array_key_exists('ile'.$i, $_POST);$i++) {
sprawdź_cośtam_w($_POST['ile'.$i]);
}[/php]
ODPOWIEDZ