ďťż
Podstrony
|
telcocafeStworzyłem formularz:<form action="skrypt_pierwszy.php" method="post"> <input type="text" id="jakistekst" name="jakistekst"> <input type="reset" value="Wyczyść"><button>Przetwórz przez inny skrypt</button><input type="submit" value="Wyślij"> </form> I chcliałbym, aby Button "Przetwórz przez inny skrypt" wysyłał mi zawartość z pola "jakistekst" metodą "post" do skryptu "skrypt_drugi.php". Czy da się to jakoś zrobić?? nadając name przyciskom submit możesz rozróżniać w PHPie, który został wciśnięty (będzie w $_POST) i odpowiednio zareagować. wiem o co ci chodzi. jeszcze raz przemyślę rozwiązanie, ale chyba to nie przejdzie, bo wynik działania tego buttona ma być wyświetlany w innym oknie i przetwarzany przez inny skrypt. Użytkownik czychacz edytował ten post 17 wrzesień 2008, 09:49 Podziel kod na funkcję, czy też klasy, tak by nie trzeba było wysyłać formularza pod inny plik ;) Możesz też poczytać o wzorcach projektowych jak np. MVC. dzielenie kodu nic nie da. to musi być zrobione tak: wchodzi ktoś sobie na stronkę z formularzem. są tam trzy przyciski: Wyczyść, Drukuj i Wyślij. i chce żeby ten ktoś miał wybór: albo drukuje zawartość formularza albo ją wysyła. drukowanie musi być w oddzielnym skrypcie, bo jest on na innym serwerze. ja tylko wiem jakie parametry przesłać. dodam jeszcze, że drukowanie jest obsługiwane przez FPDF, więc gdyby nawet to wszystko upchać w jeden skrypt to po drukowaniu (wyświetleniu podglądu PDFa) użytkownik musiałby od nowa wypełniać formularz chcąc go wysłać. Dlatego musi to być zrobione przez przesyłanie metodą POST Użytkownik czychacz edytował ten post 17 wrzesień 2008, 11:52 możesz zawsze cURLem wysłać żądanie do zewnętrznej usługi i zwrócić PDFa jeżeli usługa go wygeneruje :) Lub też zabawa z Javascriptem i np. zmiana action przed wysłaniem ;) ale to jest niepewne rozwiązanie. widzę że ty chyba za bardzo nie pomożesz, ale dzięki. czekam na inne posty Riklaunim to weteran na Forum, więc wyczerpał już pomysły. W zwykłym HTML-u tego nie zrobisz. Musisz albo kombinować po stronie serwera, albo przez Javascript zmieniać atrybut action. Użytkownik andrzej_aa edytował ten post 17 wrzesień 2008, 20:41 w takim razie napiszcie jak zmienić atrybut action w Java Script Jeżeli masz usługę sieciową np. REST w Flickr, czy Gdata w Google to żeby wysłać żądanie POST nie musisz dawać użytkownikowi formularza. Jeżeli chcesz wygenerować z danych z formularza PDF lub zrobić coś innego to robisz 2 przyciski submit o różnych nazwach i rozróżniając w kodzie PHP który z nich został wciśnięty - wykonujesz odpowiedni kod. Jeżeli PDF to przygotowujesz dane i wysyłasz żądanie POST do zewnętrznego skryptu (usługi) za pomocą np. cURL. Użytkownik nawet nie będzie o tym wiedział ani tego widział. Tak to powinno być zrobione. Zabawa w podmianę action formularza, tym bardziej za pomocą Javascript to rozwiązanie w stylu script kiddie i nie zawsze zadziała (obsługa JS) i też tracisz możliwość obsługi błędów skryptu-serwera generującego PDF bo przenosisz użytkownika na drugi serwer :) w takim razie pozostaje mi wysyłanie danych metodą GET. czy są jakieś ograniczenia dotyczące ilości danych wysyłanych tą metodą? (np. ile maksymalnie można umieścić znaków w adresie linka) w takim razie pozostaje mi wysyłanie danych metodą GET. czy są jakieś ograniczenia dotyczące ilości danych wysyłanych tą metodą? (np. ile maksymalnie można umieścić znaków w adresie linka) Znaczy się nie chcesz tego zrobić poprawnie? Tak, są ograniczenia na ilość danych wysłanych przez GET ;) 2000-4000 znaków całego querystringa z tego co pisałeś tylko tak mogę zrobić to tak, aby zachować należytą funkcjonalność. nie mogę zastosować dwóch przycisków submit, bo wtedy po kliknięciu na ten, który ma generować PDFa, od razu wszystko przejdzie do widoku PDF, a wtedy użytkownik nie będzie mógł zapisać danych w bazie, bo na przykład w firefoxie dane formularzy są kasowane po przejściu na następną stronę. gdyby istniał zbiór jakichś funkcji, które pozwalają na przesyłanie danych formularza metodą POST w java script to moje położenie byłoby inne. naucz się czytać. Pisałem ci o wysyłaniu żądań POST za pomocą cURL :P a no fakt, sorry. ale mógłbyś mnie naprowadzić na jakiś art czy coś o tym?? Tutaj masz bardzo ładny przykład - http://pl.wikipedia.org/wiki/CURL. W manualu PHP znajdziesz też wyjaśnienia oraz szersze opisy - http://pl2.php.net/curl. pojawia się tylko następujący problem: curl nie mogę zastosować w javascript, więc nie podepnę go pod żaden przycisk. Oporny jesteś If (isset($_POST['pdf'])) { .. PDF wysyłamy żądanie CURLem do zewnętrznego skryptu i wyświetlamy wynik header('Content-type: application/pdf'); # chyba dobre;) } else if (isset($_POST['costam'])) { .. nie pdf } Żądanie CURLem wysyłasz w PHP w zależności od tego, który przycisk submit został wciśnięty. nie wiem czy dobrze rozumiem, ale: If (isset($_POST['pdf'])) { .. PDF wysyłamy żądanie CURLem do zewnętrznego skryptu i wyświetlamy wynik header('Content-type: application/pdf'); # chyba dobre;) } tutaj po wykryciu parametru o nazwie 'pdf' przechodzi mi do skryptu zewnętrznego, a else if (isset($_POST['costam'])) { .. nie pdf } tutaj przechodzi do skryptu standardowo zdefiniowanego. po pierwsze: to jest php wiec nie podepnę go pod przycisk. po drugie: nie będę mógł pozostawić formularza nienaruszonego tak, aby ktoś po obejrzeniu pdfa od razu (bez powtórnego wpisywania tych samych danych) mógł dodać zawartość do bazy. dlatego chciałem to w javascript zrobic. moja koncepcja była taka: najpierw wczytuje się formularz, a ktoś sobie go wypełnia. później klika przycisk "drukuj" (czy "stwórz pdf") i wyskakuje mu nowe okno z pdfem. jeśli pdf mu się podoba to zamyka go i widzi formularz który wypełnił (główne okno) i może dodać zawartość do bazy. myślę, że teraz lepiej wytłumaczyłem. żądanie wysłane CURLem jest niewidoczne dla użytkownika. Możesz wyświetlić mu PDFa, możesz zapisać otrzymanego PDFa i dać linka, możesz zapisać same dane itd. itp. Nie potrzeba tutaj Javascriptu, ani nie jest on dobrym rozwiązaniem. Wysyłasz formularz z kilkoma przyciskami submit o różnych nazwach i po obecności jednego z nich w $_POST wiesz który był kliknięty. Wysłanie żądania nie oznacza przekierowania :P Najpierw czytaj, po tym próbuj robić. Proponuję target="_blank", skoro chcesz otworzyć wynik w nowym oknie. dziś i jutro nie będę mógł sprawdzić, ale myślę, że z tym target="_blank" może coś się zrobi. |
|||
Sitedesign by AltusUmbrae. |