Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [HTML][MySQL][PHP] Pętla while i checkbox obowiązkowe zaznaczenie checkbox (jednego)
timeo
post 20.03.2018, 09:08:51
Post #1





Grupa: Zarejestrowani
Postów: 71
Pomógł: 0
Dołączył: 28.06.2011

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


Witam

Dzisiaj borykam się z takim problemem. Mam w pętli while kilka checkboxów i chciałbym, żeby klient zaznaczył (żeby to było obowiązkowe) jednego checkbox. Gdy wpisuję w tabeli przy checkbox required to formularz każe zaznaczyć wszystkie opcje.

Poniżej kod.

  1. <div class="form-group">
  2. <?php
  3. include('configbase.php');
  4. $q = $_GET['q'];
  5. $stmt = $db->query("SELECT * FROM cennik2019 WHERE PELNANAZWA = '".$q."' GROUP BY EAN ");
  6. $stmt3 = $db->query("SELECT * FROM cennik2019 WHERE PELNANAZWA = '".$q."' AND ALERT <> 'ALERT' GROUP BY PRODUKT ");
  7.  
  8. while($row2 = $stmt3->fetch()){
  9.  
  10. ?>
  11. <br>
  12.  
  13. <input type="checkbox" required name="category['<?php echo $row2['ID']; ?>']" id="category['<?php echo $row2['ID']; ?>']"><?php echo " ".$row2['TYP'] . " " . $row2['INFO']. " " . $row2['RAMKA']. " " . $row2['KOLOR']; ?>
  14.  
  15. <input type="hidden" name="MARKA" value="<?php echo $row2['MARKA']; ?>" readonly>
  16. <input type="hidden" name="MODEL" value="<?php echo $row2['MODEL']; ?>" readonly>
  17. <input type="hidden" name="KATEGORIA['<?php echo $row2['ID']; ?>']" value="<?php echo $row['KATEGORIA']; ?>" readonly>
  18. <input type="hidden" name="CZESCTYP['<?php echo $row2['ID']; ?>']" value="<?php echo $row2['CZESCTYPE']; ?>" readonly>
  19. <input type="hidden" name="EAN['<?php echo $row2['ID']; ?>']" value="<?php echo $row2['EAN']; ?>" readonly>
  20. <input type="hidden" name="SKU['<?php echo $row2['ID']; ?>']" value="<?php echo $row2['SKU']; ?>" readonly>
  21.  
  22. <input type="hidden" name="TYP" value="<?php echo $row2['TYP']; ?>" readonly> <?php echo $row2['PRODUKT'].'<br>';
  23. }?>
  24. </div>
Go to the top of the page
+Quote Post
olszam
post 20.03.2018, 09:57:53
Post #2





Grupa: Zarejestrowani
Postów: 342
Pomógł: 23
Dołączył: 20.01.2011
Skąd: Chełm

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


Bo dla każdego checkboxa przypisujesz required i źle to robisz bo w tej chwili wymagasz by każdy chceckbox był obowiązkowo zaznaczony.
Go to the top of the page
+Quote Post
trueblue
post 20.03.2018, 10:04:23
Post #3





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


Zmień na typ radio.


--------------------
Go to the top of the page
+Quote Post
timeo
post 20.03.2018, 10:14:55
Post #4





Grupa: Zarejestrowani
Postów: 71
Pomógł: 0
Dołączył: 28.06.2011

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


Ok. Radio
Wprowadzam takie coś
  1.  
  2. <input type="radio" name="category" id="category['<?php echo $row2['ID']; ?>']"><?php echo " ".$row2['TYP'] . " " . $row2['INFO']. " " . $row2['RAMKA']. " " . $row2['KOLOR']; ?>

a co z resztą ukrytych danych (z pól inout hidden), żeby zostały przekazane do następnego kroku?
  1. <input type="hidden" name="MARKA" value="<?php echo $row2['MARKA']; ?>" readonly>
  2. <input type="hidden" name="MODEL" value="<?php echo $row2['MODEL']; ?>" readonly>
  3. <input type="hidden" name="KATEGORIA['<?php echo $row2['ID']; ?>']" value="<?php echo $row['KATEGORIA']; ?>" readonly>
  4. <input type="hidden" name="CZESCTYP['<?php echo $row2['ID']; ?>']" value="<?php echo $row2['CZESCTYPE']; ?>" readonly>
  5. <input type="hidden" name="EAN['<?php echo $row2['ID']; ?>']" value="<?php echo $row2['EAN']; ?>" readonly>
  6. <input type="hidden" name="SKU['<?php echo $row2['ID']; ?>']" value="<?php echo $row2['SKU']; ?>" readonly>
  7.  
  8. <input type="hidden" name="TYP" value="<?php echo $row2['TYP']; ?>" readonly> <?php echo $row2['PRODUKT'].'<br>';
