Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [HTML][PHP] Chceckbox, dodatkowe parametry.
pisiorek
post
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 18.05.2011

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


Czy można za pomocą kontrolki checkbox przekazać więcej parametrów niż tylko ten w postaci Value ? Chcę zrobić na stronie kilka chceckboxów, każdy chceckbox przypisany jest do fotografii towaru, towar posiada nazwę i cenę, chciałbym żeby zaznaczenie określonych checkboxów powodowało przekazanie do skryptu php nazwy i ceny towaru jednocześnie. Standardowo zaznaczenie checkaboxa powoduje przekazanie do php tylko parametru Value, a chciałbym przekazać i cenę i nazwę.

Ten post edytował pisiorek 18.05.2011, 21:18:23
Go to the top of the page
+Quote Post
gorden
post
Post #2





Grupa: Zarejestrowani
Postów: 486
Pomógł: 101
Dołączył: 27.06.2010

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


możesz w jednym value przekazywać kilka parametrów oddzielając je czymś, a później za pomocą php je oddzielać i wykonywać na nich dalsze operacje, np.
  1. <input type=checkbox value="cos1|cos2" name="checkbox" />

  1. $cosie = explode('|', $_POST['checkbox']);
Go to the top of the page
+Quote Post
pisiorek
post
Post #3





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 18.05.2011

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


Niestety otrzymuję taki komunikat:
Warning: explode() expects parameter 2 to be string, array given in D:\xampp\...
Go to the top of the page
+Quote Post
gorden
post
Post #4





Grupa: Zarejestrowani
Postów: 486
Pomógł: 101
Dołączył: 27.06.2010

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


na pewno podałeś oba parametry? myślę, że trochę pokombinuj i powinno być okej.
Go to the top of the page
+Quote Post
pisiorek
post
Post #5





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 18.05.2011

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


Wiem gdzie jest błąd, parametr "name" jest w tym przypadku tablicą i tu jest kłopot, ale muszę go miec jako tablicę, bo na stronie musi być możliwość zaznaczania większej ilość chceckboxów na raz i potem z pomocą pętli for wylistowania wszystkich zaznaczonych elementów, da się to jakoś rozwiązać ?
Zamieszczam fragment kodu:

fragment formularza:
  1. <p><input type="checkbox" name="wybrany[]" value="foto1 , 15" /></p>
  2. <p><input type="checkbox" name="wybrany[]" value="foto2 , 10" /></p>
  3. <p><input type="checkbox" name="wybrany[]" value="foto3 , 11" /></p>


skrypt php, który ma wylistować wybrane elementy, niestety tu powstaje błąd, który pokazałem wcześniej:
  1. <?php
  2. $wybrany = explode (',', $_POST['wybrany']);
  3.  
  4. for($i = 0; $i <= count($wybrany); $i++){
  5. echo $wybrany[$i].'<br/>';
  6. }
  7.  
  8. ?>
Powód edycji: [Ociu]: Dodałem bbCode
Go to the top of the page
+Quote Post
toaspzoo
post
Post #6





Grupa: Zarejestrowani
Postów: 778
Pomógł: 84
Dołączył: 29.07.2010
Skąd: Gliwice / Pławniowice Mistrz niezmordowanej klawiatury.

Ostrzeżenie: (20%)
X----


w explode zamiast ',' daj ","

czyli

Kod
$wybrany = explode (",",$_POST['wybrany']);


Ten post edytował toaspzoo 18.05.2011, 22:30:43
Go to the top of the page
+Quote Post
gorden
post
Post #7





Grupa: Zarejestrowani
Postów: 486
Pomógł: 101
Dołączył: 27.06.2010

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


  1. foreach($_POST['wybrany'] as $numer) {
  2. $wybrany[$numer] = explode(', ', $_POST['wybrany'][$numer]);
  3. echo $numer.' - nazwa: '.$wybrany[$numer][0].', cena: '.$wybrany[$numer][1].'<br />';
  4. }
Go to the top of the page
+Quote Post
toaspzoo
post
Post #8





Grupa: Zarejestrowani
Postów: 778
Pomógł: 84
Dołączył: 29.07.2010
Skąd: Gliwice / Pławniowice Mistrz niezmordowanej klawiatury.

Ostrzeżenie: (20%)
X----


Tylko takie coś jest niebezpieczne, lepiej tutaj trzymać tylko id a w bazie reszte
Go to the top of the page
+Quote Post
pisiorek
post
Post #9





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 18.05.2011

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


Dzięki koledzy za zaangażowanie w temat, SOG-i oczywiście otrzymacie.

@gorden
postęp już jakiś jest, ale jeszcze nie wszystko działa tak jak powinno, nie do końca działa chyba funkcja explode, efekt Twojego skryptu jest taki:

foto1,15 - nazwa: , cena:
foto2,10 - nazwa: , cena:
foto3,11 - nazwa: , cena:

@toaspzoo
Cytat
Tylko takie coś jest niebezpieczne, lepiej tutaj trzymać tylko id a w bazie reszte

mógłbyś troszkę rozwinąć temat, dlaczego jest niebezpieczne, czym to grozi ?

Ten post edytował pisiorek 19.05.2011, 19:52:50
Go to the top of the page
+Quote Post
toaspzoo
post
Post #10





Grupa: Zarejestrowani
Postów: 778
Pomógł: 84
Dołączył: 29.07.2010
Skąd: Gliwice / Pławniowice Mistrz niezmordowanej klawiatury.

