Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Deklaracja zmiennych, jak zadeklarować zmienne automatycznie?
rudald
post
Post #1





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 10.12.2008

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


Mam plik, który odwołuje się do następnego i jak w tym kolejnym zadeklarować zmienne deklarowane za pomocą funkcji for?

  1. <?
  2. $a=1;
  3. for($i=0;$i<$kolumny; $i++)
  4. {
  5. echo '<input type=text name=kolumna'.$a++.' maxlenght=20><br />';
  6. }
  7. ?>


Jak zadeklarować zmienne '$kolumna'.$a++ w dokumencie do, którego odwołuje się formularz?

Myślałem nad podobnym sposobem mianowicie:
  1. <?
  2. for($m=0; $m<$kolumny; $m++)
  3. {
  4. ++$k;
  5. $kolumna.$k = $_POST['kolumna.$k'];
  6. }
  7. ?>


Ma ktoś jakiś pomysł ?
Go to the top of the page
+Quote Post
MateuszS
post
Post #2





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


nie wiem czy dobrze cię rozumiem, ale myślę że dobrym sposobem są tu tablice

  1. <?
  2. for($m=0; $m<$kolumny; $m++)
  3. {
  4. $kolumna[$m] = $_POST['kolumna.$m'];
  5. }
  6. ?>
  7.  
Go to the top of the page
+Quote Post
Pawel_W
post
Post #3





Grupa: Zarejestrowani
Postów: 1 675
Pomógł: 286
Dołączył: 15.06.2009
Skąd: Wieliczka

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


albo
  1. $kolumna{$a++} = 'coś';

powinno zadziałać

Ten post edytował Pawel_W 4.03.2010, 20:27:10
Go to the top of the page
+Quote Post
rudald
post
Post #4





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 10.12.2008

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


Niestety żadna z odpowiedzi nie jest poprawna błędy nie występują, aczkolwiek nie działa
www.rudald.lua.pl - strona gdzie jest wrzucony ten program : )
Go to the top of the page
+Quote Post
PiotrekM
post
Post #5





Grupa: Zarejestrowani
Postów: 130
Pomógł: 6
Dołączył: 20.12.2009

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


nie wiem czy rozumiem:
  1. echo ${$kolumna.$a++};
Go to the top of the page
+Quote Post
rudald
post
Post #6





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 10.12.2008

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


To może wrzucę całą funkcję. Generalnie chcę napisać funkcję, która stworzy tabelę, na razie tylko stworzy tabelę i nada nazwy skrajnym kolumnom i wierszom tak więc pierwszy plik:

1plik
  1. <form action=tworzenietabeli.php method=post>
  2. Utwórz tabelę:
  3. <br />
  4. Ilosc Kolumn
  5. <br />
  6. <input type=text name=kolumny maxlenght=3>
  7. <br />
  8. <input type=submit value=wyslij>
  9. </form>


2 plik
  1. <form action=tworzenietabeli2.php>
  2. Utwórz tabelę:
  3. <br />
  4. Ilosc Kolumn
  5. <br />
  6. <?
  7. $kolumny = $_POST['kolumny'];
  8. echo '<input type=text name=kolumny maxlenght=3 value='.$kolumny.'>'; // zrobiłbym to w js ale niestety nie znam języka : )
  9. ?>
  10. <br />
  11. Podaj nazwy kolumn
  12. <br />
  13.  
  14. <?
  15. $kolumny = $_POST['kolumny'];
  16. $a=1;
  17. for($i=0;$i<$kolumny; $i++)
  18. {
  19. echo '<input type=text name=kolumna'.$a++.' maxlenght=20><br />'; // automatycznie deklarowane zmienne $kolumna.$a++
  20. }
  21. ?>
  22. <br />
  23. Ilosc Wierszy
  24. <br />
  25. <input type=text name=wiersze maxlenght=3>
  26. <br />
  27. <input type=submit value=wyslij>
  28. </form>



