Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: dwa submity -> dwa docelowe pliki php
Forum PHP.pl > Forum > PHP
pela222
Witam,
proszę o pomoc w rozwiązaniu problemu:
Mam jeden plik form.html z formularzem. Chcę dodać coś co by dało mi taki efekt że po kliknięciu przycisku nr1 formularz jest wysłany do pliku 1.php a po kliknięciu przycisku nr2 do pliku 2.php Oczywiście podany przeze mnie kod nie działa (pewnie nie można zagnieżdżać php wewnątrz <form>).
Przeczytałem na ten moment chyba ok 20 różnych tematów na różnych forach ale nie mogę znaleźć rozwiązania.

  1. $prz1 = $_POST['prz1'];
  2. $prz2 = $_POST['prz2'];

  1. <form action="<?php if(isset($prz1)) {echo "1.php";} elseif(isset($prz2)) {echo "2.php";} ?>" method="post">
  2.  
  3. .....tutaj mój formularz....
  4.  
  5. <input type="submit" value="inter" name="prz1"/>
  6. <input type="submit" value="domestic" name="prz2"/>
  7. </form>


No ale to nie działa niestety!

Jedno co mi działa to:
  1. <form id="form" method="post">
  2. <input type="submit" value="1" onclick="document.getElementById('form').action='test1.php';" >
  3. <input type="submit" value="2" onclick="document.getElementById('form').action='test2.php';" >
  4. </form>


