Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dynamiczne generowanie zmiennych
Forum PHP.pl > Forum > Przedszkole
Bartech
Mam problem, otóż stworzyłem formularz, który jest tworzony dynamicznie na podstawie danych z bazy danych, w tym są tworzone zmienne zawierające dane a ich nazwy są tworzone poprzez zlepienie dwóch wyrażeń, pierwsze to stały element (opis_ lub alt_), a drugie to wyciągnięty z bazy MySQL nagłówek kalumny:

Cytat
<input type=\"checkbox\" name=\"opis_$field_name\" checked>


tak przygotowana zmienna doskonale przegodzi do następnego pliku php a jej zawartość daje się odczytać pod zmienną:
Cytat
$opis_id

lub
Cytat
$opis_cena

gdzie id i cena zostały wstawione przez zmienną $field_name w poprzednim dokumencie php.

Teraz istota problemu. W drugim dokumencie chciałbym dostać się do tej zmiennej ale specyfika programu jaki piszę nie pozwala mi na wprowadzenie do dokumentu nazwy zmiennej bezpośrednio np.
Cytat
$opis_id

tylko musi ona zostać wygenerowana przez skrypt pobierający z bazy MySQL napis opis oraz wpisaną na stałe w dokumencie php nazwę id, efekt końcowy ma wyglądać $opis_id.

Oczywiście wiem jak połączyć te dwa wyrazy ale są one drukowane w przeglądarce jak ciąg w sposób dosłowny a nie jako zawartość zmiennej jaka kryje się pod tą nazwą.

Mam nadzieję że dostatecznie wyraziłem swój problem.
Pozdrawiam...
Liko
  1. <?php
  2. // wyciagasz nazwy z bazy itp.
  3.  
  4. echo '<input type=\"checkbox\" name=\"opis_'.$field_name.'\" checked>';
  5.  
  6. // itd
  7. ?>
Bartech
tak to rozwiązanie sprawdza sie kiedy działamy w formularzu ale nie bardzo można takie coś zastosować w pliku który odbiera te dane. Ja chciałbym uzyskać dostęp do tego wyslanego już formularza w formie:

  1. <?php
  2. $test = opis_'.$field_name.'
  3. ?>


a tak nie da rady! Jak to ująć?

próbowałem:

  1. <?php
  2.  
  3. $test = '$opis_' . $field_name
  4. print(&#092;"$test\");
  5.  
  6. ?>


ale po odczytaniiu wychdzi napis w przglądarce:

Cytat
$opis_field_name


a mnie interesuje zawartość tej zmiennej ale drukowana jest jej nazwa!!!

HYBA POWINIENEM PRZENIEŚĆ TO NA php PRO

moje pliki to:
plik z formularzem
hunter_form_creator.php
  1. <?
  2. include(&#092;"../../../inc/connect.php\");
  3. $line = mysql_list_fields($db, $table);
  4. $num_of_lines = mysql_num_fields($line);
  5. print(&#092;"liczba kolumn w tabeli: <b>$table</b> to: <b>$num_of_lines</b><br>\");
  6. print(&#092;"<FORM ACTION=hunter_action.php?table=$table METHOD=post>\");
  7. print(&#092;"<table border=1 bordercolor=darkblue>\");
  8. print(&#092;"<tr><td>nazwa</td><td>typ</td><td>edycja</td><td>do.</td><td>og.</td><td>opis</td><td>alt</td></tr>\");
  9. for ($index = 0; $index < $num_of_lines; ++$index)
  10. {
  11. echo '<tr><td valign=middle><b>', $field_name = mysql_field_name($line, $index), '</b></td><td valign=middle>';
  12. $field_type = mysql_field_type($line, $index);
  13. echo &#092;"&nbsp;$field_type<br></td><td valign=middle align=middle>\";
  14. if($field_type == 'int'):
  15. print(&#092;"<input type=\"checkbox\" name=\"edycja_$field_name\" checked></TD><td></td><td></td><td valign=middle><input type=\"text\" name=\"opis_$field_name\"></td><td valign=middle><input type=\"text\" name=\"alt_$field_name\"></td></tr>\");
  16. elseif($field_type == 'string'):
  17. print(&#092;"<input type=\"checkbox\" name=\"edycja_$field_name\" checked></TD><td valign=middle align=center><input type=\"radio\" name=\"wybor_$field_name\" checked value=dowolny></td><td valign=middle align=center><input type=\"radio\" name=\"wybor_$field_name\" value=ograniczony></td><td valign=middle><input type=\"text\" name=\"opis_$field_name\"></td><td valign=middle><input type=\"text\" name=\"alt_$field_name\"></td></tr>\");
  18. elseif($field_type == 'blob'):
  19. print(&#092;"<input type=\"checkbox\" name=\"edycja_$field_name\" checked></TD><td></td><td></td><td valign=middle><input type=\"text\" name=\"opis_$field_name\"></td><td valign=middle><input type=\"text\" name=\"alt_$field_name\"></td></tr>\");
  20. endif;
  21. }
  22. print(&#092;"</table>\");
  23. print(&#092;"<INPUT TYPE=submit NAME=submit VALUE=OK><INPUT TYPE=reset VALUE=Anuluj></FORM>\");
  24.  
  25.  
  26. ?>

plik docelowy
hunter_action.php
  1. <?
  2. include(&#092;"../../../inc/connect.php\");
  3. $line = mysql_list_fields($db, $table);
  4. $num_of_lines = mysql_num_fields($line);
  5. print(&#092;"liczba kolumn w tabeli: <b>$table</b> to: <b>$num_of_lines</b><br>\");
  6. for ($index = 0; $index < $num_of_lines; ++$index)
  7. {
  8. $field_name = mysql_field_name($line, $index);
  9. $field_type = mysql_field_type($line, $index);
  10. $test = '$opis_' . $field_name;
  11. print(&#092;"$test<br>\");
  12.  
  13.  
  14. }
  15.  ?>
NuLL
  1. <?php
  2.  
  3.  
  4. $test = '$opis_' . {$field_name};
  5. print(&#092;"$test\");
  6.  
  7. ?>
Bartech
Pokazuje mi błąd chyba że problemem jest php 4 a nie wersja 5
kszychu
  1. <?php
  2. echo ${'opis_'.$field_name};
  3. ?>


@Null: a cóż to za kombinacja alpejska??
Bartech
OOOOOOOOO!!!!!!!! Pierwsza klasa, dziękuję wielce!!!! jestem Twoim dłużnikiem!!!
Panie i Panowie TEMAT ZAMKNIETY!!! Brawa i podziękowania dla kszychu.

P.S. gdzie się podział przycisk pomógł mi biggrin.gif
NuLL
@kszychu - pomyłka z nawiasem - nie czytałem topicu wcześniej bo było pisane w pośpiechu.
kszychu
Cytat(Bartech @ 2005-02-18 20:19:48)
OOOOOOOOO!!!!!!!! Pierwsza klasa, dziękuję wielce!!!! jestem Twoim dłużnikiem!!!
Panie i Panowie TEMAT ZAMKNIETY!!! Brawa i podziękowania dla kszychu.

Dziękuję, dziękuję, autografy przez telefon...
@Bartech, następnym razem skożystaj z wyszukiwarki. Ten temat przewija się przez forum co jakiś czas.
bela
Cytat(Bartech @ 2005-02-18 20:19:48)
P.S. gdzie się podział przycisk pomógł mi biggrin.gif

Gdzieś w php vol. 2 winksmiley.jpg
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.