Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] błędy w kodzie - funkcja mail
Forum PHP.pl > Forum > Przedszkole
Marysia
Witam jestem raczkująca (a raczej ledwo pełzająca) w języku php i nie potrafie sama tego rozwiązać. Chodzi o poprawienie kodu w skypcie php tak bym dostawała treść zawartą w e-mailu, bo już probowałam to różnie napisać i nic z tego nei wychodziło.
Zrobiłam prosty formularz w html, w którym wpisuje się kod produktu i ilość sztk. oraz plik php ze skryptem. Bardzo chciałabym to otrzymywać w takiej postaci (jeśli to możliwe tongue.gif) :

od:
katalog:

produkt1 ilosc1
produkt2 ilosc2
produkt3 ilosc3
....
itd

Zauważyłam też, że pomimo nie sepłnienia warunków w skrypcie, i tak dostaję (pustego) maila na pocztę. Jak to zmienić?

Pozatym zastanawiam się czy możliwe jest żeby dodać jakoś skrypt "date" do tematu dochodzących zamówień? Niestety moje grzebanie się w kodzie znów nie zaowocowało, ale może ktoś lepiej się orientujący mógłby tu pomóc smile.gif

tu są moje kody


  1. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  2. <title>Kosmetyki Avon - Gdynia</title>
  3. </head>
  4. <form action="http://badzpieknazavon.y0.pl/wynik.php" method="post">
  5. <table border="0">
  6. <tr>
  7. <td>Twoje imię <sup>(*)</sup> <input type="text" name="imie" size="20" maxlength="20"></td>
  8. </tr>
  9. <tr>
  10. <td>Twój e-mail <sup>(*)</sup> <input type="text" name="email" size="28" maxlength="20"></td>
  11. </tr>
  12. <tr>
  13. <td>nr katalogu (na okładce) <sup>(*)</sup> <input type="text" name="katalog" size="2" maxlength="2"></td>
  14. </tr>
  15.  
  16. <tr><td></td></tr>
  17.  
  18. <tr>
  19. <td width="150"><strong>5-cyfrowy nr produktu</strong></td>
  20. <td width="15"><strong>Ilość</strong></td>
  21. </tr>
  22. <tr>
  23. <td><input type="text" name="produkt1" size="5" maxlength="5"></td>
  24. <td align="center"><input type="text" name="ilosc1" size="2" maxlength="2"></td>
  25. </tr>
  26. <tr>
  27. <td><input type="text" name="produkt2" size="5" maxlength="5"></td>
  28. <td align="center"><input type="text" name="ilosc2" size="2" maxlength="2"></td>
  29. </tr>
  30. <tr>
  31. <td><input type="text" name="produkt3" size="5" maxlength="5"></td>
  32. <td align="center"><input type="text" name="ilosc3" size="2" maxlength="2"></td>
  33. </tr>
  34. <tr>
  35. <td><input type="text" name="produkt4" size="5" maxlength="5"></td>
  36. <td align="center"><input type="text" name="ilosc4" size="2" maxlength="2"></td>
  37. </tr>
  38. <tr>
  39. <td><input type="text" name="produkt5" size="5" maxlength="5"></td>
  40. <td align="center"><input type="text" name="ilosc5" size="2" maxlength="2"></td>
  41. </tr>
  42. <tr>
  43. <td><input type="text" name="produkt6" size="5" maxlength="5"></td>
  44. <td align="center"><input type="text" name="ilosc6" size="2" maxlength="2"></td>
  45. </tr>
  46. <tr>
  47. <td><input type="text" name="produkt7" size="5" maxlength="5"></td>
  48. <td align="center"><input type="text" name="ilosc7" size="2" maxlength="2"></td>
  49. </tr>
  50. <tr>
  51. <td><input type="text" name="produkt8" size="5" maxlength="5"></td>
  52. <td align="center"><input type="text" name="ilosc8" size="2" maxlength="2"></td>
  53. </tr>
  54. <tr>
  55. <td><input type="text" name="produkt9" size="5" maxlength="5"></td>
  56. <td align="center"><input type="text" name="ilosc9" size="2" maxlength="2"></td>
  57. </tr>
  58. <tr>
  59. <td><input type="text" name="produkt10" size="5" maxlength="5"></td>
  60. <td align="center"><input type="text" name="ilosc10" size="2" maxlength="2"></td>
  61. </tr>
  62. <tr>
  63. <td align="center"><input type="submit" name="submit" value="Wyślij">
  64. <input type="reset" value="Wyczyść formularz"></td>
  65. </tr>
  66. </form>
  67. <sup>(*)</sup> - Pole wymagane
  68. </body>
  69. </html>


  1. <?php
  2.  
  3. //tworzenie krotkich nazw
  4.  
  5. $naglowek = "Od: $_POST[imie] <$_POST[email]>";
  6. $odbiorca = 'badzpiekna@op.pl';
  7. $temat = 'Zamówienie';
  8.  
  9. $tresc= 
  10.  
  11. ?>
  12.  
  13. <html>
  14. <head>
  15. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  16. <title>Kosmetyki Avon - Gdynia</title>
  17. </head>
  18. <body>
  19.  
  20. <?php
  21.  
  22. //sprawdzanie czy wymagane pola sa wypelnione
  23.  
  24. if ( !empty($_POST['imie']) && !empty($_POST['email']) && !empty($_POST['katalog']) && !empty($_POST['produkt1']) && $_POST['ilprodukt1']>=1 ) 
  25.  
  26. //jesli tak
  27. echo "<p>Dziękuję za złożenie zamówienia.<br/>Po przeczytaniu go przeze mnie, na podany e-mail zostanie wysłana prośba o podanie danych kontaktowych.</p>"; 
  28.  
  29. //jesli nie
  30. else echo "<p>Musisz uzupełnić wymagane pola oraz zamówić przynajmniej jeden produkt aby wy
    słać ten formluarz!</p>"
    ; 
  31.  
  32.  
  33. //funkcja mail
  34. mail("$odbiorca","$temat","$naglowek","$tresc"); 
  35.  
  36. ?> 
  37.  
  38. </body>
  39. </html>
