Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Lista wielokrotnego wyboru wraz z podaniem ilości sztuk
sauber94
post
Post #1





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 22.05.2015

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


Cześć.

Posiadam formularz w PHP, w którym chciałbym dodać możliwość wyboru kilku przedmiotów pobieranych z tabeli bazy danych wraz z przypisaniem ilości każdego z nich.
Ma ktoś pomysł jak to zrobić, ewentualnie jakiś przykład, którym mógłbym się oprzeć?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Neutral
post
Post #2





Grupa: Zarejestrowani
Postów: 286
Pomógł: 46
Dołączył: 10.01.2016

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


  1. <form method="get" action="">
  2. <select multiple="multiple" name="nuts[]">
  3. <option value="a" name="nuts[0]">hazel A</option>
  4. <option value="b" name="nuts[1]">hazel B</option>
  5. <option value="c" name="nuts[2]">hazel C</option>
  6. </select>
  7. <select multiple="multiple" name="costs[]">
  8. <option value="a" name="cost_vals[0]">A - 4$</option>
  9. <option value="b" name="cost_vals[1]">B - 2.5$</option>
  10. <option value="c" name="cost_vals[2]">C - 16$</option>
  11. </select>
  12. <input type="hidden" value="4" name="a"/>
  13. <input type="hidden" value="2.5" name="b"/>
  14. <input type="hidden" value="16" name="c"/>
  15. <input type="submit" />
  16. </form>


  1. <?php
  2. // handle data from form
  3.  
  4. $nuts = $_GET['nuts'] ?? [];
  5. $costs = $_GET['costs'] ?? [];
  6. $cost_vals = $_GET['cost_vals'] ?? [];
  7.  
  8. print_r($nuts);
  9. print_r($costs);
  10.  
  11. // if $nuts == $costs ...
  12.  
  13. for($i=0;count($nuts) == count($costs) && $i<count($nuts);$i++) {
  14. if($nuts[$i] == $costs[$i]) {
  15. echo $_GET[$nuts[$i]] . "<br />";
  16. }
  17. }
  18.  
  19. ?>


Cytat
Cześć.

Posiadasz może jakiś inny przykład co do listy wielokrotnego wyboru wraz z podaniem ilości sztuk?

Przykładowo obecnie w formularzu mam wybór tylko jednego materialu, wycinek mojego formularza z tym związany to:
  1. <div class="form-group">
  2. <label class="control-label col-sm-2" for="id_pracownika">Pracownik:</label>
  3. <select name="id_materialu" id="id_materialu" class="form-control">
  4. <?php
  5. foreach($materials as $material){ ?>
  6. <option value="<?=$material['id_materialu']?>"><?=$material['imie']?></option>
  7. <?php } ?>
  8. </select>
  9. </div>

Przydałoby mi się coś w stylu, że jest jedna lista wyboru, wybieram z niej dany materiał i obok wpisuję ilość. Po tym automatycznie pokazuje się niżej puste pole wyboru listy materiału tak, że znowu mogę wybrać kolejny materiał i obok wpisać ilość.

Pozdrawiam.


Proszę odpisywać w wątku, nie we wiadomościach prywatnych.

Kod
const btn = document.querySelector('button');

const vals = [[1,2,45,23],['sdf', 'bc', 'd', 'a']];

function create_el (n_el, attr, what, where) {
  let arr = [];
  for(let i=0;i<n_el;i++) {
    arr.push(document.createElement(what));
    if(attr.length == n_el) {
      arr[i].setAttribute(attr[0], attr[1]+(i+1)+'[]')
    }
    where.appendChild(arr[i]);
  }
  return arr;
}

btn.onclick = function() {
  let arr_n1 = create_el(2, ['name', 'slct'], 'select', document.querySelector('form'));

  let opt, opt2;
  for(let j=0;j<arr_n1.length;j++) {
    for(let i=0;i<vals[0].length;i++) {
      opt1 = document.createElement('option');
      opt1.value = vals[j][i];
      opt1.textContent = vals[j][i];
      arr_n1[j].appendChild(opt1);
    }
  }
};


To jest tylko wzór, nie kod, który byłby napisany starannie. Jeśli zechciałbyś skorzystać z tego kodu, najlepiej abyś go przepisał lub poprawił.

Ten post edytował Neutral 8.02.2020, 17:15:58
Go to the top of the page
+Quote Post

Posty w temacie


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: 4.10.2025 - 17:32