Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]checkbox i lista z bazy danych zapisywanie do innej tabeli
Forum PHP.pl > Forum > Przedszkole
timeo
Hejka. Mam taki kod jak poniżej. W tabeli sql, z której wybieram dane mam np model telefonu i cztery różne ceny, cena produktu dla klienta indywidualnego, serwisu, i cena serwisu dla klienta indywidualnego i serwisu. Teraz moje pytanie. Chciałbym, żeby wysłane zostało zapytanie do bazy danych (INSERT - wiem jak to zrobić) z checkboxami z tej bazy danych a z checkboxami szło ilość kwota i nazwa produktu. Podpowiecie jak?
  1. <?php
  2. echo $markowe['type']." Cena serwisu dla klienta indywidualnego ";?> <br>
  3. </option>
  4. <input type="checkbox" name="zaznaczonyprodukt" value="<?php echo $markowe["ID"]."zł "; ?>"><input type="text" name="produkt" value="<?php echo $markowe["service_b2c"]."zł "; ?>"> <input type="number" min="0" max="10" name="ilosc" size="2" value="Ilość" ><br>
  5. <input type="checkbox" name="zaznaczonyprodukt" value="<?php echo $markowe["ID"]."zł "; ?>"><input type="text" name="produkt" value="<?php echo $markowe["service_b2b"]."zł "; ?>"> <input type="number" min="0" max="10" name="ilosc" size="2" value="Ilość" ><br>
  6.  
  7. <?php } ?>
Tomplus
Jak potrafisz tworzyć INSERTY, to wiesz że do bazy powinieneś zapisywać produkty jako numery, a nie stringi.

Czyli:
'zaznaczonyprodukt' tutaj powinien mieć wartość TRUE lub FALSE. Cena powinna być poza INPUT, najlepiej w tagu LABEL.
'produkt' => powinien mieć ID produktu, a nie cenę.
timeo
Ok.
To zrozumiałe ale jak wyciągnąć z checkboxa no id z pętli While? Będę miał np 10 różnych typów i zaznaczę trzy z nich. Jak mogę rozpoznać te trzy?
kapslokk
Wyslij sobie tablice - czyli dla name checkboxa zamiast zaznaczonyprodukt dajesz zaznaczonyprodukt[>>tu wstaw id produktu <<].

No i to samo z iloscia.
timeo
No i poprawiłem
Mam coś takiego i za Boga nie wiem jak dobrać się do ID tego zaznaczonego.
  1. while ($wynik = $cena ->fetch()) {
  2. $memberid = $wynik['price_b2c'];
  3. $cennikserwis = $wynik['category'];
  4. $cennikserwis2 = $wynik['type'];
  5. echo $cennikserwis.' '.$cennikserwis2;
  6. ?>
  7.  
  8. <input type="checkbox" name="ID[]" value= "<?php echo $memberid; ?>">
  9. <input type="text" name="produkt" value="<?php echo $wynik["service_b2c"]."zł "; ?>">Podaj ilość:<input type="number" min="0" max="10" name="ilosc" size="2" value="Ilość" ><br>
  10. <?php
  11.  
  12. ?>
  13. <?php
  14.  
  15. }
  16. $kosztnaprawy = $db->prepare('INSERT INTO `ticketnaprawa` (`ticket`, `czesc1`, `iloscczesc1`, `kosztnettoczesc1`, `kosztbruttoczesc1`) (:ticket,:czesc1,:iloscczesc1,:kosztnettoczesc1,:kosztbruttoczesc1)');
  17. $kosztnaprawy ->bindValue(':ticket', $_POST['ticket'], PDO::PARAM_INT);
  18. $kosztnaprawy ->bindValue(':czesc1', $_POST['czesc1'], PDO::PARAM_STR);
  19. $kosztnaprawy ->bindValue(':iloscczesc1', $_POST['iloscczesc1'], PDO::PARAM_STR);
  20. $kosztnaprawy ->bindValue(':Kosztczescinetto1', $_POST['Kosztczescinetto1'], PDO::PARAM_INT);
  21. $kosztnaprawy ->bindValue(':Kosztczescibrutto1', $_POST['Kosztczescibrutto1'], PDO::PARAM_INT);
  22.  
  23. $kosztnaprawy ->execute();
  24. echo 'Dane zaktualizowane';
  25.  
  26. try {
  27. $przyjecie->execute();
  28. $kosztnaprawy->execute();
  29. header("Location: updateserwis.php");
  30. echo "Zapisano do bazy.";
  31. } catch (PDOException $exception) {
  32. die($exception->getMessage());
  33. }
  34. }


Mam coś takiego - zapisuje mi do bazy dane i jest ok. Ale!!! Miałem w label dodać ilość - niestety POST pokazuje mi tylko jedną ilość. Jak zrobić, żeby przypisywał do każdego checkboxa ilość?

  1. <label><input type="checkbox" name="name[]" value= "<?php echo $memberid; ?>">
  2. <input type="text" name="produkt" value="<?php echo $wynik["service_b2c"]."zł "; ?>">Podaj ilość:<input type="number" min="0" max="10" name="ilosc" size="2" value="Ilość" ><br></label>
kapslokk
Jeden np telefon o id 1 to trzy inputy:

  1. <input type="checkbox" name="id[1]" value="1">
  2. <input type="text" name="produkt[1]" value="100">
  3. <input type="number" name="ilosc[1]" size="2" value="Ilość" >


