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
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
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
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:
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ę:
mail($adres, $tytul, $wiadomosc, $od);
bo do maila wstawia tylko jedną wartość z listy, czyli w tym przypadku "trzecia opcja".
Tego już nie ogarniam..
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.
$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.
jurek1980 napisał(a):
W pętli nadpisujesz sobie zmienną
wiadomosc
Z każdą interacją pętliselected
ma inną wartość. Tym samym na koniec masz ostatni element.
Zrób złączenie (konkatanację) np.$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:
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)
Tak. Ale wysyłkę maila przenieś poza pętle.
Ważne są nawiasy.
Jak ja bym to zrobił:
// 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
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.