Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Dwie różne akcje w jednym formularzu
Flake
post
Post #1





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 18.03.2010

Ostrzeżenie: (0%)
-----


Witam,

mam takie pytanie - czy istnieje możliwość wywołania opcji SUBMIT za pomocą JavaScript ale z inną wartością ACTION niż jest podana w formularzu?

Przyklad:

  1. <form method="post" action="akcja.php" id="formularz">
  2. <input type="text">
  3. <input type="submit">
  4. </form>
  5.  
  6. <input type="button" onclick="wyslij()">


kliknięcie submit wywola akcja.php a klikniecie buttona wywoła funkcje:

[JAVASCRIPT] pobierz, plaintext
  1. function wyslij(){
  2. Form = document.getElementById('formularz');
  3. Form.submit();
  4. }
[JAVASCRIPT] pobierz, plaintext


które też spowoduje użycie akcja.php

a czy da się zrobić tak żeby normalny SUBMIT wykonywał action.php a button np jakasinnaakcja.php?

Ten post edytował Flake 16.07.2010, 11:02:30
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 14)
flashdev
post
Post #2





Grupa: Zarejestrowani
Postów: 812
Pomógł: 117
Dołączył: 2.12.2008

Ostrzeżenie: (10%)
X----


Kod
// JavaScript
var idButtona = "...";
document.getElementsById(idButtona).onClick = function(){
document.getElementsById('formularz').action = 'jakasinnaakcja.php';
document.getElementsById('formularz').submit();
}


To powinno pomóc.

Ten post edytował flashdev 16.07.2010, 12:17:17


--------------------
Go to the top of the page
+Quote Post
Flake
post
Post #3





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 18.03.2010

Ostrzeżenie: (0%)
-----


ok, dzieki smile.gif


a jest np możliwość żeby submit wysyłał wartość? Mam w formularzu np 3 submity:

  1. <form method="post" action="akcja.php" id="formularz">
  2. <input name="wartosc" type="hidden" value="1">
  3. <input value="Wyslij 1" type="submit">
  4. ----------
  5. <input name="wartosc" type="hidden" value="2">
  6. <input value="Wyslij 2" type="submit">
  7. ----------
  8. <input name="wartosc" type="hidden" value="3">
  9. <input value="Wyslij 3" type="submit">
  10. </form>


to wszystko jest w tabelce podzielone na wiersze hidden - submit

Teraz pytanie - czy da sie zrobić tak, że do akcja.php trafi wartosc tylko z tego submita ktorego klikne? W tym wypadku dostaje wartosc zawsze ostatniego hiddena (czyli 3) a potrzebuje żeby skrypt w akcja.php wiedzial z ktorego buttona przyszla wiadomosc - wszystko musi byc w jednym formularzu.

Ten post edytował Flake 16.07.2010, 14:13:39
Go to the top of the page
+Quote Post
#luq
post
Post #4





Grupa: Zarejestrowani
Postów: 589
Pomógł: 91
Dołączył: 22.05.2008
Skąd: Gliwice

Ostrzeżenie: (0%)
-----


Przed wywołaniem zdarzenia submit, ustaw atrybut disable dla pozostałych submitów.

@edit
Eh... widzę, że @Flake sobie już poradził i edytował swój post smile.gif

Ten post edytował #luq 16.07.2010, 14:14:17


--------------------
Moja gra - scraby.io
Go to the top of the page
+Quote Post
Flake
post
Post #5





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 18.03.2010

Ostrzeżenie: (0%)
-----


Nie, poprostu chciałem przenieść ten problem do nowego tematu - ale jak zobaczyłem, że jest odpowiedź to wróciłem tutaj ^^
Go to the top of the page
+Quote Post
flashdev
post
Post #6





Grupa: Zarejestrowani
Postów: 812
Pomógł: 117
Dołączył: 2.12.2008

Ostrzeżenie: (10%)
X----


Cytat(Flake @ 16.07.2010, 14:54:53 ) *
ok, dzieki smile.gif


a jest np możliwość żeby submit wysyłał wartość? Mam w formularzu np 3 submity:

[...]


