Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Problem z zapisywaniem danych do mail
Forum PHP.pl > Forum > Przedszkole
-mariusz-
Witam

Mam problem tego typu, że zapisuje wartości zmiennych do treści wiadomości puszczanych przez funkcję mail, a po odczytaniu listu są puste pola w miejscach w/w wartości. Wartości te przesyłam z innej strony php za pomocą linków.

  1. <?php
  2. <a href="zam.php?cena='.$wartosc2.'&material='.$mats.'&wysokosc='.$wysokosc.'&ilosc='.$ilosc.'">Zrealizuj zlecenie</a>
  3. ?>


pobierane są za pomocą $_GET. Wydaje mnie się ,że właśnie w tym jest problem tylko przy zmianie na POST nie pobiera wogóle tych danych z linku. Nie wiem jak to rozwiązać. Proszę o pomoc.
JoShiMa
Oczywiście, że powinno być $_GET...

skoro ich tam nie ma, to albo z jakiegoś powodu są puste, albo źle je wstawiasz. Kilka uwag:
1. w adresie nie pisz &material= tylko &amp;material=
2. Zanim zaczniesz odbierać dane z $_GET sprawdź sobie zawartość $_SERVER['QUERY_STRING'];
3. Jeśli $_SERVER['QUERY_STRING'] ma budowę taką jakiej oczekiwałeś to dane możesz ręcznie odebrać metodą:
  1. <?php
  2. parse_str($_SERVER['QUERY_STRING'],$tablica);
  3. ?>
-mariusz-
Dane są na pewno pełne, gdyż echem wyświetlam je na stronie... nie są zapisywane tylko do wiadomości mail.

Również pobierane są dane o osobie wypełniającej i dopisywane do funkcji mail - metoda $_POST i działają stąd moje domysły ,że błąd siedzi w $_GET.

Oto cały skrypt:
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
  5. <title>Untitled Document</title>
  6. </head>
  7. <?php
  8. $nr=LIT;
  9. $nr.=rand(100,99999);
  10. $nr.=date("/d/m/Y");
  11. ?>
  12. <body>
  13. <table width="434" height="196" border="1" cellpadding="0" cellspacing="0" bordercolor="#666666">
  14. <tr>
  15. <td height="194">
  16. <table width="432" border="0" cellpadding="0" cellspacing="0" bgcolor="#CCCCCC">
  17. <tr>
  18. <td width="229">Numer zamowienia: </td>
  19. <td width="203"><?php echo $nr;?></td>
  20. </tr>
  21. <form action="zam.php" method="post">
  22. <td>Zleceniodawca</td>
  23. <td><input type="text" name="zleceniodawca"></td>
  24.  
  25. <tr>
  26. <td>Adres e-mail </td>
  27. <td><input type="text" name="adres"></td>
  28. </tr>
  29. <tr>
  30. <td>Numer kontaktowy </td>
  31. <td><input type="text" name="telefon"></td>
  32. </tr>
  33. <tr>
  34. <td>Komentarz do zamówienia </td>
  35. <td>
  36. <textarea name="tresc" cols="30" rows="5"></textarea>  </td>
  37. </tr>
  38. <tr>
  39. <td>Projekt</td>
  40. <td><input type="file" name="projekt"></td>
  41. </table>
  42. </tr>
  43. </td>
  44. </tr>
  45. </table>
  46. <br>
  47. <?php
  48.  
  49. $cena=$_GET['cena'];
  50. $material=$_GET['material'];
  51. $wysokosc=$_GET['wysokosc'];
  52. $ilosc=$_GET['ilosc'];
  53.  
  54. echo"<b>Szczegóły zamówienia</b> <br>
  55. <font color='gray' > Cena zlecenia : $cena zł NETTO<br>
  56. Materiał : $material <br>
  57. Ilość liter : $ilosc szt<br>
  58. Wysokość litery : $wysokosc cm<br>";
  59.  
  60. ?>
  61. <br />
  62. <br />
  63. <input type="submit" value="Zrealizuj" name="but4">
  64. <br /><br />
  65. <?php
  66.  
  67.  
  68. $zleceniodawca=$_POST['zleceniodawca'];
  69. $adres=$_POST['adres'];
  70. $telefon=$_POST['telefon'];
  71. $tresc=$_POST['tresc'];
  72. $zrealizuj=$_POST['but4'];
  73.  
  74.  
  75.  
  76. $temat = "Zamówienie wycinania liter Nr. $nr - zleceniodawca $zleceniodawca";
  77. $headers = "From: $adres \n"; 
  78. $headers .= "Reply-To: $adres \n"; 
  79. $headers .= 'X-Mailer: PHP/' . phpversion();
  80. $wiadomosc = "$tresc";
  81. $wiadomosc .= \n Szczegóły zamówienia \n Cena - $cenaazł NETTO \n Materiał - $materiał \n Ilość liter - $ilosc szt. \n Wysokość litery - $wysokosc cm";
  82.  
  83.  
  84. if (!empty($zrealizuj)) {
  85. mail('adres@adres.pl', $temat, $wiadomosc, $headers);
  86. echo"<br><br><b>Zlecenie przyjęte</b> - proszę oczekiwać na kontakt $cena, $cenawl";
  87. }
  88.  
  89.  
  90.  
  91. ?>
  92. </form>
  93. </body>
  94. </html>