ale niestety po "cofnięciu" sie do formularza jest on pusty a mi zależy żeby dane pozostały!! no bo ja zawsze bede najpierw generował raport nr1 (po kliknięciu przycisku nr1 i bede się cofał żeby wygenerować raport nr2 (po kliknięciu przyciksu nr 2)

Najczęstsze porady zawierają i pewnie to jest coś bardzo blisko tego co potrzebuję ale moja zerowa wiedza sprawia że nie potrafię tego zastosować:
  1. if (isset($_POST['action1']) || isset($_POST['action2'])) {
  2. // handle textarea
  3.  
  4. if (isset($_POST['action1'])) {
  5. header('Location:action1.php');
  6. exit();
  7. }
  8.  
  9. header('Location:action2.php');
  10. exit();
  11. }

  1. <input type="submit" name="action1" value="Action1">
  2. <input type="submit" name="action1" value="Action2">
  3. </form>
timon27
  1. <form action="<?php if(isset($prz1)

Propouję jakiś prosty kurs html/php od postaw bo w ogóle nie rozumiesz struktury budowania strony.

niestety po "cofnięciu" sie do formularza jest on pusty
A czemu miałby nie być? już została wysłany więc ponowne pojawianie się danych jest nieporządane i nieintuicyjne.
Cofanie się przyciskiem cofnij jest niedopuszczalne i bezsensowne.
Skoro chcesz miec te same dane to czemu od razu ich nie przetworzysz w 1.php?

pela222
Cytat(timon27 @ 17.04.2013, 22:55:13 ) *
  1. <form action="<?php if(isset($prz1)

Propouję jakiś prosty kurs html/php od postaw bo w ogóle nie rozumiesz struktury budowania strony.

niestety po "cofnięciu" sie do formularza jest on pusty
A czemu miałby nie być? już została wysłany więc ponowne pojawianie się danych jest nieporządane i nieintuicyjne.
Cofanie się przyciskiem cofnij jest niedopuszczalne i bezsensowne.
Skoro chcesz miec te same dane to czemu od razu ich nie przetworzysz w 1.php?


Dzieki za zainteresowanie. Z mojej strony:

1. Przykład który zacytowałeś podałem żeby zilustrować co chcę osiągnąć a nie żeby dać komuś poradę jak to zrobić. To że jest niewłaściwy to już wiem! Jak widać kombinuję jak koń pod górę...i nic...dlatego po kilku godzinach szukania zdecydowałem sie napisać post. Będę wdzięczyny za konkretne rozwiązania a nie porady ogólne
2. Nie jestem informatykiem ani programistą a hobbystą próbujący ułatwić sobie wykonywaną pracę a przy okazji dla własnej satysfakcji zrobić coś sam. Wiem że brakuje mi podstaw ale moim celem nie jest nauczenie się html i php tylko zrobienie jednego projektu o którym napisałem
3. Niedopuszczalny...dla kogo...akurat dla mnie jest bardzo dopuszczalny i co więcej pożądany (oczywiście zaraz mi napisze jeden z drugim że idzie to zrobić tak a tak - będę wdzięczny jak a nie komentarze wyjadaczy w stylu "ucz się chłopcze"

Może lepiej opiszę co robię. Z góry dziękuje za wyrozumiałość.
Plik form.html to plik gdzie mam formularz. W nim podaje Imię/nazwisko/wiek/firmę z którą klient kupił produkt/wysokość składki/dochód klienta/ dzieci/ inne...
Po kliknięciu submit nr1 otwiera się form1.pho gdzie jest kolejny formularz gdzie wybieram za pomocą checkbox-ów linijki tekstu jakie chcę aby pojawiły się na moim ostatecznym raporcie który w tej chwili pojawia się w pliku form2.php. Tutaj mam gotowy raport który sobie drukuje. Teraz cofam się "cofnij" do mojego wyjściowego formularza (plik form.html) gdzie mam już wklepane dane i chciałby wygenerować inny raport (takie podsumowanie zakupionego produktu). Ten drugi raport też sobie drukuje i tu jest koniec pracy z tymi danymi.

Moje dotychcasowe wypociny są pod adresem:

http://polskibroker.ie/statement/form.html

Dzięki za pomoc. mogę oczywiście wrzucić moje pliki ale to by była dopiero jadka jakim amatorem jestem i ile to błędów ma w kodzie a ile błędnych założeń. Jeżeli jest ktoś kto ma ochotę zobaczyć moje wypociny to mogę wrzucić smile.gif

-------------------------
Update

Kurcze...panowie i panie...
dla wyjadaczy to jest jakiś banalny skrypcik i 5 min pracy (1 min wysiłku umysłowego + 4 min pisania.. około:) ). Dla mnie to jest 3 dzień w martwym punkcie.
Czy naprawdę nie ma nikogo kto mi może pomóc?

Jeszcze raz z góry dziękuję za pomoc i podać konkretne rozwiązanie. Problem opisałem chyba wystarczająco...mam nadzieję.
Pozdrawiam
timon27
Cytat(pela222 @ 19.04.2013, 15:06:28 ) *
.. gdzie mam już wklepane dane i chciałby wygenerować inny raport (takie podsumowanie zakupionego produktu). Ten drugi raport też sobie drukuje i tu jest koniec pracy z tymi danymi.

czemu nie wydrukujesz od razu dwóch raportów skoro dane się nie zmieniają?
pela222
Cytat(timon27 @ 22.04.2013, 22:10:57 ) *
czemu nie wydrukujesz od razu dwóch raportów skoro dane się nie zmieniają?

Bo chce to zrobić tak jak opisałem... Najpierw jeden, potem drugi. Poza tym pierwszy raport to kilka ekranów i zaznaczanie wybranych checkbook na kolejnych ekranach wiec nie mogę drukować dwóch jednocześnie bo najpierw muszę zdefiniować co będzie na tym raporcie.. Bardzo proszę o podpowiedź bo cały czas tego nie rozwiązalem.
timon27
Więc po tych dwóch ekranach i, albo i nawet stu i wydrukowaniu pierwszego raportu - przejdź do drugiero raportu, albo setki ekranów dla drugiego raportu.
Nawet jeśli robisz coś tylko dla siebie - rób to porządnie, a nie 'tu sobie cofnę'.
pela222
Cytat(timon27 @ 1.05.2013, 11:22:16 ) *
Więc po tych dwóch ekranach i, albo i nawet stu i wydrukowaniu pierwszego raportu - przejdź do drugiero raportu, albo setki ekranów dla drugiego raportu.
Nawet jeśli robisz coś tylko dla siebie - rób to porządnie, a nie 'tu sobie cofnę'.

Hej, możesz mi wrzucić jakiś link do przykładu albo pokazać przykład pliku 1.php (formularz), 2.php(wyświelenie i przejdz do formularza) gdzie jest realizowane to oczym mówisz?
Dzięki

Dodam jeszcze że w przypadku wykorzystania

  1. <form id="form" method="post">
  2. <input type="submit" value="1" onclick="document.getElementById('form').action='test1.php';" >
  3. <input type="submit" value="2" onclick="document.getElementById('form').action='test2.php';" >
  4. </form>


w przeglądarce IE przeglądarka pamięta i wyświetla wypełniony formularz po cofnięciu sięexclamation.gif! to ma chyba coś z cache przeglądarki. W chrome którego na co dzień używam niestety formularz jest pusty po cofnięciu...
Odniosę się jeszcze do tego że nie powinienem się cofać...np. jak przez nieuwagę zrobiłem literówkę lub wybrałem "single life" zamiast "dual life" (to jest pierwsze pole mojego formularza) i na drugim ekranie widzę ten błąd, to się cofam poprawiam i już.
Dajcie proszę mi jakaś podpowiedz jak to zrobić...chyba od tego jest to forum...będę wdzięczny za przykład kodu...może być z wykorzystaniem sesji lub jakkolwiek...byle uzyskać funkcjonalność o jakiej już pisałem.

Dzięki i Pozdwiam
morthan
Widzisz, coś się nauczyłeś.

  1. <form id="form" method="post">
  2. <input type="submit" value="1" onclick="document.getElementById('form').action='test1.php';" >
  3. <input type="submit" value="2" onclick="document.getElementById('form').action='test2.php';" >
  4. </form>


Formularz leci tam, jaki lin ma wpisany w atrybut action. Jak widzisz możesz to zmienić jsem.

Aby poruszać sie w dwie strony z pamięcią musisz dane zbierać do array i na jej podstawie tworzyć ukryte inputy, z wartościami wybranymi przez uzytkownika. Nie jest to trudne, za to przysłowiowe rzeźbienie w gó..nie. wink.gif
i takie kawałki kodu:
  1. if((int)$array['checkbox_1'] === 1):
  2. echo '<input type="checkbox" name="checkbox_1" value="1" checked="checked">';
  3. else:
  4. echo '<input type="checkbox" name="checkbox_1" value="1" >';
  5. endif;


i ta przez cały formularz.
Dane nie znajdujące się dajesz do input type=hidden name=cośtam, ale dane z tego formularza nie wyswietlasz w ukrytych.

Rozumiesz?
pela222
Z tym uczysz się to chyba trochę na wyrost...to rozwiązanie z wykorzystaniem js znalazłem w necie i sam podałem już 1,5 miesiąca temu, ale tak jak wtedy, tak dziś nie potrawię sprawić żeby form.php (czyli mój podstawowy formularz z danymi osobowymi) był wypełniony po powrocie do niego (no potrafię w IE bo przegladarka pamięta:) ).

