Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Formularz z dwoma przyciskami submit
se6e
post
Post #1





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 23.03.2014

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


Witam, chciałbym aby formularz wysyłał dane z dwóch przycisków.

Czyli mamy BUTTON1 oraz BUTTON2

Jeśli nacisnę BUTTON1 to temat wiadomości będzie mieć wartość przypisaną do tego przycisku czyli np. "Wiadomość z BUTTON1"

Jeśli nacisnę BUTTON2 to temat wiadomości będzie mieć wartość przypisaną do BUTTON2 np. "Wiadomość z BUTTON2"

Kod HTML Formularza:
  1. <form action="form/send.php" method="post" id="contactform">
  2. <input type="text" name="contact_name" placeholder="Imię i nazwisko" required="required" tabindex="1" />
  3. <input type="email" name="contact_email" placeholder="Adres e-mail" required="required" tabindex="2" />
  4. <textarea rows="5" columns="10" name="contact_body" placeholder="Treść wiadomości" required="required" tabindex="3"></textarea>
  5. <input type="submit" value="Wyślij" tabindex="5" name="BUTTON1" /><input type="submit" value="Wyślij2" tabindex="5" name="BUTTON2" />
  6. </form>


Plik PHP send.php
  1. <?php
  2.  
  3. require_once 'class.phpmailer.php';
  4.  
  5. $_POST = array_map('trim', $_POST);
  6.  
  7. $error = false;
  8.  
  9. $mail = new PHPMailer();
  10.  
  11. if (!isset($_POST['contact_name']) || empty($_POST['contact_name'])) {
  12. $error = true;
  13. }
  14.  
  15. if (!isset($_POST['contact_email']) || empty($_POST['contact_email']) || !PHPMailer::ValidateAddress($_POST['contact_email'])) {
  16. $error = true;
  17. }
  18.  
  19. if (!isset($_POST['contact_body']) || empty($_POST['contact_body'])) {
  20. $error = true;
  21. }
  22.  
  23.  
  24. if ($error) {
  25. exit('nok');
  26. }
  27.  
  28.  
  29. $mail->CharSet = 'UTF-8';
  30.  
  31. $mail->SetFrom($_POST['contact_email'], $_POST['contact_name']);
  32. $mail->AddAddress('se6edesign@gmail.com');
  33. $mail->Subject = 'wiadomość z BUTTON1 lub BUTTON2';
  34. $mail->Body = $_POST['contact_body'];
  35.  
  36. if (!$mail->Send()) {
  37. exit('nok');
  38. }
  39.  
  40. exit('ok');
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 35)
Turson
post
Post #2





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


  1. if(isset($_POST['BUTTON1'])){
  2. //naciśnięto BUTTON1
  3. }
  4. elseif($_POST['BUTTON2'])){
  5. //naciśnięto BUTTON2
  6. }
Go to the top of the page
+Quote Post
trueblue
post
Post #3





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


W $_POST dostaniesz albo zmienną BUTTON1 albo BUTTON2, zbadaj ich istnienie i przypisz odpowiednie komunikaty.
Go to the top of the page
+Quote Post
timon27
post
Post #4





Grupa: Zarejestrowani
Postów: 578
Pomógł: 69
Dołączył: 15.04.2007
Skąd: Wrocław

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