JoShiMa
Nie zgadzam się. Błąd masz w momęcie wstawiania do maila:
Skąd php ma wiedzieć, co to jest $cenaazł albo $materiał albo $cenawl. Takich zmiennych nie ma w Twoim skrypcie.
-mariusz-
  1. <?php
  2. wiadomosc .= \n Szczegóły zamówienia \n Cena - $cena zł NETTO \n Materiał - $material \n Ilość liter - $ilosc szt. \n Wysokość litery - $wysokosc cm";
  3. ?>


była literówka z $cena i $material ale $ilosc i $wysokosc były poprawnie. Teraz wszystkie są poprawnie i też nie działają.

No jak to z kąd PHP ma wiedzieć co to jest zmienna $material

Skoro pobieram z linku w ten sposób

  1. <?php
  2. $cena=$_GET['cena'];
  3. $material=$_GET['material'];
  4. $wysokosc=$_GET['wysokosc'];
  5. $ilosc=$_GET['ilosc'];
  6. ?>


wyświetlam w ten

  1. <?php
  2. echo"<b>Szczegóły zamówienia</b> <br>
  3. <font color='gray' > Cena zlecenia : $cena zł NETTO<br>
  4. Materiał : $material <br>
  5. Ilość liter : $ilosc szt<br>
  6. Wysokość litery : $wysokosc cm<br>";
  7. ?>


czego wynikiem jest przykładowo :
  1. Szczegóły zamówienia
  2. Cena zlecenia : 29.10 zł NETTO
  3. Materiał : plexi bezbarwna
  4. Ilość liter : 1 szt
  5. Wysokość litery : 23 cm


No to musi wiedzieć skoro je wyświetla...
nospor
moze jak wchodzisz w formularz przez swoj link, to dane z geta i masz.
Ale jak potem wysylasz formularz to te dane z get tracisz, bo formularz masz taki:
form action="zam.php"

czyli w $_GET nie ma juz nic smile.gif
JoShiMa
a powtórz sekwencję:

  1. <?php
  2. $cena=$_GET['cena'];
  3. $material=$_GET['material'];
  4. $wysokosc=$_GET['wysokosc'];
  5. $ilosc=$_GET['ilosc'];
  6. ?>

W tej części kodu gdzie tworzysz maila... Ja w ten sposób nie programuje (chodzi mi o taki sposób mieszania htmla i php), więc nie wiem, ale może chodzi o zasięg zmiennych.
-mariusz-
hmmm no fakt...

jak to teraz rozwiązać...

zmieniłem na

  1. <?php
  2. <form action="zam.php?cena='.$wartosc2.'&material='.$mats.'&wysokosc='.$wysokosc.'&ilosc='.$ilosc.'" method="post">
  3. ?>