Chyba nie rozumiem...więc...

mam http://www.polskibroker.ie/statement/test/form.php

a na dole Przycisk PL i ENG.
form.php wyglada następująco:

  1. <form id="form" method="post">
  2. <tr>
  3. <td>Type of Cover</td>
  4. <td><select name="type">
  5. <option value="single">Single Life</option>
  6. <option value="dual">Dual Life</option>
  7. </select>
  8. </td>
  9. <td></td>
  10. </tr>
  11. <tr>
  12. <td>Imię</td>
  13. <td><input type="text" name="name1"></td>
  14. <td><input type="text" name="name2"></td>
  15. </tr>
  16. <input type="submit" value="ENG" onclick="document.getElementById('form').action='form1.php';" >
  17. <input type="submit" value="PL" onclick="document.getElementById('form').action='form1pl.php';" >
  18. </form>


no i dane trafiają do pliku form1.php po wciśnieciu przycisku submit ENG a do form1pl.php po wciśnieciu submit PL.

Jak zmodyfikować plik form.php a jak form1.php/from1pl.php aby po cofnięciu się do form.php pamiętał wpisaną zawartość pola 'name' oraz wybraną wartość pola 'type'?

Przyjmijmy że plik form1.php ma następujący wyglad:

  1. <?php
  2. $name1 = $_POST['name1'];
  3. $name2 = $_POST['name2'];
  4. $type = $_POST['type'];
  5. ?>
  6. <form action="form2.php" method="post">
  7. <input type="checkbox" name="check1[]" checked="checked" value="Your name is <?php echo $name1; ?>."> - Your name is <?php echo $name1; ?><br>
  8. <input type="checkbox" name="check1[]" checked="checked" value="Your wife name is <?php echo $name1; ?>."> - Your wife name is <?php echo $name2; ?><br>
  9. <input type="checkbox" name="check1[]" checked="checked" value="Insurance type selected: <?php echo $name1; ?>."> - Insurance type selected: <?php echo $type; ?><br>
  10. <input type="button" value="Back" onClick="history.go(-1);return true;">
  11. <input type="submit" value="Next">
  12. </form>