piotrooo89
ufff ale namieszane... winksmiley.jpg

  1. <?php
  2. if ( (!empty($_POST['imie'])) && (!empty($_POST['email'])) && (!empty($_POST['katalog'])) )
  3. {
  4. $imie=$_POST['imie'];
  5. $email=$_POST['email'];
  6. $katalog=$_POST['katalog'];
  7.  
  8. $produkt1=$_POST['produkt1'];
  9. $ilosc1=$_POST['ilosc1'];
  10.  
  11. //i tak wszystkie az dojdziesz do 10
  12.  
  13.  
  14. $do = 'badzpiekna@op.pl';
  15. $tytul = 'Zamówienie';
  16.  
  17. $headers .= "MIME-Version: 1.0 \n";
  18. $headers .= "Content-type: text/html; charset=utf-8\n";
  19. $headers .= "Content-Transfer-Encoding: quoted-printable\n";
  20.  
  21. $tresc = "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">
  22. <html>
  23. <head>
  24. <title>Zamówienie</title>
  25. </head>
  26. <body>
  27. Imię: <strong>$imie</strong>
  28. Email: <strong>$email</strong>
  29. Katalog: <strong>$katalog</strong>
  30.  
  31. <table>
  32. <tr>
  33. <td>produkt</td></td>ilosc</td>
  34. <td>$produkt1</td></td>$ilosc1</td> // i tu równiez wszystkie az dojdziesz do 10
  35. </tr>
  36. </table>
  37. </body>
  38. </html>
  39. ";
  40.  
  41. $ok = mail($do, $tytul, $tresc, $headres);
  42.  
  43. if($ok)
  44. {
  45. echo "Wysłano maila";
  46. }
  47. else
  48. {
  49. echo "Nie wysłano maila";
  50. }
  51.  
  52. }
  53. ?>


to tak na początek
Marysia
Hm rzeczywiście teraz otrzymuję treść wiadomości ale wygląda to niestety tak (może to kwestia tego, że dostaję wiadomości jako zwykły txt a nie html ...) blinksmiley.gif


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>ZamĂłwienie</title>
</head>
<body>
Imię: <strong>Maria</strong>
Email: <strong>moj.e-mail@com.pl</strong>
Katalog: <strong>10</strong>

<table>
<tr>
<td>produkt</td></td>ilosc</td>
<td>10000</td></td>2</td> // i tu rĂłwniez wszystkie az dojdziesz do 10
<td>17474</td></td>1</td>
<td>11699</td></td>5</td>
<td></td></td></td>
<td></td></td></td>
<td></td></td></td>
<td></td></td></td>
<td></td></td></td>
<td></td></td></td>
<td></td></td></td>
</tr>
</table>
</body>
</html>
piotrooo89
to zmaż:
Kod
// i tu rĂłwniez wszystkie az dojdziesz do 10


a widzę że masz jakieś inne kodowanie.

zamień na:
  1. <?php
  2. $headers .= "MIME-Version: 1.0 \n";
  3. $headers .= "Content-type: text/html;\n\tcharset=\"iso-8859-2\"\n"
  4. $headers .= "Content-Transfer-Encoding: quoted-printable\n";
  5. ?>


a wiesz może jakie masz kodowanie na serwerze?
Marysia
hm.

Po zmianie na iso-8859-2 w ogole nie wysyła na maila i nie dostaję komunikatu na stronie... a przy utf-8 wysyła się z tym dziwnym przetworzeniem polskich znaków.

Co do kodowania samego serwera to na jakimś forum doczytałam że na cba.pl jest niby to kodowanie utf-8 ale ma jakieś dziwne problemy i za każdym razem u każdego stwarza tego typu problem.

Usunęłam komentarz w środku "tresci" ale tak czy siak widzę w e-mailu strukturę html...

