Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Deklaracja zmiennych
Forum PHP.pl > Forum > Przedszkole
rudald
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ł ?
MateuszS
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.  
Pawel_W
albo
  1. $kolumna{$a++} = 'coś';

powinno zadziałać
rudald
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 : )
PiotrekM
nie wiem czy rozumiem:
  1. echo ${$kolumna.$a++};
rudald
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
DiH
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']...?
rudald
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ć ?
DiH
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. }
Pawel_W
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 '
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.