A nie prościej dla ciebie i intuicyjniej dla użytkownika:
jeden przycisk 'wyślij' ale przed nim SELCT z dwoma opcjami.
(IMG:style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #5





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Przenoszę.
Go to the top of the page
+Quote Post
se6e
post
Post #6





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 23.03.2014

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


Cytat(trueblue @ 23.03.2014, 18:31:33 ) *
W $_POST dostaniesz albo zmienną BUTTON1 albo BUTTON2, zbadaj ich istnienie i przypisz odpowiednie komunikaty.


A co mam napisać w:

$mail->Subject = 'wiadomość z BUTTON1 lub BUTTON2';
Go to the top of the page
+Quote Post
trueblue
post
Post #7





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


  1. $mail->Subject = 'wiadomość z '.(isset($_POST['BUTTON1'])?'BUTTON1':'BUTTON2');
Go to the top of the page
+Quote Post
se6e
post
Post #8





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 23.03.2014

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


Ok, zaraz sprawdzę czy to będzie działać


Nie działa

Tutaj jest link do tych plików: https://drive.google.com/file/d/0B4K3l4a8kh...dit?usp=sharing

Go to the top of the page
+Quote Post
trueblue
post
Post #9





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Co kryje się pod pojęciem "nie działa"?
Go to the top of the page
+Quote Post
se6e
post
Post #10





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 23.03.2014

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


Formularz muli i nie wysyła treści
Go to the top of the page
+Quote Post
trueblue
post
Post #11





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


A jeśli przywrócisz temat jak w przykładzie w linii 33, to wtedy jaki jest objaw?
Go to the top of the page
+Quote Post
se6e
post
Post #12





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 23.03.2014

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


To samo nie wysyła

if(isset($_POST['BUTTON1'])){
//naciśnięto BUTTON1 <<< co tu może być?
}
elseif($_POST['BUTTON2'])){
//naciśnięto BUTTON2
}
Go to the top of the page
+Quote Post
trueblue
post
Post #13





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Serwer działa?
Go to the top of the page
+Quote Post
se6e
post
Post #14





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 23.03.2014

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


na 100% serwer działa
Go to the top of the page
+Quote Post
Turson
post
Post #15





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Cytat(se6e @ 23.03.2014, 19:03:13 ) *
To samo nie wysyła

if(isset($_POST['BUTTON1'])){
//naciśnięto BUTTON1 <<< co tu może być?
}
elseif($_POST['BUTTON2'])){
//naciśnięto BUTTON2
}

  1. if(isset($_POST['BUTTON1'])){
  2. $subject = "Przycisk 1";
  3. }
  4. elseif($_POST['BUTTON2'])){
  5. $subject = "Przycisk 2";
  6. }
  7. $mail->Subject = $subject
Go to the top of the page
+Quote Post
se6e
post
Post #16





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 23.03.2014

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


To też nie pomaga, chyba ten skrypt phpmailer.php za mocno przeszkadza
Go to the top of the page
+Quote Post
Turson
post
Post #17





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Jak phpmailer może przeszkadzać skoro do skrypt do wysyłania emaili? Nie widzę w tym kodzie konfiguracji serwera SMTP/POP3 więc się nie dziwię, że nie wysyła
http://phpedia.pl/wiki/Phpmailer
Go to the top of the page
+Quote Post
se6e
post
Post #18





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 23.03.2014

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


to spójrz na 3 linijkę, załączany jest skrypt do wysyłania maili - on działa tylko jak zaczynam zmieniać to muli i nie wysyła

Ten post edytował se6e 23.03.2014, 23:33:53
Go to the top of the page
+Quote Post
trueblue
post
Post #19





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


A kiedyś działał?
Pisałeś, że po przywróceniu tematu na:
  1. $mail->Subject = 'wiadomość z BUTTON1 lub BUTTON2';

również nie działa.
Go to the top of the page
+Quote Post
se6e
post
Post #20





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 23.03.2014

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


Działa gdy nie ma

  1. if(isset($_POST['BUTTON1'])){
  2. //naciśnięto BUTTON1 <<< co tu może być?
  3. }
  4. elseif($_POST['BUTTON2'])){
  5. //naciśnięto BUTTON2
  6. }