to po wysłaniu mam w echu zamiast wartości nazwy zmiennych np./$wysokosc. i wogole tresc maila się nie otwiera :/8
nexis
  1. <?php if (!isset($_POST['submit'])) { ?>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4.  <head>  
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
  6. <title>Untitled Document</title>
  7.  </head>
  8.  <body>
  9. <form action="<?=$_SERVER['PHP_SELF']?>" method="post" enctype="multipart/form-data">
  10.  <dl>
  11. <dt>Numer zamowienia:</dt>
  12. <dd><input type="text" name="nr" value="<?='LIT' . rand(100, 99999) . date('/d/m/Y')?>" readonly="readonly" /></dd>
  13. <dt>Zleceniodawca</dt>
  14. <dd><input type="text" name="zleceniodawca" /></dd>  
  15. <dt>Adres e-mail</dt>
  16. <dd><input type="text" name="adres" /></dd>
  17. <dt>Numer kontaktowy</dt>
  18. <dd><input type="text" name="telefon" /></dd>
  19. <dt>Komentarz do zamówienia</dt>
  20. <dd><textarea name="tresc" cols="30" rows="5"></textarea></dd>
  21. <dt>Projekt</dt>
  22. <dd><input type="file" name="projekt" /></dd>
  23. <dt>Cena zlecenia:</dt>
  24. <dd><input type="text" name="cena" value="<?=(isset($_GET['cena']))?$_GET['cena']:'brak'?>" readonly="readonly" /></dd>
  25. <dt>Materiał:</dt>
  26. <dd><input type="text" name="material" value="<?=(isset($_GET['material']))?$_GET['material']:'brak'?>" readonly="readonly" /></dd>
  27. <dt>Ilość liter:</dt>
  28. <dd><input type="text" name="ilosc" value="<?=(isset($_GET['ilosc']))?$_GET['ilosc']:'brak'?>" readonly="readonly" /></dd>
  29. <dt>Wysokość liter:</dt>
  30. <dd><input type="text" name="wysokosc" value="<?=(isset($_GET['wysokosc']))?$_GET['wysokosc']:'brak'?>" readonly="readonly" /></dd>
  31. <dt><input type="submit" name="submit" value="Zrealizuj" /></dt>
  32.  </dl>
  33. </form>
  34.  </body>
  35. </html>
  36. <?php
  37. } else {
  38.  $temat = 'Zamówienie wycinania liter nr ' . $_POST['nr'] .
  39. ' - zleceniodawca ' . $_POST['zleceniodawca'];
  40.  $headers = 'FROM: ' . $_POST['adres'] . PHP_EOL;
  41.  $headers  .= 'REPLY-TO: ' . $_POST['adres'] . PHP_EOL;
  42.  $headers  .= 'X-Mailer: PHP/' . phpversion();
  43.  $wiadomosc = $_POST['tresc'] . PHP_EOL;
  44.  $wiadomosc .= 'Szczegóły zamówienia' . PHP_EOL .
  45. 'Cena - ' . $_POST['cena'] . ' NETTO' . PHP_EOL .
  46. 'Materiał - ' . $_POST['material'] . PHP_EOL .
  47. 'Ilość liter - ' . $_POST['ilosc'] . 'szt.' . PHP_EOL .
  48. 'Wysokość litery - ' . $_POST['wysokosc'] . ' cm';
  49.  mail('adres@email.pl', $temat, $wiadomosc, $headers);
  50. }
  51. ?>
nospor
wywal wogole action z forma. Form wysle sie na ten sam adres z zachowaniem geta smile.gif
-mariusz-
Super działa guitar.gif
Nie dość ,że wreszcie działa to i bardziej zrozumiałem temat przekazywania zmiennych.

Dziękuje Ci bardzo!

Teraz zostało mi podczepienie jeszcze możliwości dodawania załączników, więc problemy pewnie mnie nie ominą sad.gif smile.gif
-mariusz-
Btw. bo za dużo w necie nie znalazłem czy da się jakiś prosty warunek podczepić, który sprawdzi czy wiadomość została napewno wysłana?

  1. <?php
  2. if (!empty($zrealizuj)) {
  3. mail('adres@wp.pl', $temat, $wiadomosc, $headers);
  4. echo"<br><br><b>Zlecenie przyjęte</b> - proszę oczekiwać na kontakt";
  5. }
  6. ?>
JoShiMa
Cytat(-mariusz- @ 23.07.2008, 11:18:59 ) *
Teraz zostało mi podczepienie jeszcze możliwości dodawania załączników, więc problemy pewnie mnie nie ominą sad.gif smile.gif


http://forum.php.pl/index.php?showtopic=96069&hl=mail
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.