Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak stworzyć w formularzu dwa guziki submit?
Forum PHP.pl > Forum > Po stronie przeglądarki > HTML \ XHTML
mdco
Jak stworzyć w formularzu dwa guziki submit aby wysyłały dane do różnych stron docelowych?
revyag
Na jednym formularzu tego nie zrobisz. Musisz zrobić dwa formularze
nospor
A mi się udało:
  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>
wassago
No tak, ale za pomocą samego xhtml'a tego nie zrobisz - a właśnie tu trafił ten topik.
mdco
DZIEKI. Podaj adres to prześle Ci słoik z miodem winksmiley.jpg (Widziałem, że nie ma rzeczy niemożliwych)
crash
No a zwykły button z funkcja submit() można traktować jako przycisk submit chyba...
revyag
No faktycznie, nie myślałem za długo jak napisałem posta snitch.gif
mdco
Cytat(crashu @ 2005-07-19 09:38:16)
No a zwykły button z funkcja submit() można traktować jako przycisk submit chyba...

Tak tylko że funkcja submit() nie ma argumentu action, a mnie chodzi o przekierowanie formularza na dwie różne strony, tak jak napisał nospor.
crash
No to używasz tego co zaproponował nospor dodatkowo ustawiając te przycisku na button i dodając do akcji submit()...
nospor
Ale panowie: poco używać button i na siłę wstawiać mu submit()? Od tego jest przycisk submit
crash
nospor: kombinowaliśmy tak (a przynajmniej ja) bo myślałem, że standard XHTML nie pozwala na użycie więcej niż 1 przycisku submit w formularzu. Właśnie sprawdziłem - validator się o nic nie rzuca, więc chyba nic nie stoi na przeszkodzie żeby użyc paru submitów... EOT
nospor
Byloby wręcz dziwne gdyby nie pozwalał.PRzecież dwa lub więcej submitów może też się odnosić do jednego formulalrza. Każdy z nich może powodować inną akcję. A to jaki wciśnięto rozpoznawać można np. isset($_POST['nazwa submita'])
yaroo_s
Ja troche podbije temat, mam problem podobny... mi chodzi o to że w jednym formularzu są są dwa przyciski submit, po naciśnięciu ma wykonać się jedna albo druga akcja.

wyglada to tak:
  1. <table class=tabela border="1" cellpadding="10" class="ogolna">
  2. <tr><td>Tekst</td></tr>
  3. <tr><td>
  4. <form action="index.php?page=monografia.php" method="post">
  5. <input type="submit" value="Podgląd pliku"></form></td></tr>
  6. <tr><td><form action="index.php?page=monografia.php" method="post">
  7. <input type="hidden" name="akcja" value="edytuj">
  8. <textarea name="opis" cols="80" rows="30">'.$tekst.'</textarea></td></tr>
  9. <tr><td><input type="submit" value="Zapisz nowy tekst"></td></tr>
  10. </form>
  11. </table>


Są dwa pola. po przeładowaniu strony wyświetlają sie takie akcje:

  1. <?php
  2. if(isset($_GET['akcja']))
  3. {
  4. switch($_GET['akcja'])
  5. {
  6. case 'edytuj' :
  7.  {
  8. $opis = pc($_POST['opis']);
  9. $zapytanie = "update rozne set ro_1='".$opis."' where ro_id='patron'";
  10. $wynik = mysql_query($zapytanie);
  11. if($wynik)
  12. komunikat('Nowa monografia została zapisana.');
  13. else
  14. komunikat_b('Nie udało się zapisać nowej monografii. Proszę spróbować raz jeszcze.');
  15.  
  16.  }
  17.  break;
  18.  
  19. case 'podglad' :
  20.  {
  21. $patron = wc($tekst_patron,1);
  22. echo '<table><tr><td>'.$patron.'</td></tr></table>';
  23.  
  24.  }
  25.  break;
  26. }
  27.  
  28. }
  29. ?>


Przepuszczam że należy włożyć coś jeszcze w formularzu, ale pola ukryte tego nie obsłużą.. ma ktoś jakiś pomysł..
nospor
nadaj submitom rozne nazwy, dla jednego np: name="edit", a dla drugiego, name="preview"
a potem w kodzie php:
  1. <?php
  2. if (isset($_POST['edit'])){
  3. //tutaj edycja
  4. } elseif(isset($_POST['preview'])){
  5. //tutaj podglad
  6. }
  7. ?>
Cienki1980
Albo nadasz każdemu SUBMITOWI nazwę czyli:
  1. <input type="submit" name="podglad" value="Podglad pliku">
  2. <input type="submit" name="zapisz" value="Zapisz">


i w php będziesz sprawdzał czy dany submit był kliknięty:
  1. <?php
  2. if(isset($_POST['podglad']))
  3.  //podglad pliku
  4. elseif(isset($_POST['zapisz']))
  5.  //zapis pliku
  6. ?>


Możesz też wykorzystać buttony i JS. Po zdarzeniu onClick na któryś z buttonów wywołujesz funkcję JS, która ustawia jakieś pole hidden określoną wartością i zatwierdza formę.
Coś w tym stylu:
  1. function zatwierdz(a)
  2. {
  3. document.getElementById('akcja').value=a;
  4. document.xx.submit();
  5. }
  6. <form name="xx">
  7. <input type="hidden" id="akcja" name="akcja" value="">
  8. <input type="button" value="zapisz" onClick="zatwierdz('zapisz');">
  9. <input type="button" value="podglad" onClick="zatwierdz('podglad');">
  10. </form>

w php odczytujesz w switch'u wartość $_POST['akcja'];
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.