Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][PHP] Chcebox, formularz
Forum PHP.pl > Forum > Przedszkole
desho
Witam.
Mam problem z kodem formularza z walidacją w js, znalazłem gotowca, trochę go przerobiłem, ostylowałem w css, wszystko pięknie działa,
wysyła wiadomości ze zwykłych type="text", ale potrzebuje dodać do niego checkboxy i tu pojawia się problem bo za nic nie mogę ogarnąć jaki kod dodać,
żeby wybrane przychodziły na maila. Przeszukałem całe google po słowach kluczowych, ale nie znalazłem rozwiązania lub po prostu go nie rozumiem.

Proszę o pomoc. Za pewne to coś banalnego, ja się poddaje.

Kawałek kodu w HTML:
  1. <form id="contact" name="contact" method="post" novalidate="novalidate">
  2. <label for="name" id="name">Imie<span class="required">*</span>
  3. </label>
  4. <input type="text" name="name" id="name" size="30" value="" required="">
  5. <label for="email" id="email">Email<span class="required">*</span>
  6. </label>
  7. <input type="text" name="email" id="email" size="30" value="" required="">
  8.  
  9. <label for="Message" id="message">Wiadomość<span class="required">*</span>
  10. </label>
  11. <textarea name="message" id="message" required=""></textarea>
  12.  
  13. <span class="txt">Przykładowe pytanie?</span>
  14. <label class="label">
  15. <input type="checkbox"/>
  16. <span>Przykład1</span>
  17. </label>
  18. <label class="label">
  19. <input type="checkbox"/>
  20. <span>Przykład2</span>
  21. </label>
  22.  
  23. <input id="submit" type="submit" name="submit" value="Send">
  24. </form>


Kod PHP
  1. <?php
  2.  
  3. $to = "email@email.pl";
  4. $from = $_REQUEST['email'];
  5. $name = $_REQUEST['name'];
  6. $headers = "From: $from \r\n";
  7. $headers .= 'Content-type: text/html; charset=UTF-8'."\r\n";
  8. $headers .= 'Content-Transfer-Encoding: 8bit'."\r\n";
  9. $subject = "Wiadomość z formularza - $name";
  10.  
  11. $fields = array();
  12. $fields{"name"} = "Nazwa:";
  13. $fields{"email"} = "E-mail:";
  14. $fields{"message"} = "Wiadomość:";
  15.  
  16. $body = "
  17.  
  18. <div class='text'>";
  19. foreach($fields as $a => $b){
  20. $body .= sprintf("%20s <div class=\"odp\">%s</div>",$b,$_REQUEST[$a]);
  21. }
  22.  
  23. $send = mail($to, $subject, $body, $headers);
  24.  
  25. ?>


Php trochę odchudziłem z css i html żeby łatwiej się czytało.
Geniesis
input type="checkbox' musi mieć ustawione jakieś name="", najlepiej gdy jest to tablica(wiele elem, można wybrać), jeżeli nic się nie zaznaczy to na serwer nic nie przyjdzie dlatego dla walidacji (gdy pole obowiązkowe) dodać ukryty input np:
  1. <input type="hidden" name="category" value="1"> // będzie wiadomo, że jest checkbox jakiś
  2. <input type="checkbox" name="categoryBox[]" value="tekst"> // jeżeli zazn. opcja to przyjdzie jako elem. tablicy


reasumując przypadki:
użykownik nic nie zaznaczy => pusto
użytkownik zaznaczy 1 z 5 => 1 elem w tablicy
użytkownik zaznaczy 3 z 5 => 3 elem w tablicy
motyl-pl
  1. <span class="txt">Przykładowe pytanie?</span>
  2. <label class="label">
  3. <input type="checkbox" name="odpowiedz" value="1" />
  4. <span>Przykład1</span>
  5. </label>
  6. <label class="label">
  7. <input type="checkbox" name="odpowiedz" value="2" />
  8. <span>Przykład2</span>
  9. </label>


  1. <?php
  2. $odpowiedz = $_POST['odpowiedz'];
  3. if($odpowiedz and $odpowiedz == 1)
  4. $odpowiedz_txt = 'Przykład 1';
  5. elseif($odpowiedz and $odpowiedz == 2)
  6. $odpowiedz_txt = 'Przyklad 2';
  7. ?>
desho
@Geniesis
Dla checkboxów nie potrzebna mi walidacja.
Robiłem tak jak podałeś, tzn. dawałem name dla chceckboxów np. cat[] i ustawiałem value
Do php dopisywałem
  1. $fields{"cat"} = "Przykładowe pytanie?";

I na maila zamiast wybranego tekstu z checkboxa/ów przychodzi mi: array

Ogólnie to jestem zielony w php i uczę się jak coś muszę zrobić/przerobić, a teraz prawdopodobnie coś popsułem

@motyl-pl
zależy mi na tym, żeby kod php pasował już do tego istniejącego, tzn. nawet jakbym miał użyć tego kodu co podałeś to nie mam pojęcia gdzie go wstawić ^^, ale dziękuje za odpowiedź
Geniesis
  1. <input type="checkbox" name="cat[]" value="test1">test1


Po zaznaczeniu by dostać się do tego robię:
  1. var_dump($_POST['cat'][0]);


by móc dobrać się do całej tablicy dynamicznie można zrobić pętlę:
  1. foreach ($_POST['cat'] as $index => $value) {
  2. var_dump($value);
  3. }


z warunkiem :
  1. $question = array();
  2. foreach ($_POST['cat'] as $index => $value) {
  3. if($value == 1) {
  4. $question[] = 'przykładowe pytanie1 ';
  5. }


Później z otrzymaną tablicą z pytaniami możesz robić co chcesz np zrobić z niej listę wypunktowaną:
  1.  
  2. $html = '<ul>';
  3. foreach ($question as $index => $value) {
  4. $html .= '<li>' . $value . '</li>';
  5. }
  6. $html .= '</ul'>;
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.