Odbieranie z formularza tylko zaznaczonych checkboxów

Odbieranie z formularza tylko zaznaczonych checkboxów
LP
  • Rejestracja:ponad 2 lata
  • Ostatnio:2 miesiące
  • Postów:16
0

Dzień dobry

Proszę o pomoc.
Mam formularz z kilkoma checkboxami i chcę żeby do pliku z akcją przekazywane były jedynie te zaznaczone pola.

Z góry dzięki

jurek1980
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 2 godziny
  • Postów:3516
0

Wrzuć kod.
Tak ciężko coś doradzić.

ccwrc
  • Rejestracja:prawie 9 lat
  • Ostatnio:8 minut
  • Postów:383
0

Blokada submita w JS, zebranie wszystkich pól, które mają checked i dopiero wtedy wysyłka na serwer.

KA
  • Rejestracja:prawie 20 lat
  • Ostatnio:mniej niż minuta
  • Lokalizacja:Gorlice
3

Przecież to standardowe zachowanie. Normalnie nie zaznaczone pola nie są wysyłane i aby je wysłać trzeba kombinować np. z JS.
"Note: If a checkbox is unchecked when its form is submitted, neither the name nor the value is submitted to the server. There is no HTML-only method of representing a checkbox's unchecked state (e.g. value=unchecked). If you wanted to submit a default value for the checkbox when it is unchecked, you could include JavaScript to create a <input type="hidden"> within the form with a value indicating an unchecked state."
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/checkbox


Nie odpowiadam na PW w sprawie pomocy programistycznej.
Pytania zadawaj na forum, bo:
od tego ono jest ;) | celowo nie zawracasz gitary | przeczyta to więcej osób a więc większe szanse że ktoś pomoże.
Jay Be
  • Rejestracja:2 miesiące
  • Ostatnio:około 2 miesiące
  • Postów:1
1

name odbiera z formularza checkbox jak im nadasz name wtedy są przesyłane POST albo GET poprzez action. zapisywane są w zmiennych $_POST albo $_GET w zależnści jaką metodą to zrobisz.

edytowany 1x, ostatnio: Jay Be
LP
  • Rejestracja:ponad 2 lata
  • Ostatnio:2 miesiące
  • Postów:16
0
Jay Be napisał(a):

name odbiera z formularza checkbox jak im nadasz name wtedy są przesyłane POST albo GET poprzez action. zapisywane są w zmiennych $_POST albo $_GET w zależnści jaką metodą to zrobisz.

Przesyłanie checkboxów już działa. W ten sposób:

Kopiuj
if(isset($_POST['submit'])){
  if(!empty($_POST['check_list'])){
    foreach($_POST['check_list'] as $selected){
      echo ''.$selected."</br>";
      
      $adres = $email_klient;
      $wiadomosc = $selected;
      $od = "From: kontakt@adres.com \r\n";
      $tytul = "Oferta fotoreportażu";
    }
  }
}

Działa, wyświetla na stronie zaznaczone wiersze ile ich tam jest, dwa czy pięć...

pierwsza opcja druga opcja trzecia opcja
Teraz chcę to wszystko wysłać na email ale pojawia się problem, gdy zastosuję:

Kopiuj
mail($adres, $tytul, $wiadomosc, $od);

bo do maila wstawia tylko jedną wartość z listy, czyli w tym przypadku "trzecia opcja".

Tego już nie ogarniam..

edytowany 1x, ostatnio: Riddle
jurek1980
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 2 godziny
  • Postów:3516
1

W pętli nadpisujesz sobie zmienną wiadomosc
Z każdą interacją pętli selected ma inną wartość. Tym samym na koniec masz ostatni element.
Zrób złączenie (konkatanację) np.

Kopiuj
$wiadomosc .= $selected;

Wtedy wartości co iteracja się odpiszą. Nie wiem jakie tam masz wartości, ale pewnie trzeba będzie to jakoś ładnie sformatować, dodać spacje itd.

LP
  • Rejestracja:ponad 2 lata
  • Ostatnio:2 miesiące
  • Postów:16
0
jurek1980 napisał(a):

W pętli nadpisujesz sobie zmienną wiadomosc
Z każdą interacją pętli selected ma inną wartość. Tym samym na koniec masz ostatni element.
Zrób złączenie (konkatanację) np.

Kopiuj
$wiadomosc .= $selected;

Wtedy wartości co iteracja się odpiszą. Nie wiem jakie tam masz wartości, ale pewnie trzeba będzie to jakoś ładnie sformatować, dodać spacje itd.

Ok, teraz mam tak:

Kopiuj
if(isset($_POST['submit'])){
  if(!empty($_POST['check_list'])){
    foreach($_POST['check_list'] as $selected){
      echo ''.$selected."</br>";
      
$adres = $email_klient;
$wiadomosc .= $selected;
$od = "From: kontakt@orainsieme.com \r\n";
$tytul = "Oferta fotoreportażu";
mail($adres, $tytul, $wiadomosc, $od);

    }
  }
}

Po wybraniu np. trzech checkboxów, poprawnie wyświetlają się na stronie skryptu ale pojawia się też błąd o zmiennej.
Wysyła trzy maile, w każdym po jednym checkboxie.
Czy ja w donrym miejscu zrobiłem tę konkatenację ?

Komunikat po wysłaniu do skryptu:
(W linii 47 jest ta konkatenacja)

Zdjęcia z przygotowań Pary Młodej
Warning: Undefined variable $wiadomosc in /usr/home/pixelbird/domains/orainsieme.com/public_html/ofertomat/ofertomat.php on line 47 Zdjęcia z uroczystości w kościele lub urzędzie
Zdjęcia z przyjęcia weselnego do oczepin (do godz. 00:30)

jurek1980
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 2 godziny
  • Postów:3516
0

Tak. Ale wysyłkę maila przenieś poza pętle.
Ważne są nawiasy.
Jak ja bym to zrobił:

Kopiuj
// Treść wiadomości zadeklaruj przed pętla. Co będzie jeśli jednak żaden checkbox nie będzie zaznaczony?
$wiadomosc = '';
foreach($_POST['check_list'] as $selected){
  echo ''.$selected."</br>";
  $wiadomosc .= $selected;
}// zamykamy pętle
$adres = $email_klient;
// dalszy kod do wysyłki już poza pętla
edytowany 1x, ostatnio: jurek1980

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.