Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Formularz i dane umieszczone w pętli, Jak odczytać nazwę pola w formularzu gdy dane w nim zostały umieszczon
szczabik
post
Post #1





Grupa: Zarejestrowani
Postów: 226
Pomógł: 1
Dołączył: 13.05.2008

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


Witam mam poważny problem
Z bazy danych umieszczam dane w formularzu i problem z tym że nie wiem jak odczytać pola mogę jedynie ostanie pole odczytać

  1. <?php
  2. echo "
  3. <form name='userform' method='post'>
  4. <table align='center' cellpadding='0' cellspacing='0' class='tbl'>
  5. <tr>
  6. <td width='100' align='center'>Produkt</td>
  7. <td width='100' align='center'>Ilość</td>
  8. <td width='100' align='center'>Prowizja</td>
  9. </tr>"; 
  10.  
  11. $wynik = dbquery("SELECT * FROM ".$db_prefix."prowizja ORDER BY produkt_nazwa ASC");
  12. if(dbrows($wynik) > 0) {
  13. while($r = dbarray($wynik))
  14. {
  15.  
  16. echo "<tr>
  17. <td width='100' align='center'>".$r['produkt_nazwa']."</td><td width='100' align='center'>
  18. <input type='text' name='ilosc' maxlength='100' class='textbox' style='width: 30px;'>
  19. </td><td width='100' align='center'>".$r['prowizja']."</td>
  20. </tr>";
  21.  
  22. }
  23. } else { echo "<tr><td width='100' align='center'colspan='3'>brak danych</td></tr>"; }
  24.  
  25. $suma = dbquery("SELECT SUM(prowizja) FROM ".$db_prefix."prowizja"); 
  26.  
  27. echo "
  28. <tr>
  29. <td width='100' align='center'>Suma</td>
  30. <td width='100' align='center'></td>
  31. <td width='100' align='center'>".dbresult($suma, 0)."</td>
  32. </tr>
  33.  
  34.  
  35. <tr>
  36. <td align='center' colspan='3'>
  37. <input type='submit' name='ile' value='Zapisz raport' class='button'>
  38. </td>
  39. </tr>
  40. </table>
  41. </form>";
  42. ?>


I jak odczytać teraz powiedzmy gdy mam 6 albo 8 rekordów w bazie to mam 6 lub 8 pul typu type='text' i nie wiem jak za pomocą $ilosc = POST['ilosc']; odczytać co użytkownik wpisał w te 6 pul albo gdy mam 8 rekordów to jak odczytać to

Chodzi mi dokładniej o tej kod
  1. <?php
  2. while($r = dbarray($wynik))
  3. {
  4.  
  5. echo "<tr>
  6. <td width='100' align='center'>".$r['produkt_nazwa']."</td><td width='100' align='center'>
  7. <input type='text' name='ilosc' maxlength='100' class='textbox' style='width: 30px;'>
  8. </td><td width='100' align='center'>".$r['prowizja']."</td>
  9. </tr>";
  10.  
  11. }
  12. ?>


Gdy mam więcej rekordów w bazie to mam więcej pól
Przedstawię na screenie o co dokładnie chodzi



Ten post edytował szczabik 2.07.2008, 14:54:56
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
Shili
post
Post #2





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

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


Kod
name='ilosc'

W kodzie masz coś takiego, w pętli każda kolejna wartość nadpisze poprzednią, musisz więc zrobić z tego tablicę. Uprzedzając (być może) pytanie jak:
Kod
name='ilosc[]'
Go to the top of the page
+Quote Post
JoShiMa
post
Post #3





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

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


Potem odczytujesz ze zmiennej $_POST['ilosc'][1], $_POST['ilosc'][2], $_POST['ilosc'][3] itd.

Ten post edytował JoShiMa 2.07.2008, 15:15:02


--------------------
Go to the top of the page
+Quote Post
szczabik
post
Post #4





Grupa: Zarejestrowani
Postów: 226
Pomógł: 1
Dołączył: 13.05.2008

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


Zrobiłem tak i
  1. <?php
  2. $ilosc = strip_tags(trim($_POST['ilosc'][0]));
  3. $ilosc1 = strip_tags(trim($_POST['ilosc'][1]));
  4. ?>

działa ale teraz jak dodam więcej rekordów do bazy to mam więcej pul i jak zrobić abym ręcznie nie musiał znowu dawać kodu np
  1. <?php
  2. $ilosc3 = strip_tags(trim($_POST['ilosc'][3]));
  3. ?>


Myślę że trzeba zliczyć ile mam rekordów w bazie i potem ten kod
  1. <?php
  2. $ilosc = strip_tags(trim($_POST['ilosc'][0]));
  3. ?>

umieść w pętli by się powtarzał tyle ile mam rekordów ale za bardzo nie wiem jak to zrobić. Rekrody w bazie za pomocą count umiem zliczyć

Ten post edytował szczabik 2.07.2008, 15:50:55
Go to the top of the page
+Quote Post
JoShiMa
post
Post #5





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

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


Możesz nawet zliczyć ile masz tych pól po przetworzeniu wormularza. Count na zmiennej $_POST['nazwa'] powinno zadziałać. Zawsze jeszcze możesz skorzystać z pętli foreach w której nie musisz podawać ilości przebiegów, bo wykonuje się ona na wszystkich elementach tablicy.


--------------------
Go to the top of the page
+Quote Post
szczabik
post
Post #6





Grupa: Zarejestrowani
Postów: 226
Pomógł: 1
Dołączył: 13.05.2008

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


Zrobiłem tak i błąd wywala
  1. <?php
  2. foreach($ilosc as $_POST['ilosc'] => $wartosc)
  3. echo '$ilosc['.$_POST['ilosc'].'] = '.$wartosc.'<br>';
  4. ?>

I nie mam pojecia jak to zrobić może ktoś pomóc
Go to the top of the page
+Quote Post
JoShiMa
post
Post #7





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

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


Ech...
  1. <?php
  2. foreach($_POST['ilosc'] as $klucz=>$wartosc){
  3. echo "$klucz -> $wartosc <br/>";
  4. }
  5. ?>


Ten post edytował JoShiMa 3.07.2008, 07:37:07


--------------------
Go to the top of the page
+Quote Post
szczabik
post
Post #8





Grupa: Zarejestrowani
Postów: 226
Pomógł: 1
Dołączył: 13.05.2008

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


I teraz chciał bym to wstawić w jednym ciągu czyli jak unser wpisze w pole 1 np. 2 i w pole 2 np. 5 to chciał bym otrzymać $wartosc = 2,5 żebym mi to łączyło w 1 ciąg wiem że trzeba użyć kropki ale nie wiem jak w tym przypadku to zrobić
Go to the top of the page
+Quote Post
JoShiMa
post
Post #9





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

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


Naprawdę to takie trudne?
  1. <?php
  2. $str = '';
  3. foreach($_POST['ilosc'] as $klucz=>$wartosc){
  4. $str .= "$wartosc,";
  5. }
  6. ?>


Powiedz co chcesz napisać to napiszemy to za Ciebie, będzie szybciej aaevil.gif

Ten post edytował JoShiMa 3.07.2008, 09:08:43


--------------------
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 21.08.2025 - 10:49