Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: 2 submity jeden new window
Forum PHP.pl > Forum > PHP
demoniczny
Mam problem z submitami zatwierdzającymi formularze.

Próboje zrobic Jeden submit Dodaj a drugi podglad... ktory by otwieral sie w nowym okienku o danych rozmiarach

<form> <= i tu jest ten problem ze do tego trzeba forma dodac paramert js lecz wtedy w obu submitach bedzie sie otwierac nowe okno

;/
mortus
Zamiast pola typu submit użyj przycisku (button).
  1. <form action="" method="post">
  2. <!-- jakieś pola -->
  3. <input type="submit" name="dodaj_submit" value="Dodaj" />
  4. <input type="button" name="podglad_button" value="Podgląd" onclick="podgladWNowymOknie(); return false;" />
  5. </form>

Wtedy wyświetlanie w nowym oknie realizuje funkcja podgladWNowymOknie() uruchamiana po kliknięciu na przycisk.
Beacri
Ja bym to zrobił jakoś tak:


  1.  
  2. <head><script type="text/javascript">
  3. <!--
  4. function op(){
  5. var txt1 = document.forms['Formularz'].pole1.value;
  6. var txt2 = document.forms['Formularz'].pole2.value;
  7. var txt3 = document.forms['Formularz'].pole3.value;
  8. (...)
  9. request = new XMLHttpRequest();
  10. request.open("POST","adres pliku",true);
  11.  
  12.  
  13. window.open('adres pliku', 'nazwa').focus();
  14. return false;
  15. }
  16. //-->
  17.  
  18. <form action="cel.php" method=post>
  19. <input type=text name=pole1>
  20. <input type=text name=pole2>
  21. <input type=text name=pole3>
  22. (...)
  23. <button onclick=op()>Podgląd</button>
  24. </form>
  25. </body>
  26.  
  27.  
  28.  

po kliknięciu w button, wywołuje funkcję, która odczytuje dane z formularza (lepiej to jakąś pętla zrobić, niz tak jak ja biggrin.gif), później wysyła te dane do pliku .php.( fajnie jakby ten plik zapisał te dane). Później otwierasz okno z danymi smile.gif
mortus
@Beacri: A nie przyszło Ci do głowy, że Podgląd ma umożliwić sprawdzenie danych przed wysłaniem (stąd również przycisk Dodaj)? Niemniej o to mniej więcej chodzi w rozwiązaniu problemu.
Beacri
@mortus
tak, ale skądś muszą się te dane wziąć w oknie podglądu. Przycisk "Dodaj" ładuje dane od razu do bazy danych, a "Podgląd" do jakiegoś tymczasowego pliku, który istnieje tylko podczas edycji.
mortus
I myślisz, że te dane znajdą się w oknie podglądu po wywołaniu takiego kodu:
[JAVASCRIPT] pobierz, plaintext
  1. request = new XMLHttpRequest();
  2. request.open("POST","adres pliku",true);
  3. window.open('adres pliku', 'nazwa').focus();
[JAVASCRIPT] pobierz, plaintext

Otóż jesteś w błędzie. W linii 2 wywołujesz jedno żądanie, a w linii 3 wywołujesz już kolejne żądanie. Oba nie mają ze sobą nic wspólnego, a przesłanych w ten sposób danych na pewno w nowo otwartym oknie nie zobaczysz. Tak naprawdę nie potrzeba żadnych dodatkowych plików tymczasowych, ale to już nie dotyczy problemu przedstawionego przez autora tematu.
Beacri
Dobra, moja wina, że nie sprecyzowałem w tym kodzie "nazwa pliku", ale jak już opisałem wcześniej dwa razy chodziło mi o to, żeby ten plik był jakimś skryptem php, który zapisze dane do jakiegoś pliku tymczasowego, a potem go odczytuje. Może to być to ten sam plik, chociaż łatwiej to zrobić na zasadzie:


[JAVASCRIPT] pobierz, plaintext
  1. request = new XMLHttpRequest();
  2. request.open("POST","plik.php",true);
  3. window.open('zapisany_plik_tymczasowy.html ', 'nazwa').focus();
[JAVASCRIPT] pobierz, plaintext




---------------------------------------
Właśnie znalazłem lepszy sposób na wyświetlanie podglądu:

[JAVASCRIPT] pobierz, plaintext
  1. function noweOkno() {
  2. var noweOkno = window.open('', 'okno', 'toolbar=no,location=no,width=200,height=200');
  3. with (noweOkno) {
  4. document.writeln('<html>');
  5. document.writeln('<head>');
  6. document.writeln('<title>Tytuł okienka</title>');
  7. document.writeln('<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />');
  8. document.writeln('</head>');
  9. document.writeln('<body>');
  10. document.writeln('<p>To jest okno utworzone dynamicznie <strong>On-The-Fly</strong></p>');
  11. document.writeln('</body>');
  12. document.writeln('</html>');
  13. document.close() //kończymy zapis do dokumentu
  14. }
  15. }
[JAVASCRIPT] pobierz, plaintext

Źródło: http://doman.art.pl/kursjs/kurs/okna.html

przy czym możesz pobrać dane z okna macierzystego za pomocą document.forms['Formularz'].pole3.value
demoniczny
Dobra dzieki wielkie za pomoc...
Udalo mi sie z przykladem wyzej
  1. <script type="text/javascript">
  2. function noweOkno() {
  3. var id = document.getElementById("id");
  4. var noweOkno = window.open('', 'okno', 'toolbar=no,location=no,width=500,height=400');
  5. with (noweOkno) {
  6. document.writeln('<html>');
  7. document.writeln('<head>');
  8. document.writeln('<title>Tytuł okienka</title>');
  9. document.writeln('<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />');
  10. document.writeln('</head>');
  11. document.writeln('<body>');
  12. document.writeln('<p>To jest okno utworzone dynamicznie <strong>On-The-Fly</strong></p><br><p>' + id.value + '</p>');
  13. document.writeln('</body>');
  14. document.writeln('</html>');
  15. document.close() //kończymy zapis do dokumentu
  16. }
  17. }
  18. </script>
  19.  
  20. <form method=POST>
  21. <input type=mas name="nazwa" id="id">
  22. <input type=submit onClick="return noweOkno();">
  23. </form>


tylko szkoda ze skrypt tego nie przerabia tylko sam js poniewaz chcial bym do tymczasowego pliku wrzucic jeszcze zdjecie dodane... do formy
a po zamiknieciu formularza unlink();
ale to juz jest nieistotne dziękuje za pomoc
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.