Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Przekazwywanie zmiennych
Forum PHP.pl > Forum > Przedszkole
cypher6
Witam

Tworzę formularz zamówienia i potwierdzenie.

Zasada działania = formularz --> przejscie do pokazania faktury i możliwość wydrukowania przez zamawiającego --> przycisk akceptuj i wysłanie maila + potwierdzenie wysłania.

Realizuję to za pomocą 3 plików (nie będę dawał całych opiszę zasadę działania zeby nie gmatwać)

plik rezerwacja.php
  1. <?php
  2. <form method="POST" action="index.php?go=fv" >
  3. <input type="text" name="imie" size="36">
  4. <input type="text" name="nazwisko" size="36">
  5. </form>
  6. ?>



przejscie do pliku fv.php
  1. <form method="POST" action="index.php?go=zamawiam" >
  2. <? print("$imie");?> <? print("$nazwisko");?>
  3. </form>



plik zamawiam.php
  1. <?
  2. // tresc
  3. $trescja = "Dokonano rezerwacji online: \n\n";
  4. $trescja = $trescja . "Imie i nazwisko : ".$imie." ".$nazwisko."\n";
  5. // wysyłanie
  6. require_once 'Mail.php';
  7. $params['host'] = 'smtp.konto pocztowe.pl';
  8. $params['port'] = 25;
  9. $params['auth'] = false;
  10. $params['username'] = 'username';
  11. $params['password'] = 'pass';
  12.  
  13. $headers['Subject'] = 'Rezerwacja online : '. $imie.' '.$nazwisko;
  14. $headers['From'] =$params['username'];
  15.  
  16. $recipients = 'tu ma dochodzić mail';
  17.  
  18. $mail = Mail::factory('smtp', $params);
  19.  
  20. if (PEAR::isError($mail)) {
  21. print $mail->getMessage();
  22. }
  23. else {
  24. $error = $mail->send($recipients, $headers, $trescja);
  25.  if (PEAR::isError($error)) {
  26. print $error->getMessage();
  27.  }
  28. };
  29.  
  30. include("page/koniec.php");
  31.  
  32. ?>



na końcu plik koniec wyswietla komunikat o poprawnej rejestracji.

Całość działa do wysyłania maila, potem dochodzi mail bez zmiennych, jeśli zamienię wykonanywanie pliku zamiast fv.php na zamawiam.php w pierwszysm formularzu mail przychodzi poprawny.

Jak to rozwiązać? Nie będę mogł skorzystać z bazy danych.
Kihol
Po prostu - z pliku fv.php w żaden sposób nie przekazujesz zmiennych pobranych POST-em z rezerwacja.php dalej.
Najprostsze rozwiązanie :
w pliku fv.php dodaj :
  1. <input type="hidden" name="imie" value="$_POST['imie']">
  2. <input type="hidden" name="nazwisko" value="$_POST['nazwisko']">
  3. <input type="submit" value="Zamawiam">

w ten sposób zmienne pobrane z rezerwacja.php będą w ukrytych polach przekazane dalej przez formularz.
cypher6
w przychodzących mailach pojawia sie

Dokonano rezerwacji online:

Imie i nazwisko : $_POST[\'imie\'] $_POST[\'nazwisko\']

chyba ze coś namieszałem, ale raczej nie...
k_@_m_i_l
Spróbuj to zrobić tak :
  1. <?php
  2. $trescja = "Dokonano rezerwacji online: \n\n";
  3. $trescja = $trescja . "Imie i nazwisko : ".$_POST['imie']." ".$['nazwisko']."\n";
  4. ?>
cypher6
Niestety, mail przychodzi pusty.

Ubierałem to w rozne postacie zmiennych ale za kozdym razem wynik ten sam. Czytałem coś o sesjach, ale nie wiem jak to zrobić?
kallosz
na sesjach możesz to zrobić tak
  1. <?php
  2. $_SESSION['imie'] = $_POST['imie'];
  3. ?>
a odczytujesz tak samo tylko w 2 strone haha.gif i po wyslaniu maila dawaj session_destroy()
cypher6
A mogę,prosić o kawałek kodu nadpisanego do tego z góry.

Głownie modyfikowałem kody ktore juz miałem, nie do konca wiem jak to posklejac i czy zacząć od pierwszego pliku rezerwacja, czy tylko w ostatnim?
kallosz
a nie lepiej zrobić wszystko w jednym pliku ?
  1. <?php
  2. jakas akcja.....
  3.  
  4. $_SESSION['cos'] = 122313132;
  5.  
  6. sadasad 
  7. ad
  8.  a
  9. d
  10. as
  11. da
  12.  
  13. $cos = $_SESSION['cos'];
  14. ?>

ja bym to zrobił tak
  1. <?php
  2.  
  3. if($_get['co'] == 'ok') {
  4. $wczytanie danych z sesji
  5. wyslanie maila
  6.  
  7. } else {
  8. if(isset($_POST['dane'])) {
  9. pobranie danych.....
  10. zapisanie do sesji
  11. }else{
  12. include('formularz.php');
  13. }
  14.  
  15. }
  16. ?>
cypher6
Chciałem zrobic formularz, ktory wysyła maila i wtedy wystawia FV, wtedy działa OK. Ale musi być na odwrót...

Wiec wysyłanie w jednym nie może być sad.gif

@ Kihol
rozwiązanie bardzo dobre. Tak w końcu zrobiłem, Jedna modyfilacja

nie:
  1. <?php
  2. <input type="hidden" name="imie" value="$_POST['imie']">
  3. ?>


bo to nie pobiera zmiennej, a:

  1. <input type="hidden" name="imie" value=<? print("$imie");?>>


Temat do zamknięcia.
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.