Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Odczyt danych z powielanego formularza
Kloucek
post
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 7.10.2008

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


Witam postaram się w miarę (jak na możliwości wtorkowego poranka) zrozumiale opisać problem (IMG:http://webmade.org/forum/images/smiles/icon_wink.gif)

Mam formularz, który powiela się po wduszeniu przycisku. Nazwy poszczególnych pól zmieniają na zasadzie dodania kolejnego indeksu na końcu (prosty javascript). Jestem jeszcze dość zielony w php i nie do końca wiem jak odczytać wpisane dane.

Oczywiście manualne wpisywanie
Kod
print $team1;  
  print $team2;  
  print $team3;  
  ...  
  print $team(i tak do usranej śmierci);


byłoby zapewne głupie i da się to samo osiągnąć za pomocą jakiejś sprytnej pętelki. Dodałem w formularzy pole counter, które jest automatycznie zwiększane o 1 przy każdym dodaniu nowej lini formularza. Pierwsza linia będzie odczytywana zawsze ręcznie, ale reszta ma już indeksy na końcu. Mogę zrobić pętlę w następujący sposób:
Kod
for($i=1; $i<=$counter; $i++){
    print $team1[i];
    print $team2[i];
    print $channel[i];
    print $date[i];
    print $time[i];


Nie wiem tylko jak sprawić, aby ostatni znak stringa z nazwą zmiennej był traktowany jako indeks. I w tym drodzy forumowicze proszę was o pomoc!


formularz można sobie obejrzeć pod www.bartosz.dk/pub
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




  1. <?php
  2. for($i=1; $i<=$counter; $i++){
  3.    echo $_POST['time'.$i];
  4. }
  5. ?>

A na przyszlosc nadawaj nazwą nazwy tablicowe (z [] na koncu) to bedziesz mial ladna tablice
Go to the top of the page
+Quote Post
Kloucek
post
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 7.10.2008

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


Ok, znalazłem rozwiązanie. count($_REQUEST) jest tym czego szukałem! Dzięki za pomoc

No tak, ale natrafiłem na jeszcze jeden problem. Nie potrafię przesłać wartości counter do save.php.

Umieszczenie pola w istniejącym formularzu jakoś mi nie pasuje, bo jego nazwa i tak będzie się zmieniała razem z dodawanymi polami. A cały problem tkwi w tym, że potrzebuje tej ostatniej wartości, aby ograniczyć pętlę. Może jest jakiś sposób aby przesłać wartość zmiennej counter razem z danymi formularza przy wduszeniu send? Mam to zorganizowane tak:

javascript dodający nowe pola formularza:
Kod
function moreFields() {
     counter++;
     var newFields = document.getElementById('readroot').cloneNode(true);
     newFields.id = '';
     newFields.style.display = 'block';
     var newField = newFields.getElementsByTagName('*');
     for (var i=0;i<newField.length;i++) {
         var theName = newField[i].name;
         if (theName)
             newField[i].name = theName + counter;
        
     }
     var insertHere = document.getElementById('writeroot');
     insertHere.parentNode.insertBefore(newFields,insertHere);
     document.getElementById('counter').value = counter;
}


zwykłe pole tekstowe przechowujące jego wartość jest umieszczone tuż za divem który się powiela:
Kod
    <form method="post" action="save.php">
     <input type="text" id="counter" name="counter" />
     <span id="writeroot"></span>

     <input type="button" id="moreFields" value="Add more" />
     <input type="submit" value="Send form" />
     </form>


całość w akcji oczywiście na bartosz.dk/pub

Ten post edytował Kloucek 7.10.2008, 13:15:21
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: 3.10.2025 - 22:10