Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Formularz i dane umieszczone w pętli
Forum PHP.pl > Forum > Przedszkole
szczabik
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

Shili
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[]'
JoShiMa
Potem odczytujesz ze zmiennej $_POST['ilosc'][1], $_POST['ilosc'][2], $_POST['ilosc'][3] itd.
szczabik
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ć
JoShiMa
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.
szczabik
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
JoShiMa
Ech...
  1. <?php
  2. foreach($_POST['ilosc'] as $klucz=>$wartosc){
  3. echo "$klucz -> $wartosc <br/>";
  4. }
  5. ?>
szczabik
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ć
JoShiMa
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
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.