a form1pl.php wyglada analogicznie tylko jest tłumaczeniem.

Czy możesz mi na tych kodach pokazać jak mam zastosować to o czym pisałeś? Dzięki.
Proszę zwróć uwagę że w IE działa to tak jak chcę żeby było w chrome (wieć może jakoś to do cache wysłąć w chrome wystarczy?)
celbarowicz
W skrócie zarys tego co chyba potrzebujesz.
Resztę należy dopracować.
  1. [/php]
  2. [php]
  3. <?php
  4.  
  5. if(!isset($_SESSION['dana1'])){ $_SESSION['dana1']=''; }
  6. if(!isset($_SESSION['dana2'])){ $_SESSION['dana2']=''; }
  7. ?>
  8. <form method="post" action="raport.php">
  9.  
  10. <input type="text" name="t1" id="t1" value="<?php echo $_SESSION['dana1'] ?>">
  11. <input type="text" name="t2" id="t2" value="<?php echo $_SESSION['dana2'] ?>" >
  12.  
  13. <input type="submit" name="submitx" id="submit1" value="submit1">
  14. <input type="submit" name="submitx" id="submit2" value="submit2">
  15.  
  16. </form>


i raport.php
  1. <?php
  2. if($_POST['submitx']=='submit1'){echo $_POST['t1'];} else {echo $_POST['t2']; }
  3. $_SESSION['dana1']=$_POST['t1'];
  4. $_SESSION['dana2']=$_POST['t2'];
  5.  
  6. ?>

teraz możesz cofać.
pela222
Ok no to chyba mi się udąło rozwiązać mój problem...dajcie znać co myślicie o tym rozwiązaniu:
Plik nr1 (formularz wyjściowy - form.php)
  1. <?php
  2. ?>
  3. <form action="weryf.php" method="post">
  4. <select name="type">
  5. <option value="single">Single Life</option>
  6. <option value="dual">Dual Life</option>
  7. </select>
  8. <input type="text" name="name1"></td>
  9. <input type="text" name="name2"></td>
  10. <input name="eng" value= "ENG" type="submit">
  11. <input name="pl" value= "PL" type="submit">
  12. </form>


Plik nr2 (weryf.php)

  1. <?php
  2. $_SESSION['name1'] = $_POST['name1'];
  3. $_SESSION['name2'] = $_POST['name2'];
  4. $_SESSION['type'] = $_POST['type'];
  5.  
  6. if ( isset ( $_POST['eng'] ) )
  7. {
  8. header("Location: form1.php");
  9. }
  10. if ( isset ( $_POST['pl'] ) )
  11. {
  12. header("Location: form1pl.php");
  13. }
  14. ?>


Plik nr3 (wyświetla polską lub angielską wersję - form1.php lub form1pl.php) załączam tylko wersję form1.php (ang)

  1. <?php
  2. $name1 = $_SESSION['name1'];
  3. $name2 = $_SESSION['name2'];
  4. $type = $_SESSION['type'];
  5. $price = $_SESSION['price'];
  6.  
  7. Print_r ($_SESSION);
  8. ?>
  9. <form action="form2.php" method="post">
  10. <input type="checkbox" name="check1[]" checked="checked" value="Your name is <?php echo $name1; ?>."> - Your name is <?php echo $name1; ?><br>
  11. <input type="checkbox" name="check1[]" checked="checked" value="Your wife name is <?php echo $name1; ?>."> - Your wife name is <?php echo $name2; ?><br>
  12. <input type="checkbox" name="check1[]" checked="checked" value="Insurance type selected: <?php echo $name1; ?>."> - Insurance type selected: <?php echo $type; ?><br>
  13. <input type="button" value="Back" onClick="history.go(-1);return true;">
  14. <input type="submit" value="Next">
  15. </form>


Jak myślicie czy to jest elegancje rozwiązanie problemu?
Formularz pamięta dane po cofnięciu, wreszczie uzyskałem fukcjonalność przesłania danych do róznych formularzy po wciśnięciu różnych submitów bez wykorzystania javascript (przy korzystaniu z javascript musiałem dla każdego pola definiować cos w stylu:
  1. <input type="text" name="name2" value="<?php echo $_SESSION['name2'] ?>">

aby formularz pamiętał dane.

Czekam na wasze opinię czy dobrze korzystam z sesji...

bardzo dziękuję koledze celbarowicz za pomoc...chodziło mi o coś innego ale mnie świetnie naprowadziłeś..
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.