Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Odczyt z formularza
Forum PHP.pl > Forum > Przedszkole
krystian19
Witam
Mam pytanie odnośnie formularza. Napisałem prosty formularz - jego wyniki dostaję na emaila.
odpowiedzi tekstowe (text, textarea) czy odpowiedzi z przycisku opcji (radio) przychodzą bez problemu na wskazany adres z poprawnym wynikiem.
Nie potrafię niestety napisać kodu aby doszła odpowiedź z pola wyboru (jak jest 2 lub więcej odpowiedzi)

W pliku odpowiedzialnym za przesłanie odpowiedzi np do "radio" kod wygląda tak:

$odpowiedzi = "
twój ulubiony kolor: {$radio}\n
";


dla odpowiedzi z pola wyboru zwykle
$odpowiedzi = "
twój ulubiony kolor: {$checkbox}\n
";
---> nie działa przy zaznaczeniu większej ilości odpowiedzi


Wiem, że to pewnie proste, ale nie wiem jak sobie z tym poradzić :/

Proszę o pomoc.

Pozdrawiam
Krystian

ps. przykładowy kod pliku formularza

  1. <p>twój ulubiony kolor:</p>
  2. <p>biały
  3. <input type="radio" name="radio" id="radio" value="biały" />
  4. </p>
  5. <p>zielony
  6. <input type="radio" name="radio" id="radio2" value="zielony" />
  7. </p>
  8. <p>twoje ulubione kolory:</p>
  9. <p>biały
  10. <input type="checkbox" name="checkbox" id="checkbox" value="biały" />
  11. </p>
  12. <p>zielony
  13. <input type="checkbox" name="checkbox2" id="checkbox2" value="zielony" />
  14. </p>
  15. <p>czerwony
  16. <input type="checkbox" name="checkbox3" id="checkbox3" value="czerwony" />
  17. </p>
  18. <p>czarny
  19. <input type="checkbox" name="checkbox4" id="checkbox4" value="czarny" />
  20. </p>
Spawnm
dałeś każdemu inną nazwę ... dodatkowo używaj $_GET i $_POST
A checkbox powinien ci dać tablicę więc jak chcesz na szybko wyświetlić wszystkie zaznaczone pola to użyj implode()
krystian19
heh oczywiście nazwy podałem błędne :/
Próbowałem jednak tez z samym checkboxem i tez nie działało.
Nie potrafię zastosować funkcji implode...
Próbowałem na różne sposoby np tak:
  1. $email = $_POST['email'];
  2.  
  3. $checkbox= $_POST['checkbox'];
  4.  
  5. $odpowiedzi = "
  6. twój ulubiony kolor: {$radio}\n
  7.  
  8. $ulubionekolory = implode(";", $checkbox);
  9.  
  10. ";

ale albo wyskakiwał błąd albo było bez błędu ale wyniki nie dochodziły.

Proszę jeszcze o jakąś podpowiedz. Wszystko z formularza udało mi sie ustawić oprócz właśnie tych checkboxow, ale to właśnie na nich mi najbardziej zależy.
pozdrawiam
Krystian
Spawnm
daj to poza echem : $ulubionekolory = implode(";", $checkbox);