Przykro mi że mój formularz jest taki kłopotliwy ^^
Marysia
Trochę się bawiłam ale nie wiem czy znowu nie namieszałam w kodzie. W każdym razie przynajmniej kodowanie znaków zaczęło chodzić poprawnie.

Zauważyłam taką rzecz: otoż przy nie wypełnieniu wymaganych pól, nie dostaję komunikatu na stronie, że zamówienie nie zostało wysłane sad.gif ...


Pozatym mail dostaję cały czas o takiej samej postaci. Czy nie ma innego sposobu na przekazanie treści niż przez kod html questionmark.gif

Byłabym wdzięczna za info smile.gif

  1. <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  2. <title>Kosmetyki Avon - Gdynia</title>
  3. </head>
  4. <h1>Wyniki zamówienia</h2>
  5.  
  6. <?php
  7. if ( (!empty($_POST['imie'])) && (!empty($_POST['email'])) && (!empty($_POST['katalog'])) && (!empty($_POST['produkt1'])) && ($_POST['ilosc1']>=1) )
  8.  
  9. {
  10. $imie=$_POST['imie'];
  11. $email=$_POST['email'];
  12. $katalog=$_POST['katalog'];
  13.  
  14. $produkt1=$_POST['produkt1'];
  15. $ilosc1=$_POST['ilosc1'];
  16. $produkt2=$_POST['produkt2'];
  17. $ilosc2=$_POST['ilosc2'];
  18. $produkt3=$_POST['produkt3'];
  19. $ilosc3=$_POST['ilosc3'];
  20. $produkt4=$_POST['produkt4'];
  21. $ilosc4=$_POST['ilosc4'];
  22. $produkt5=$_POST['produkt5'];
  23. $ilosc5=$_POST['ilosc5'];
  24. $produkt6=$_POST['produkt6'];
  25. $ilosc6=$_POST['ilosc6'];
  26. $produkt7=$_POST['produkt7'];
  27. $ilosc7=$_POST['ilosc7'];
  28. $produkt8=$_POST['produkt8'];
  29. $ilosc8=$_POST['ilosc8'];
  30. $produkt9=$_POST['produkt9'];
  31. $ilosc9=$_POST['ilosc9'];
  32. $produkt10=$_POST['produkt10'];
  33. $ilosc10=$_POST['ilosc10'];
  34.  
  35.  
  36. $do = 'badzpiekna@op.pl';
  37. $tytul = 'Zamówienie';
  38.  
  39. $headers .= "MIME-Version: 1.0 \n";
  40. $headers .= "Content-type: text/html; charset=utf-8\n";
  41. $headers .= "Content-Transfer-Encoding: quoted-printable\n";
  42.  
  43. $tresc = "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">
  44. <html>
  45. <head>
  46. <title>Zamówienie</title>
  47. </head>
  48. <body>
  49. Imię: <strong>$imie</strong>
  50. Email: <strong>$email</strong>
  51. Katalog: <strong>$katalog</strong>
  52.  
  53. <tr>
  54. <td>produkt</td></td>ilosc</td>
  55. <td>$produkt1</td></td>$ilosc1</td>
  56. <td>$produkt2</td></td>$ilosc2</td>
  57. <td>$produkt3</td></td>$ilosc3</td>
  58. <td>$produkt4</td></td>$ilosc4</td>
  59. <td>$produkt5</td></td>$ilosc5</td>
  60. <td>$produkt6</td></td>$ilosc6</td>
  61. <td>$produkt7</td></td>$ilosc7</td>
  62. <td>$produkt8</td></td>$ilosc8</td>
  63. <td>$produkt9</td></td>$ilosc9</td>
  64. <td>$produkt10</td></td>$ilosc10</td>
  65. </tr>
  66. </table>
  67. </body>
  68. </html>
  69. ";
  70.  
  71. $ok = mail($do, $tytul, $tresc, $headres);
  72.  
  73. if($ok)
  74. {
  75. echo "<p>Dziękuję za złożenie zamówienia.<br/>Po przeczytaniu go przeze mnie, na podany e-mail zostanie
  76.  
  77. wysłana prośba o podanie danych kontaktowych.</p>";
  78. }
  79. else
  80. {
  81. echo "<p>Musisz uzupełnić wymagane pola oraz zamówić przynajmniej jeden produkt aby wysłać ten
  82.  
  83. formluarz!</p>";
  84. }
  85.  
  86. }
  87. ?>
  88. </body>
  89. </html>
Maxik
$ok = mail($do, $tytul, $tresc, $headres);

Literówka, $headers zamiast $headres :]
Marysia
Rzeczywiście literówka tongue.gif Teraz na mail przychodzi elegncko. Jednak dalej nie działa jedna rzecz. Dlaczego funkcja else się nie wywołuje w przypadku niewypełnienia wymaganych elementów formularza... ? (Chodzi o to, że nie pojawia się komunikat "Musisz usupełnić ... " )
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.