Go to the top of the page
+Quote Post
Turson
post
Post #21





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Pokaż cały kod po zmianach które nie dzialaja
Go to the top of the page
+Quote Post
se6e
post
Post #22





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 23.03.2014

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


  1.  
  2. <form action="form/send.php" method="post" id="contactform">
  3. <input type="text" name="contact_name" placeholder="Imię i nazwisko" required="required" tabindex="1" />
  4. <input type="email" name="contact_email" placeholder="Adres e-mail" required="required" tabindex="2" />
  5. <textarea rows="5" columns="10" name="contact_body" placeholder="Treść wiadomości" required="required" tabindex="3"></textarea>
  6. <input type="submit" value="Wyślij" tabindex="5" name="BUTTON1" />
  7. <input type="submit" value="Wyślij" tabindex="5" name="BUTTON2" />
  8. </form>



  1. <?php
  2.  
  3. require_once 'class.phpmailer.php';
  4.  
  5. $_POST = array_map('trim', $_POST);
  6.  
  7. $error = false;
  8.  
  9. $mail = new PHPMailer();
  10.  
  11. if (!isset($_POST['contact_name']) || empty($_POST['contact_name'])) {
  12. $error = true;
  13. }
  14.  
  15. if (!isset($_POST['contact_email']) || empty($_POST['contact_email']) || !PHPMailer::ValidateAddress($_POST['contact_email'])) {
  16. $error = true;
  17. }
  18.  
  19. if (!isset($_POST['contact_body']) || empty($_POST['contact_body'])) {
  20. $error = true;
  21. }
  22.  
  23. if(isset($_POST['BUTTON1'])){
  24. $subject = "Przycisk 1";
  25. }
  26. elseif($_POST['BUTTON2'])){
  27. $subject = "Przycisk 2";
  28. }
  29.  
  30.  
  31. if ($error) {
  32. exit('nok');
  33. }
  34.  
  35. $mail->CharSet = 'UTF-8';
  36.  
  37. $mail->SetFrom($_POST['contact_email'], $_POST['contact_name']);
  38. $mail->AddAddress('se6edesign@gmail.com');
  39. $mail->Subject = $subject;
  40. $mail->Body = $_POST['contact_body'];
  41.  
  42. if (!$mail->Send()) {
  43. exit('nok');
  44. }
  45.  
  46. exit('ok');

Masz możliwość sprawdzenia tego na własnym serwerze?

Ten post edytował se6e 24.03.2014, 10:38:50
Go to the top of the page
+Quote Post
Turson
post
Post #23





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


A gdzie jest send?

Zamień na
  1. if(isset($_POST['BUTTON1'])) $subject = "Przycisk 1";
  2. else $subject = "Przycisk 2";
Go to the top of the page
+Quote Post
se6e
post
Post #24





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 23.03.2014

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


Wysyła, przypisuje temat ale w obu przypadkach temat to "Przycisk2"

  1. if(isset($_POST['BUTTON1'])) $subject = "Przycisk 1";

ten element funkcji nie działa

Ten post edytował se6e 24.03.2014, 11:01:52
Go to the top of the page
+Quote Post
trueblue
post
Post #25





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Przed warunkiem wydrukuj tablicę $_POST ( print_r($_POST); ) i pokaż wynik.
Go to the top of the page
+Quote Post
se6e
post
Post #26





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 23.03.2014

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


ten sposób na sprawdzenie nie działa, tzn. formularz muli, nie wysyła, nic nie wyświetla się

Może .js powoduje te problemy?

  1. $(function() {
  2. var check_1 = (Math.floor(Math.random() * 9) + 1).toString(),
  3. check_2 = (Math.floor(Math.random() * 9) + 1).toString(),
  4. check = check_1 + check_2;
  5.  
  6. $('#contactform span.form_check_1').text(check_1);
  7. $('#contactform span.form_check_2').text(check_2);
  8. $('#contactform input[name="contact_check_data"]').val(check);
  9.  
  10. var sending = false;
  11. $('#contactform').on('submit', function(e) {
  12. var $form = $(this), $submit = $('input[type="submit"]', $form);
  13.  
  14. e.preventDefault();
  15.  
  16. if (sending) {
  17. return false;
  18. }
  19.  
  20. $('.form-error', $form).remove();
  21.  
  22. $('input, textarea', $form).prop('readonly', true);
  23. $submit.val('Wysyłam');
  24. sending = true;
  25.  
  26. $.post($form.attr('action'), $form.serialize(), function(data) {
  27. if (data === 'ok') {
  28. $form.slideUp('fast', function() {
  29. $form.after('<div class="form-success">Wiadomość została wysłana! Skontaktujemy się z Tobą jak tylko to będzie możliwe.</div>');
  30. });
  31.  
  32. return true;
  33. }
  34.  
  35. $form.prepend('<div class="form-error">Wystąpił błąd podczas wysyłania formularza. Upewnij się, że wypełniłeś wszystkie pola i poprawnie rozwiązałeś działanie.</div>');
  36. $('input, textarea', $form).prop('readonly', false);
  37. $submit.val('Wyślij wiadomość');
  38. sending = false;
  39.  
  40. return false;
  41. }, 'text');
  42. });
  43. });