Go to the top of the page
+Quote Post
trueblue
post 20.03.2018, 10:26:54
Post #5





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


A nie są przesyłane?

Atrybut readonly dla pola hidden nie jest potrzebny i nie jest to również sposób na zabezpieczenie przed modyfikacją zawartości. Większość pól ma wartości z rekordu o tym samym id kategorii co wybrana kategoria, więc możesz je odczytać z bazy w drugim kroku. Wyjątkiem jest wartość KATEGORIA, ale tu chyba pomyliłeś się.


--------------------
Go to the top of the page
+Quote Post
timeo
post 20.03.2018, 10:34:32
Post #6





Grupa: Zarejestrowani
Postów: 71
Pomógł: 0
Dołączył: 28.06.2011

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


Dopisanie wartości do radio buttona poniższego powoduje, że mogę zaznaczyć kilka opcji.
  1. name="category['<?php echo $row2['ID']; ?>']"


Go to the top of the page
+Quote Post
trueblue
post 20.03.2018, 10:36:15
Post #7





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


Bo grupa radio ma mieć wspólną nazwę.
W jaki celu nadajesz nazwę tablicową, skoro radio i tak przekazuje jedną wartość?


--------------------
Go to the top of the page
+Quote Post
timeo
post 20.03.2018, 10:41:22
Post #8





Grupa: Zarejestrowani
Postów: 71
Pomógł: 0
Dołączył: 28.06.2011

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


Radio name jest
  1. name="categoria"

Ale var_dump pokazuje wszysttko co wywaliło z tabeli w przypadku checbkoxa jest tylko dana kategoria a nie wszystkie.
Go to the top of the page
+Quote Post
trueblue
post 20.03.2018, 10:43:29
Post #9





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


"Wszystko co wywaliło z tabeli", czyli co dokładnie?


--------------------
Go to the top of the page
+Quote Post
timeo
post 20.03.2018, 10:46:57
Post #10





Grupa: Zarejestrowani
Postów: 71
Pomógł: 0
Dołączył: 28.06.2011

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


Proszę
  1. ["KATEGORIA"]=> array(17) { ["'37'"]=> string(0) "" ["'2026'"]=> string(0) "" ["'680'"]=> string(0) "" ["'681'"]=> string(0) "" ["'682'"]=> string(0) "" ["'792'"]=> string(0) "" ["'875'"]=> string(0) "" ["'874'"]=> string(0) "" ["'879'"]=> string(0) "" ["'878'"]=> string(0) "" ["'876'"]=> string(0) "" ["'880'"]=> string(0) "" ["'1339'"]=> string(0) "" ["'1342'"]=> string(0) "" ["'1340'"]=> string(0) "" ["'1341'"]=> string(0) "" ["'2059'"]=> string(0) "" } ["CZESCTYP"]=> array(17) { ["'37'"]=> string(7) "Bateria" ["'2026'"]=> string(3) "PCB" ["'680'"]=> string(5) "Frame" ["'681'"]=> string(5) "Frame" ["'682'"]=> string(5) "Frame" ["'792'"]=> string(15) "Szklo hartowane" ["'875'"]=> string(5) "Glass" ["'874'"]=> string(5) "Glass" ["'879'"]=> string(5) "Glass" ["'878'"]=> string(5) "Glass" ["'876'"]=> string(5) "Glass" ["'880'"]=> string(5) "Glass" ["'1339'"]=> string(7) "Fullset" ["'1342'"]=> string(19) "Fullset with frame " ["'1340'"]=> string(7) "Fullset" ["'1341'"]=> string(19) "Fullset with frame " ["'2059'"]=> string(6) "Socket" } ["EAN"]=> array(17) { ["'37'"]=> string(13) "2256624100345" ["'2026'"]=> string(13) "2266624101402" ["'680'"]=> string(13) "2040130626013" ["'681'"]=> string(13) "2040130626020" ["'682'"]=> string(13) "2040130626044" ["'792'"]=> string(13) "2276624100695" ["'875'"]=> string(13) "2020130326021" ["'874'"]=> string(13) "2020130326014" ["'879'"]=> string(13) "2020130326113" ["'878'"]=> string(13) "2020130326090" ["'876'"]=> string(13) "2020130326045" ["'880'"]=> string(13) "2020130326151" ["'1339'"]=> string(13) "2020130126027" ["'1342'"]=> string(13) "2020130127093" ["'1340'"]=> string(13) "2020130126058" ["'1341'"]=> string(13) "2020130127055" ["'2059'"]=> string(13) "2266624101211" } ["SKU"]=> array(17) { ["'37'"]=> string(0) "" ["'2026'"]=> string(5) "BD023" ["'680'"]=> string(21) "FRA-SAMS40-AAA-NF-SIL" ["'681'"]=> string(21) "FRA-SAMS45-AAA-NF-SIL" ["'682'"]=> string(20) "FRA-SAMS4-AAA-NF-SIL" ["'792'"]=> string(0) "" ["'875'"]=> string(20) "GLA-SAMS4-AAA-NF-WHI" ["'874'"]=> string(20) "GLA-SAMS4-AAA-NF-BLK" ["'879'"]=> string(20) "GLA-SAMS4-AAA-NF-RED" ["'878'"]=> string(20) "GLA-SAMS4-AAA-NF-VIO" ["'876'"]=> string(20) "GLA-SAMS4-AAA-NF-BLU" ["'880'"]=> string(20) "GLA-SAMS4-AAA-NF-PNK" ["'1339'"]=> string(20) "LCD-SAMS4-AAA-NF-WHI" ["'1342'"]=> string(21) "LCD-SAMS45-AAA-WF-WHI" ["'1340'"]=> string(20) "LCD-SAMS4-AAA-NF-DBL" ["'1341'"]=> string(20) "LCD-SAMS4-AAA-WF-DBL" ["'2059'"]=> string(5) "US029" }