Przypisz każdemu submitowi parametr name.
Po stronie serwera będziesz mógł stwierdzić, który został kliknięty, oraz którą wartość użyć.


--------------------
Go to the top of the page
+Quote Post
Flake
post
Post #7





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 18.03.2010

Ostrzeżenie: (0%)
-----


jak do submitow przypisze name to jak później odczytać który został kliknięty?

mam (guziczki są tworzone dynamicznie w JavaScript wiec zmienia sie cyferka w name histButt0, 1, 2...)

  1. <input type="submit" value="historia" name="histButt0" class="historia">


i jak odczytać teraz że to ten guzik był kliknięty?

  1. $wartos = $_POST['histButt0'];
  2. echo $wartosc;


nie zwraca nic

Najlepiej jakby zwracał liczby bo wtedy moge to podpiąć pod MySQL.

-----

Z ustawieniem 'DISABLED' też próbowałem ale nie wiem jak ustawić wszystkie guziki poza tym który jest klikany.
Go to the top of the page
+Quote Post
#luq
post
Post #8





Grupa: Zarejestrowani
Postów: 589
Pomógł: 91
Dołączył: 22.05.2008
Skąd: Gliwice

Ostrzeżenie: (0%)
-----


Wytłumacz jeszcze raz co chcesz osiągnąć.

Klikasz na "Wyslij 3" i chcesz mieć tylko
Kod
$_POST = array(
    'wartosc' = 3
);

Tak?


--------------------
Moja gra - scraby.io
Go to the top of the page
+Quote Post
Flake
post
Post #9





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 18.03.2010

Ostrzeżenie: (0%)
-----


dokladnie tak smile.gif

Cały formularz tworzony jest w JavaScript więc tych elementów może być 3 a może być 10

Chodzi o to, że mam liste np 10 produktów i przy każdym z nich chce dodać guziczek 'historia' który pokaże mi historię sprzedaży danego produktu. Więc otrzymanie liczby z submita byłoby bardzo pomocne w zapytaniu MySQLowym smile.gif

Ten post edytował Flake 19.07.2010, 13:40:52
Go to the top of the page
+Quote Post
#luq
post
Post #10





Grupa: Zarejestrowani
Postów: 589
Pomógł: 91
Dołączył: 22.05.2008
Skąd: Gliwice

Ostrzeżenie: (0%)
-----


Za bardzo sobie utrudniasz sprawę.

Dlaczego nie stworzysz osobnych formularzy do osobnych sumbitów, przecież i tak to idzie pod różne akcje (btw. dlaczego idzie pod inne akcję)?
Dlaczego nie zmienisz metody przesyłania formularza na GETa?

Ogólnie to tak jak pisałem, jeśli jakiś input ma ustawiony atrybut disabled="disabled" to po stronie serwera tego pola nie ma...
  1. <form action="action.php" method="post">
  2. <input type="text" name="foo" />
  3. <input type="text" name="bar" value="cos tam" disabled="disabled" />
  4.  
  5. <input type="submit" name="go" value="Go" />
  6. </form>


action.php
  1. <?php
  2. echo '<pre>';
  3. print_r( $_POST );
  4. echo '</pre>';
  5. ?>


i to da:
Kod
Array
(
    [foo] =>
    [go] => Go
)


Ale po co to w ten sposób rozwiązywać jak można inaczej i będzie na pierwszy rzut oka widać jak to działa. Odpowiedz sobie na te 2 pytania postawione przeze mnie.


--------------------
Moja gra - scraby.io
Go to the top of the page
+Quote Post
Flake
post
Post #11





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 18.03.2010

Ostrzeżenie: (0%)
-----


Dwie akcje bo jedna wystawia fakture biggrin.gif a 2ga wyświetla tylko historie - niestety cały system jest już napisany - ja mam wprowadzić tylko poprawki - wiadomo, że łatwiej byłoby napisać od nowa no ale 'nie da się'

Z tego co czytam na necie (a teraz w Twoim poscie) to w momencie jakbym zrobił:

  1. <input type="submit" name="wartosc" value="1" />