dla id 2 :
  1. <input type="checkbox" name="id[2]" value="1">
  2. <input type="text" name="produkt[2]" value="100">
  3. <input type="number" name="ilosc[2]" size="2" value="Ilość" >



Po wysłaniu formularza w $_POST['id'] bedziesz mial tylko te id ktore zaznaczyles. Czyli możesz zrobic

  1. foreach($_POST['id'] as $id=>$value){
  2. $_POST['produkt'][$id]; // To produkt przypisany do tego checkboxa
  3. $_POST['ilosc'][$id]; // To ilosc przypisana do tego checkboxa
  4. }
timeo

kapslokk WIELKIE dzięki - zasługujesz na piwo. specool.gif

A jeżeli chciałbym dorzucić radio i do każdego input radio dopisać wartość. Mam coś takiego w label (pętla nie działa) można wybrać tylko jedno radio z na przykład 10.
  1. <input type="checkbox" name="id[]" value="1">
  2. <input type="hidden" name="produkt[]" value="<?php echo $cennikserwis; ?>">
  3. <input type="hidden" name="type[]" value="<?php echo $cennikserwis2; ?>">
  4. <input type="number" name="ilosc[]" size="2" value="<?php echo $cennikserwis1; ?>" >
  5. <label><input type="radio" name="rodzajklienta" value="indywidualny" checked>Klient indywidualny
  6. <input type="hidden" name="kosztbrutto[]" size="2" value="<?php echo $cenab2b; ?>" >
  7. <input type="hidden" name="kosztnetto[]" size="2" value="<?php echo $serwisb2b; ?>" ></label>
  8. <label><input type="radio" name="rodzajklienta" value="winter">Serwis/ Klient biznesowy
  9. <input type="hidden" name="kosztbrutto[]" size="2" value="<?php echo $cenab2c; ?>" >
  10. <input type="hidden" name="kosztnetto[]" size="2" value="<?php echo $serwisb2c; ?>" ></label>


Zmieniłem na takie coś - jak coś to poprawcie
  1. <label><input type="radio" name="rodzajklienta" value="indywidualny" checked>Klient indywidualny
  2. <label><input type="radio" name="rodzajklienta" value="serwisowy">Serwis/ Klient biznesowy<br><br>
  3. <?php
  4. $row22 = $row['brand2']; }
  5.  
  6.  
  7. $cena = $db->prepare("SELECT * FROM cennikmobi10 WHERE Model = :brand2 Group by type");
  8. $cena->bindValue(':brand2', $row22, PDO::PARAM_STR);
  9. $cena->execute();
  10.  
  11.  
  12. while ($wynik = $cena ->fetch()) {
  13. $cenab2c = $wynik['price_b2c'];
  14. $cenab2b = $wynik['price_b2b'];
  15. $serwisb2c = $wynik['service_b2c'];
  16. $serwisb2b = $wynik['service_b2b'];
  17. $cennikserwis = $wynik['category'];
  18. $cennikserwis2 = $wynik['type'];
  19.  
  20. echo $cennikserwis.' '.$cennikserwis2. ' ';
  21. ?>
  22.  
  23. <input type="checkbox" name="id[]" value="1">
  24. <input type="hidden" name="produkt[]" value="<?php echo $cennikserwis; ?>">
  25. <input type="hidden" name="type[]" value="<?php echo $cennikserwis2; ?>">
  26. <input type="number" name="ilosc[]" size="5" value="<?php echo $cennikserwis1; ?>" >
  27.  
  28. <input type="hidden" name="kosztbrutto[]" size="2" value="<?php echo $cenab2b; ?>" >
  29. <input type="hidden" name="kosztnetto[]" size="2" value="<?php echo $serwisb2b; ?>" >
  30.  
  31. <input type="hidden" name="kosztbrutto[]" size="2" value="<?php echo $cenab2c; ?>" >
  32. <input type="hidden" name="kosztnetto[]" size="2" value="<?php echo $serwisb2c; ?>" >
  33.  
  34. <br>
  35. <?php
  36. }


+ Kod po wysłaniu formularza

  1. if ($_POST('Rodzajklienta') = "indywidualny" ""){
  2. $kosztnettob2c = $_POST['kosztnettob2c'];
  3. $kosztbruttob2c = $_POST['kosztnettob2c'];
  4.  
  5. }
  6. elseif ($_POST('Rodzajklienta')= "serwis") {
  7. $kosztnettob2c = $_POST['kosztnettob2b'];
  8. $kosztbruttob2c = $_POST['kosztnettob2b'];
  9. }
  10.  
  11. foreach($_POST['id'] as $id=>$value){
  12.  
  13. $kosztnaprawy = $db->prepare("INSERT INTO ticketnaprawa SET ticket = :ticket, czesc = :czesc, ilosc = :ilosc, kosztnetto = :kosztnetto, kosztbrutto = :kosztbrutto " );
  14. $kosztnaprawy ->bindValue(':ticket', $_POST['ticket'], PDO::PARAM_INT);
  15. $kosztnaprawy ->bindValue(':czesc', $_POST['produkt'][$id], PDO::PARAM_STR);
  16. $kosztnaprawy ->bindValue(':ilosc', $_POST['ilosc'][$id], PDO::PARAM_INT);
  17. $kosztnaprawy ->bindValue(':kosztnetto', $kosztnettob2c[$id], PDO::PARAM_INT);
  18. $kosztnaprawy ->bindValue(':kosztbrutto', $kosztbruttob2c[$id], PDO::PARAM_INT);
  19.  
  20.  
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.