Go to the top of the page
+Quote Post
trueblue
post 20.03.2018, 10:48:48
Post #11





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


Skoro nie ograniczyłeś danych do wybranej w radio kategorii, to czego oczekujesz?


--------------------
Go to the top of the page
+Quote Post
timeo
post 20.03.2018, 11:06:49
Post #12





Grupa: Zarejestrowani
Postów: 71
Pomógł: 0
Dołączył: 28.06.2011

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


Ok. Chyba ogarnąłem - prośba o weryfikację
KOD
  1. <?php
  2. include('configbase.php');
  3. $q = $_GET['q'];
  4. $stmt = $db->query("SELECT * FROM cennik2019 WHERE PELNANAZWA = '".$q."' GROUP BY EAN ");
  5. $stmt3 = $db->query("SELECT * FROM cennik2019 WHERE PELNANAZWA = '".$q."' AND ALERT <> 'ALERT' GROUP BY PRODUKT ");
  6.  
  7. while($row2 = $stmt3->fetch()){
  8. $ID = $row2['ID'];
  9. ?>
  10. <br>
  11.  
  12. <input type="radio" name="category" id="category['<?php echo $row2['ID']; ?>']"><?php echo " ".$row2['TYP'] . " " . $row2['INFO']. " " . $row2['RAMKA']. " " . $row2['KOLOR']; ?>
  13. <?php
  14. $stmt4 = $db->query("SELECT * FROM cennik2019 WHERE ID = '".$ID."' ");
  15.  
  16. while($row3 = $stmt4->fetch()){
  17. ?>
  18. <input type="hidden" name="MARKA" value="<?php echo $row3['MARKA']; ?>" >
  19. <input type="hidden" name="MODEL" value="<?php echo $row3['MODEL']; ?>" >
  20. <input type="hidden" name="KATEGORIA" value="<?php echo $row3['KATEGORIA']; ?>" >
  21. <input type="hidden" name="CZESCTYP" value="<?php echo $row3['CZESCTYPE']; ?>" >
  22. <input type="hidden" name="EAN" value="<?php echo $row3['EAN']; ?>" >
  23. <input type="hidden" name="SKU" value="<?php echo $row3['SKU']; ?>" >
  24.  
  25. <input type="hidden" name="TYP" value="<?php echo $row3['TYP']; ?>" > <?php echo $row3['PRODUKT'].'<br>';
  26. }
  27. }?>





  1. ["PELNANAZWA"]=> string(22) "Samsung Galaxy S5 mini" ["MARKA"]=> string(7) "Samsung" ["MODEL"]=> string(14) "Galaxy S5 mini" ["KATEGORIA"]=> string(6) "Szybki" ["CZESCTYP"]=> string(5) "Glass" ["EAN"]=> string(13) "2020133326059" ["SKU"]=> string(21) "GLA-SAMS5M-AAA-NF-DBL" ["TYP"]=> string(6) "Szybka" ["category"]=> string(2) "on"
Go to the top of the page
+Quote Post
trueblue
post 20.03.2018, 11:11:53
Post #13





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


Nadal przesyłasz dane w polach hidden, które są niepotrzebne w tym momencie.


--------------------
Go to the top of the page
+Quote Post
timeo
post 20.03.2018, 11:28:02
Post #14





Grupa: Zarejestrowani
Postów: 71
Pomógł: 0
Dołączył: 28.06.2011

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


Wydawało mi się, że tak jest dobrze. Zwłaszcza, że klient nie może tego widzieć.
Input type=text?
Go to the top of the page
+Quote Post
trueblue
post 20.03.2018, 11:38:07
Post #15





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


W poście #5 o tym napisałem.


--------------------
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 Wersja Lo-Fi Aktualny czas: 24.04.2024 - 11:35