Ten post edytował se6e 24.03.2014, 11:46:21
Go to the top of the page
+Quote Post
trueblue
post
Post #27





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


jQuery nie serializuje przycisku submit.

Do kodu js na początku dodaj:
  1. $('#contactform input:submit').each(function(){
  2. $(this).click(function(){
  3. $('#contactform input[name="button"]').val($(this).attr('name'));
  4. });
  5. });

W formularzu za buttonami dodaj:
  1. <input type="hidden" name="button" value=""/>

Wartość otrzymasz w $_POST['button'], więc na tym opieraj warunek tematu.
Go to the top of the page
+Quote Post
se6e
post
Post #28





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 23.03.2014

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


  1. if(isset($_POST['button'])) $subject = "Przycisk 1";
  2. else $subject = "Przycisk 2";


tak ma teraz wyglądać?

Ten post edytował se6e 24.03.2014, 11:58:55
Go to the top of the page
+Quote Post
trueblue
post
Post #29





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Nie, mój błąd. Warunku nie musi być, bo w $_POST['button'] zawsze coś dostaniesz, pod warunkiem, że JS działa i działa poprawnie.
  1. $mail->Subject = 'wiadomość z '.$_POST['button'];


Ten post edytował trueblue 24.03.2014, 12:04:43
Go to the top of the page
+Quote Post
se6e
post
Post #30





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 23.03.2014

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


mój błąd, TERAZ DZIAŁA


Ten post edytował se6e 24.03.2014, 12:10:11
Go to the top of the page
+Quote Post
se6e
post
Post #31





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 23.03.2014

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


A jak dodać do tego formularza kolejne elementy które będą się wyświetlać w treści wiadomości czyli body?
Go to the top of the page
+Quote Post
trueblue
post
Post #32





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Tak jak input i textarea, otrzymasz je w tablicy $_POST.
Go to the top of the page
+Quote Post
se6e
post
Post #33





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 23.03.2014

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


$mail->Body = $_POST['contact_body']; <-- jak to powinno wyglądać jeśli chcę dodać np. $_POST['contact_url']; , $_POST['contact_tel'];
Go to the top of the page
+Quote Post
Turson
post
Post #34





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


  1. $mail->Body = $_POST['contact_body'].'Kontakt url: '.$_POST['contact_url'].', tel: '.$_POST['contact_tel'];
Go to the top of the page
+Quote Post
trueblue
post
Post #35





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Cytat(se6e @ 24.03.2014, 12:13:04 ) *
$mail->Body = $_POST['contact_body']; <-- jak to powinno wyglądać jeśli chcę dodać np. $_POST['contact_url']; , $_POST['contact_tel'];


  1. $mail->Body = $_POST['contact_body'].' '.$_POST['contact_url'].' '.$_POST['contact_tel'];

To są podstawy...
Go to the top of the page
+Quote Post
se6e
post
Post #36





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 23.03.2014

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


A czy ktoś mówił że znam PHP?

Dziękuję Wam za pomoc (IMG:style_emoticons/default/thumbsupsmileyanim.gif)

Ten post edytował se6e 24.03.2014, 12:20:12
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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: 15.09.2025 - 14:08