jacusek
5.08.2010, 07:44:40
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
5.08.2010, 08:28:55
Musisz się chyba pobawić JavaScriptem(oprogramowanie zdarzenia onsubmit formularza). W czystym HTML tego nie uzyskasz.
jacusek
5.08.2010, 11:42:54
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
5.08.2010, 12:08:13
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
_olo_1984
5.08.2010, 12:14:28
lub dodatkowa opcja w formularzu
jacusek
5.08.2010, 12:23:20
@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.
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
5.08.2010, 12:40:45
Pokaże kod bo nie wiem czy umiem to dobrze wytłumaczyć
<form name="form" id="form" method="post" action="wys_form.php"> --dalsza część formularza
<input type="submit" name="submit" value="Zobacz"> <input type="submit" name="submit" value="Zapisz"> <input type="reset" name="reset" value="Wyczysc">
I plik obsługujący ten formularz:
<?php
//obługa błędów
switch($_POST['submit']){
case 'Zobacz':
include('podglad.php');
break;
case 'Zapisz':
include('test3.php');
break;
}
?>
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
5.08.2010, 12:41:52
Cytat(jacusek @ 5.08.2010, 13:23:20 )

Próbowałem trochę javy, ale niestety kompletnie się na niej nie znam.
jacusek
5.08.2010, 12:53:26
No dobra, ale to raczej nie pomogło w tym konkretnym problemie
gorden
5.08.2010, 13:25:01
nie wiem do końca o co Ci chodzi, ale kod, który mógłby pomóc.
<?
if(isset($_POST['submit_ta_karta']) or
isset($_POST['submit_nowa_karta'])) { $xx = $_POST['tekst1'];
?>
<form action="yy.php" method="post">
<input type="text" name="tekst1"><br>
<input type="submit" name="submit_ta_karta" value="Wyślij w tej karcie">
<input type="submit" name="submit_nowa_karta" value="Wyślij w nowej karcie" onclick="target=('_blank');">
</form>
pierwszy submit pokaże "Oto tekst: $xx" w aktualnej karcie, a drugi - to samo, tylko że w nowej.
jacusek
6.08.2010, 09:30:10
Nie do końca o to mo chodziło. Natomiast częściowo pomogło mi to rozwiązanie:
<input type="submit" name="zapisz" value="Zapisz"> <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
6.08.2010, 11:03:14
dwa_submity.php
<?php
if(isset($_POST['zobacz'])) { $tresc = $_POST['tekst'];
echo"Oto Twója treść:<br>$tresc<br><br><hr><br>"; }
if(isset($_POST['zapisz'])) { $tresc = $_POST['tekst'];
//kod do zapisania
?>
<form action="dwa_submity.php" method="post">
<input type="text" name="tekst"><br>
<input type="submit" name="zapisz" value="Zapisz">
<input type="submit" name="zobacz" value="Zobacz" onclick="target=('_blank');">
</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
6.08.2010, 12:05:29
Niestety u mnie nie działa

. Na różnych przeglądarkach niestety

. ale jeszcze powalczę i może spróbuję zrobić od początku
gorden
6.08.2010, 12:08:13
Co tu robić od początku?

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
6.08.2010, 12:18:15
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
6.08.2010, 12:49:42
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
6.08.2010, 12:56:39
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.