Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Odczyt z formularza, problem z checkboxem
krystian19
post
Post #1





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 16.03.2007

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


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>
Go to the top of the page
+Quote Post
Spawnm
post
Post #2





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




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()
Go to the top of the page
+Quote Post
krystian19
post
Post #3





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 16.03.2007

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


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

Ten post edytował Spawnm 10.09.2009, 18:05:34
Powód edycji: [Spawnm]: bbcode ...
Go to the top of the page
+Quote Post
Spawnm
post
Post #4





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




daj to poza echem : $ulubionekolory = implode(";", $checkbox);

I poczytaj jakiś kurs bo robisz podstawowe błędy (IMG:style_emoticons/default/winksmiley.jpg)
Powód edycji: [Spawnm]:
Go to the top of the page
+Quote Post
krystian19
post
Post #5





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 16.03.2007

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


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

Ten post edytował krystian19 10.09.2009, 18:44:08
Go to the top of the page
+Quote Post
Burned
post
Post #6





Grupa: Zarejestrowani
Postów: 67
Pomógł: 8
Dołączył: 19.05.2004
Skąd: Warszawa

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


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[]' />


Ten post edytował Burned 10.09.2009, 19:02:54
Go to the top of the page
+Quote Post
krystian19
post
Post #7





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 16.03.2007

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


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??

Go to the top of the page
+Quote Post
Rymar
post
Post #8





Grupa: Zarejestrowani
Postów: 33
Pomógł: 2
Dołączył: 18.09.2008

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


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 (IMG:style_emoticons/default/smile.gif)

Ten post edytował Rymar 13.09.2009, 13:22:23
Go to the top of the page
+Quote Post
Pawel_W
post
Post #9





Grupa: Zarejestrowani
Postów: 1 675
Pomógł: 286
Dołączył: 15.06.2009
Skąd: Wieliczka

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


join albo implode da taki sam efekt
Go to the top of the page
+Quote Post
Rymar
post
Post #10





Grupa: Zarejestrowani
Postów: 33
Pomógł: 2
Dołączył: 18.09.2008

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


  1. mail("kry122211121@wp.pl", "kolory", "$tresc\n\n$signature", "From: $email");

A co masz w zmiennej $tresc ? Bo wszystko przypisujesz do $odpowiedzi...
Go to the top of the page
+Quote Post
krystian19
post
Post #11





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 16.03.2007

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


Dzięki wszystkim (IMG:style_emoticons/default/smile.gif)
nareszcie się udało (IMG:style_emoticons/default/smile.gif)

pętla foreach załatwiła sprawę (IMG:style_emoticons/default/smile.gif) , już wszystko jest OK

Pozdrawiam i jeszcze raz dzięki !





DOPISKA (IMG:style_emoticons/default/smile.gif)


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

Ostatnio pisałem, że wszystko OK, ale tak nie do końca (IMG:style_emoticons/default/tongue.gif) myslałem jednak że z tym sam sobie poradzę (IMG:style_emoticons/default/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?

Ten post edytował krystian19 17.10.2009, 18:30:49
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: 24.09.2025 - 10:11