Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][PHP]dwa submity
Forum PHP.pl > Forum > Przedszkole
jacusek
Witam. Stworzyłem formularz z dwoma submitami i mam z związku z tym pytanie czy da się zrobić tak, żeby jeden z submitów otwierał się w nowym oknie, a drugi w tym samym??
Z góry dzięki za odpowiedź
kipero
Musisz się chyba pobawić JavaScriptem(oprogramowanie zdarzenia onsubmit formularza). W czystym HTML tego nie uzyskasz.
jacusek
Dzięki za odpowiedź, ale z tego co wyczytałem powininem mieć dwa osobne pliki obsługujące oba zdarzenia. Mam coś co generuje pdf i zapisuje do bazy i coś go generuje pdf ale tylko jako podgląd wydruku. I pytanie czy przy on submit można to zrobić jednym plikiem.
gorden
a nie możesz zrobić tak, że dwa submity odsyłają do tej samej strony, ale treść strony zależy od tego, który submit został kliknięty? proste rozwiązanie tongue.gif
_olo_1984
lub dodatkowa opcja w formularzu
jacusek
@gorden tak mam właśnie zrobione. w case switch($_POST['submit']) btw rozwiązanie znalezione gdzieś na tym forum. Ale właśnie z różnych powodów chce żeby jeden submit otwierał wszystko na osobnej karcie przeglądarki, a inny nie otwierał dodatkowej karty. Chodzi o to, ze na dodatkowwej karcie ma być podgląd wydruku, a na tej samej karcie sam wydruk po przyciśnięciu odpowiednich submitów. Próbowałem trochę javy, ale niestety kompletnie się na niej nie znam.
thek
Wcale nie dodatkowa opcja. To jedynie submit z innym name. Robisz detekcję i w momencie przeładowania wykrywasz który kliknięty. Od biedy wystarczy tylko tyle, że kliknięcie w "Save as pdf" dorzuci do normalnego wyniku jeszcze link do utworzonego pliku na serwerze czy coś w tym stylu. Zależy jak bardzo ma to być przyjazne rozwiązanie.
jacusek
Pokaże kod bo nie wiem czy umiem to dobrze wytłumaczyć
  1. <form name="form" id="form" method="post" action="wys_form.php">
  2. --dalsza część formularza
  3. <input type="submit" name="submit" value="Zobacz">
  4. <input type="submit" name="submit" value="Zapisz">
  5. <input type="reset" name="reset" value="Wyczysc">
  6. </form>

I plik obsługujący ten formularz:
  1. <?php
  2. //obługa błędów
  3. switch($_POST['submit']){
  4. case 'Zobacz':
  5. include('podglad.php');
  6. break;
  7. case 'Zapisz':
  8. include('test3.php');
  9. break;
  10. }
  11. ?>

Oba submity generują pdf. z tym, ze chciałem żeby Zobacz otwierał się w nowym oknie, a Zapisz w tym samym. Idealną opcją byłoby przy otwieraniu podglądu komunikat o tym, żeby tego nie drukować - ewentualnie blokada drukowania w momencie takie próby - oczywiście różwnież z jakimś komunikatem.
Plik na sserwerze się nie tworzy bo nie ma takiej potrzeby. To maly serwis, więc wszystko tworzy się w locie.
thomson89
Cytat(jacusek @ 5.08.2010, 13:23:20 ) *
Próbowałem trochę javy, ale niestety kompletnie się na niej nie znam.


jacusek
No dobra, ale to raczej nie pomogło w tym konkretnym problemie
gorden
nie wiem do końca o co Ci chodzi, ale kod, który mógłby pomóc.

  1. <?
  2. if(isset($_POST['submit_ta_karta']) or isset($_POST['submit_nowa_karta'])) {
  3. $xx = $_POST['tekst1'];
  4. echo"Oto tekst: $xx"; exit; }
  5. ?>
  6.  
  7. <form action="yy.php" method="post">
  8. <input type="text" name="tekst1"><br>
  9. <input type="submit" name="submit_ta_karta" value="Wyślij w tej karcie">
  10. <input type="submit" name="submit_nowa_karta" value="Wyślij w nowej karcie" onclick="target=('_blank');">
  11. </form>


pierwszy submit pokaże "Oto tekst: $xx" w aktualnej karcie, a drugi - to samo, tylko że w nowej.
jacusek
Nie do końca o to mo chodziło. Natomiast częściowo pomogło mi to rozwiązanie:

  1. <input type="submit" name="zapisz" value="Zapisz">
  2. <input type="submit" name="zobacz" value="Zobacz" onclick="target=('_blank');">

Częściowo dlatego że teraz obie opcje i zabacz, i zapisz otwierają mi się w nowym oknie.
gorden
dwa_submity.php
  1. <?php
  2. if(isset($_POST['zobacz'])) {
  3. $tresc = $_POST['tekst'];
  4. echo"Oto Twója treść:<br>$tresc<br><br><hr><br>"; }
  5.  
  6. if(isset($_POST['zapisz'])) {
  7. $tresc = $_POST['tekst'];
  8. //kod do zapisania
  9. echo"Zapisano...";
  10. exit; }
  11. ?>
  12.  
  13. <form action="dwa_submity.php" method="post">
  14. <input type="text" name="tekst"><br>
  15. <input type="submit" name="zapisz" value="Zapisz">
  16. <input type="submit" name="zobacz" value="Zobacz" onclick="target=('_blank');">
  17. </form>


ten kod mi działa, wszystko się wyświetla jak powinno. w starej karcie submit o nazwie "zapisz", a w nowej - submit "zobacz". oba wyświetlają podaną treść w warunkach. nie wiem, czemu Ci nie działa. spróbuj zrobić to na podstawie mojego kodu, lub go przerobić.
jacusek
Niestety u mnie nie działa sad.gif. Na różnych przeglądarkach niestety sad.gif. ale jeszcze powalczę i może spróbuję zrobić od początku smile.gif
gorden
Co tu robić od początku? blinksmiley.gif skopiuj podany kod, wklej i uruchom. Wpisz jakiś tekst i kliknij w któryś button.. Spróbuj najpierw bez przerabiania. U mnie czy formularz w oddzielnym pliku, czy w jednym, oba działają.
jacusek
Widzisz problem polega na obsłudze błędów, która sprawdza czy jest wypełniony formularz. Bez obsługi, która jest przecież konieczna rzeczywiście działa i to jest dla mnie zagadka.

//edit
No i pojawia się inny problem. Bo niby obsługa problemów działa, ale jeżeli chociaż raz użyję przycisku zobacz - wówczas przeglądarka z jakieś nieznanego mi powodu przy kaźźdym następnym przycisku zapisz otwiera mi w nowym oknie. Kiedy odświeżę stronę z formularzem to wszystko jest OK.

//edit2
Niestety błąd jest we wszystkich przeglądarkach jest taki sam. Więc błąd tkwi gdzieś w skrypcie
gorden
Dziwne.. kiedy kliknę zobacz, po czym zapisz, button zapisz otwiera się w nowej karcie, dopóki nie odświeżymy strony.. Zawsze możesz w ostateczności zrobić w nowej karcie, bez problemu.
Nie wiem jak rozwiązać ten problem, wybacz..
jacusek
no właśnie dziwne. Nie bardzo mogę zrobić to w nowej karcie to wtedy dane z formularza zawsze będą znajdowały się na pierwsze stronie i może to powodować że będą dwa razy do bazy wprowadzane. A to już kompletnie bez sensu
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.