3 plik

  1. <?
  2. $kolumny = $_GET['kolumny'];
  3. $wiersze = $_GET['wiersze'];
  4.  
  5. for($m=1; $m<$kolumny; $m++) // Problem jest w tym przejściu. Nie potrafię zadeklarować 'automatycznie' numerowanych zmiennych.
  6. {
  7. $kolumna[$m] = $_GET['kolumna[$m]'];
  8. }
  9.  
  10.  
  11. $wiersze=$wiersze+1;
  12. $kolumny=$kolumny+1;
  13. $tabela[$i][$j]=array();
  14. $tabela[1][2]=$kolumna1; // rozwiązanie tymczasowe
  15. $tabela[1][3]=$kolumna2;
  16. $tabela[1][4]=$kolumna3;
  17. $tabela[1][5]=$kolumna4;
  18.  
  19. echo "<table border=1>";
  20. for ($i=1; $i<$wiersze+1; $i++)
  21. {
  22. echo '<tr>';
  23. ++$ID;
  24. $tabela[$i+1][1]=$ID;
  25. for ($j=1; $j<$kolumny+1; $j++)
  26. {
  27. echo '<td>';
  28. echo $tabela[$i][$j];
  29. echo '</td>';
  30. }
  31. echo '</tr>';
  32. }
  33. echo '</table>';
  34. ?>

www.anglialondyn.cba.pl
Zdaję sobie sprawę, że w MYSQL byłoby to prościej, jednak chcę pomęczyć się nad phpowskim htmlem : ), proszę o pomoc

Ten post edytował rudald 4.03.2010, 23:44:49
Go to the top of the page
+Quote Post
DiH
post
Post #7





Grupa: Zarejestrowani
Postów: 251
Pomógł: 34
Dołączył: 7.01.2010

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


Widzę, że używasz <br/>... Skoro już lansujesz swój kod na XHTML, to zechciej łaskawie zawierać wartości atrybutów w cudzysłów.

Najprościej pobrać wygenerowane w ten sposób wartości w trochę inny sposób:
  1. for($i = 0; $i < 5; $i++) {
  2. echo '<input type="text" name="kolumna'.$i.'" id="kolumna'.$i.'" value="wartosc '.$i.'"><br/>';
  3. }
  4. echo '<script type="text/javascript">';
  5. for($i = 0; $i < 5; $i++) {
  6. echo 'e = document.getElementById("kolumna'.$i.'").value;'.
  7. 'document.write(e+"<br/>");';
  8.  
  9. }
  10. echo '</script>';

A co dalej chcesz z tym zrobić, to już Twoja w tym głowa.

P.S. Jeżeli liczba kolumn nie jest rzędu dziesiątek lub setek, to czemu po prostu nie pobrać ich wartości ręcznie poprzez $_POST['kolumna1'], $_POST['kolumna2']...?

Ten post edytował DiH 4.03.2010, 23:48:52
Go to the top of the page
+Quote Post
rudald
post
Post #8





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 10.12.2008

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


Ze względu na tzw. wysiłek umysłowy, bo ręcznie to jest prosto wpisać, a jednak, by coś 'zautomatyzować' to już nieco trudniej - lubię rzucać sobie takie wyzwania, jednak kiedy już moja głowa zawodzi, to czas na wsparcie się forum : ).

Ok następnym razem będę pamiętał o cudzysłowie, a zupełnie z samej ciekawości, w samym języku PHP nie da rady tego zrobić ?
Go to the top of the page
+Quote Post
DiH
post
Post #9





Grupa: Zarejestrowani
Postów: 251
Pomógł: 34
Dołączył: 7.01.2010

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


Znalazłem rozwiązanie jak mniemam:
  1. <form action="form.php" method="post">
  2. <?php
  3. for($i = 0; $i < 5; $i++) {
  4. echo '<input type="text" name="kolumna'.$i.'" id="kolumna'.$i.'" value="wartosc '.$i.'"><br/>';
  5. }
  6. ?>
  7. <input type="submit" value="submit"/>
  8. </form>
  9. <?php
  10. for($i = 0; $i < 5; $i++) {
  11. $col = 'kolumna$i';
  12. eval("\$col = \"$col\";");
  13. echo $_POST[$col].'<br/>';
  14. }
Go to the top of the page
+Quote Post
Pawel_W
post
Post #10





Grupa: Zarejestrowani
Postów: 1 675
Pomógł: 286
Dołączył: 15.06.2009
Skąd: Wieliczka

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


ehh, ludzie ludzie

zawsze te same problemy....
  1. $_GET['kolumna[$m]'];

zamień na
  1. $_GET['kolumna'.$m];

i doczytaj w manualu jaka jest różnica pomiędzy " a '

Ten post edytował Pawel_W 5.03.2010, 13:21:06
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 21:34