I poczytaj jakiś kurs bo robisz podstawowe błędy winksmiley.jpg
krystian19
Tak wygląda dokładnie kod:
  1. if($_SESSION['logged_in'] == 1)
  2. {
  3. $signature = "E-mail wysłany przez:\n";
  4. $signature .= $_SESSION['name']." ".$_SESSION['surname']."\n";
  5. $signature .= "IP: ".$_SERVER['REMOTE_ADDR'];
  6. }
  7. else
  8. {
  9. $signature = "E-mail wysłany z:\n";
  10. $signature .= "IP: ".$_SERVER['REMOTE_ADDR'];
  11. }
  12. $email = $_POST['email'];
  13. $text1= $_POST['textfield3'];
  14. $text2= $_POST['textarea'];
  15. $checkbox= $_POST['checkbox'];
  16. $ulubionekolory = implode(";", $checkbox);
  17.  
  18.  
  19. $odpowiedzi = "
  20.  
  21. Email wysłany przez: {$_POST['email']}\n
  22.  
  23. twój ulubiony kolor: {$radio}\n
  24.  
  25. ulubionekolory = {$ulubionekolory}\n
  26.  
  27. ";
  28.  
  29. mail("kry122211121@wp.pl", "kolory", "$tresc\n\n$signature", "From: $email");
  30.  
  31. echo '<div id="news">? Kolory</div>';
  32. echo '<p>E-mail został wysłany - dziękuje.</p>';



komunikat:
Warning: implode() [function.implode]: Invalid arguments passed in /domains... : eval()'d code on line 16
Burned
Wyświetlony błąd dokładnie określa co jest nie tak. Podajesz nieprawidłowy argument funkcji implode. W tym przypadku zmienna $checkbox

Dodaj taki kod:
  1. echo('<pre>');
  2. print_r($checkbox);
  3. echo('</pre>');

i zobacz co jest w zmiennej - powinna być tablica. Jeśli nie jest, to formularz jest źle skonstruowany. Każdy checkbox powinien miec name wpisane w taki sposób:
  1. <input type="checkbox" name='checkbox[]' />
krystian19
Witam
Dziękuję za rady Spawnm i Burned.

Po dodaniu dodaniu [] do checkboxow i kodu od Burneda wyświetla mi się tablica z poprawnymi wynikami,np:
[checkbox] => Array
(
[0] => biały
[1] => zielony
)

Niestety znów mam problem nie potrafię zapisać tego (do kodu podanego przeze mnie powyżej) aby wyniki doszły na maila.
Tablica na maila dochodzi albo pusta albo z wartością 1 - czyli od funkcji printa.
Próbowałem na kilkanaście sposobów.
Prosiłbym już OSTATNI raz o pomoc , jak umieścić ten zapis w kodzie aby doszedł na maila??

Rymar
a daj sobie
  1. $kolory = '';
  2. foreach($checkbox as $wynik){
  3. $kolory .= $wynik.' , ';
  4. }


I potem tylko sobie wrzucasz $kolory do maila...nie wiem czy o to Ci chodziło smile.gif
Pawel_W
join albo implode da taki sam efekt
Rymar
  1. mail("kry122211121@wp.pl", "kolory", "$tresc\n\n$signature", "From: $email");

A co masz w zmiennej $tresc ? Bo wszystko przypisujesz do $odpowiedzi...
krystian19
Dzięki wszystkim smile.gif
nareszcie się udało smile.gif

pętla foreach załatwiła sprawę smile.gif , już wszystko jest OK

Pozdrawiam i jeszcze raz dzięki !





DOPISKA smile.gif


Chciałbym jeszcze raz wrócić do tematu....

Ostatnio pisałem, że wszystko OK, ale tak nie do końca tongue.gif myslałem jednak że z tym sam sobie poradzę smile.gif

po zastosowaniu przykładu od Rymara

  1. $kolory = '';
  2. foreach($checkbox as $wynik){
  3. $kolory .= $wynik.' , ';
  4. }
  5.  


uzyskałem zamierzony efekt, czyli dostaję wszystkie odpowiedzi na skrzynkę.
jednak jeśli ktoś w którymś pytaniu nie zaznaczy chociaż jednej opcji - przeglądarka wypisze błąd:


Warning: Invalid argument supplied for foreach() in /home/serwer/domains/... : eval()'d code on line ...

email z wynikami dotrze, ale bład na stronie nie wyglada najlepiej...


sprawdzałem przez print_r( $_POST ); tablice - jest poprawna. wyświetla wyniki.


jeszcze raz proszę o pomoc...

może chociaż jakaś wskazówka?
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.