to powinienem w $_POST[] mieć wartość => 1 - niestety jak wyświetlam $_POST[] to nie mam w ogóle klucza 'wartosc' co dziwne bo cała reszta z formularza się ładnie pojawia w $_POST
Go to the top of the page
+Quote Post
#luq
post
Post #12





Grupa: Zarejestrowani
Postów: 589
Pomógł: 91
Dołączył: 22.05.2008
Skąd: Gliwice

Ostrzeżenie: (0%)
-----


Cytat(Flake @ 19.07.2010, 14:42:32 ) *
niestety cały system jest już napisany - ja mam wprowadzić tylko poprawki

Rozumiem.

Więc zrób to tak:

Jeśli klikasz na drugi sumbit to wywoływana jest funkcja w JSie modyfikująca drzewko DOM do postaci:
  1. <form action="action.php" method="post">
  2. <input type="text" name="foo" value="1" disabled="disabled" />
  3. <input type="submit" name="go" value="Go" disabled="disabled" />
  4.  
  5. <input type="text" name="foo" value="2" />
  6. <input type="submit" name="go" value="Go" />
  7. </form>

a potem jest zdarzenie submit

Jeśli jest kliknięty pierwszy sumbit to
  1. <form action="action.php" method="post">
  2. <input type="text" name="foo" value="1" />
  3. <input type="submit" name="go" value="Go />
  4.  
  5. <input type="text" name="foo" value="2" disabled="disabled" />
  6. <input type="submit" name="go" value="Go" disabled="disabled" />
  7. </form>

etc.


--------------------
Moja gra - scraby.io
Go to the top of the page
+Quote Post
Flake
post
Post #13





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 18.03.2010

Ostrzeżenie: (0%)
-----


A można by zrobić tak?

dodać do tego hiddeny z disabled="disabled"
i do funkcji submita dodać coś w rodzaju:

form.elements[this+1].disabled=false; (wiem że to this+1 nie dziala - ale chodzi mi o ogólny pomysł)

?

w sensie żeby tuż przed wysłaniem formularza zmienić atrybut następnego po submicie elementu na disabled="" ? wtedy tylko hidden zaraz za submitem nie bedzie disabled i będzie mógł wysyłać liczby w wartości

Tylko jak zrobić to this + 1 ? smile.gif
Go to the top of the page
+Quote Post
#luq
post
Post #14





Grupa: Zarejestrowani
Postów: 589
Pomógł: 91
Dołączył: 22.05.2008
Skąd: Gliwice

Ostrzeżenie: (0%)
-----


Jeśli miałbyś tak:

  1. <input type="submit" name="wartosc" value="1" />
  2. <input type="submit" name="wartosc" value="2" />
  3. <input type="submit" name="wartosc" value="3" />


to w jQuery zrobiłbyś coś w ten deseń

Kod
$('#id_formularza submit').click(function(){
    $(this).parent().filter( 'input[type=submit]' ).attr( 'disabled', 'disabled' );
    $(this).removeAttr( 'disabled', 'disabled' );
    $(this).parent().attr( 'action', 'foo.php' ); // zmiana akcji formularza

    $(this).submit();
});


Powinno działać, nie sprawdzałem.

Ten post edytował #luq 19.07.2010, 20:52:32


--------------------
Moja gra - scraby.io
Go to the top of the page
+Quote Post
Flake
post
Post #15





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 18.03.2010

Ostrzeżenie: (0%)
-----


Witam,

wielkie dzięki za pomoc smile.gif rozwiązałem to w taki sposób:

  1. <input type="submit" value="Hist" onclick="hist(this)"><input type="hidden" value="0" disabled="disabled">
  2. <input type="submit" value="Hist" onclick="hist(this)"><input type="hidden" value="1" disabled="disabled">
  3. ...
  4. <input type="submit" value="Hist" onclick="hist(this)"><input type="hidden" value="n" disabled="disabled">


[JAVASCRIPT] pobierz, plaintext
  1.  
  2. function hist(par){
  3. ...
  4. par.parentNode.lastChild.disabled = false;
  5. ...
  6. formularz.submit();
  7. ...
  8. par.parentNode.lastChild.disabled = true;
  9. }
[JAVASCRIPT] pobierz, plaintext
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 21:58