Ostrzeżenie: (20%)
X----


W tym wypadku każdy potencjalny kupujący może manipulować ceną i przedmiotem wg jego upodobań
Go to the top of the page
+Quote Post
gorden
post
Post #11





Grupa: Zarejestrowani
Postów: 486
Pomógł: 101
Dołączył: 27.06.2010

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


racja. może w value po prostu wstaw id aukcji i pobieraj z bazy potrzebne informacje ukrywające się pod nim. debugując stronę jakimś firebugiem czy czymś, można manipulować wszystkimi parametrami, między innymi value, więc każdy będzie mógł wpisać co chce.

Ten post edytował gorden 19.05.2011, 20:45:18
Go to the top of the page
+Quote Post
toaspzoo
post
Post #12





Grupa: Zarejestrowani
Postów: 778
Pomógł: 84
Dołączył: 29.07.2010
Skąd: Gliwice / Pławniowice Mistrz niezmordowanej klawiatury.

Ostrzeżenie: (20%)
X----


Albo WebDeveloperem
Go to the top of the page
+Quote Post
pisiorek
post
Post #13





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 18.05.2011

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


OK, dzięki za pomoc.

Koledzy jeszcze jedna prośba o pomoc, zrobiłem prostą bazę danych jednak jest problem z tymi checkboxami, bo jeśli parametr name mam ustawiony na "id[]", to niestety skrypt php tego nie obsługuje, tzn. nie wyświetla wyników. Jeżeli zmienię tylko parametr name na samo "id" to wtedy wszystko działa, ale nie można wyświetlić więcej niż jednego elementu, a chodzi o to że mają się wyświetlać wszystkie zaznaczone checboxy. Jak to naprawić, żeby można było zaznaczać więcej niż jeden ?
Poniżej kod formularza:
  1. <form action="zamowienie.php" method='post'>
  2. <input type="checkbox" name="id[]" value="1" />
  3. <input type="checkbox" name="id[]" value="2" />
  4. <input type="checkbox" name="id[]" value="3" />
  5. <input type="submit" value="Wyslij" />
  6. </form>


Poniżej kod php:
  1. <?php
  2. $id = $_POST['id'];
  3.  
  4. if(!$id){
  5. echo('Nic nie wybrano');
  6. }
  7.  
  8.  
  9. mysql_connect('localhost','root','') or die (mysql_error());
  10. mysql_select_db('bellaflor') or die (mysql_error());
  11.  
  12. $sql = " SELECT * from ceny WHERE id = '$id' ";
  13. $result = mysql_query($sql) or die (mysql_error());
  14.  
  15. while( $row = mysql_fetch_array( $result ) ){
  16. echo ("$row[Nazwa], $row[Cena]<br>");
  17. }
  18. ?>


Ten post edytował Ociu 22.05.2011, 22:46:22
Powód edycji: [Ociu]: Poprawiłem bbCode
Go to the top of the page
+Quote Post
toaspzoo
post
Post #14





Grupa: Zarejestrowani
Postów: 778
Pomógł: 84
Dołączył: 29.07.2010
Skąd: Gliwice / Pławniowice Mistrz niezmordowanej klawiatury.

Ostrzeżenie: (20%)
X----


Daj w checkboxie name = "1", "2", "3" itd...

Potem sprawdzaj zaznaczenia issetami, czyli

if(isset($_POST['1'])) { ... }



Ten post edytował toaspzoo 22.05.2011, 08:42:45
Go to the top of the page
+Quote Post
pisiorek
post
Post #15





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 18.05.2011

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


Rozumiem, że w tym przypadku ten fragment kodu
Kod
if(isset($_POST['1'])) { ... }
będzie musiał być użyty dla każdego checkboxa. Jest to o tyle kłopotliwe, że będzie tego docelowo kilkadziesiąt sztuk.
Go to the top of the page
+Quote Post
toaspzoo
post
Post #16





Grupa: Zarejestrowani
Postów: 778
Pomógł: 84
Dołączył: 29.07.2010
Skąd: Gliwice / Pławniowice Mistrz niezmordowanej klawiatury.

Ostrzeżenie: (20%)
X----


to zrób tworzenie pól w php i sprawdzanie
Go to the top of the page
+Quote Post
Ociu
post
Post #17





Grupa: Moderatorzy
Postów: 1 566
Pomógł: 37
Dołączył: 14.05.2003
Skąd: Kraków




Proponuje abyście zaczęli używać bbCode, bo skończy się zamknięciem tematu.
Go to the top of the page
+Quote Post
pisiorek
post
Post #18





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 18.05.2011

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


Cytat("toaspzoo")
to zrób tworzenie pól w php i sprawdzanie
Mógłbyś troszkę przybliżyć ten sposób ? Nie do końca rozumiem, jak to ugryźć.
Go to the top of the page
+Quote Post
gorden
post
Post #19





Grupa: Zarejestrowani
Postów: 486
Pomógł: 101
Dołączył: 27.06.2010

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


pisiorek, użyj foreach. ta pętla przeleci przez całą tablicę $_POST i samodzielnie sprawdzi, czy istnieje. możesz w niej np przypisać do oddzielnej tablicy zaznaczone checkboxy i operować na nich, o ile dobrze zrozumiałem.

Ten post edytował gorden 23.05.2011, 16:13:58
Go to the top of the page
+Quote Post

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: 22.08.2025 - 22:49