Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][HTML]dwie lokacje action w formularzu
Forum PHP.pl > Forum > Przedszkole
dark_root
Jak w formularzu w action dać kilka ścieżek do plików docelowych?
Zyx
Nijak. Jakby się dało, to by to pole nazwali actions, a nie action smile.gif. Domyślam się, że interesuje Cię coś takiego, jak na Wikipedii, że są dwa przyciski, np. "Wyślij" i "Podgląd", które robią co innego z formularzem. To możesz dostać na dwa sposoby:

1. Nadaj obu przyciskom jakąś nazwę i wysyłaj do tego samego pliku PHP. Będzie on mógł sprawdzić prosto, który przycisk został wciśnięty i odpowiednio zareagować:

Kod
if(isset($_POST['przycisk1']))
{
  // wcisnieto przycisk 1
}


2. Użyj JavaScript do przypisania atrybutowi "action" odpowiedniej wartości tuż przed wysłaniem: http://www.codeproject.com/KB/scripting/multiaction.aspx
dark_root
A jak zrobić taki skrypt sprawdzający?
Shili
A po co Ci kilka ścieżek?
Bardzo możliwe że można to zrobić jakoś inaczej, opisz tylko co chcesz dokładnie zrobić.
pest
Jeśli chodzi o dwa przyciski to oba mogą być type="submit" i mieć różne value.

W skrypcie robisz:
  1. <?php
  2. if($_POST['submit'] == 'value1')
  3. { ... }
  4. elseif($_POST['submit'] == 'value2')
  5. { ... }
  6. ?>


Jak bardzo chcesz to możesz nawet przekierowanie zrobić redirect 307 (tempora redirect), ale wydaje mi się mocno zbędne takie rozwiązanie.

Co do zmiany pola action - możesz nadać parametr action (lub zmienić go) z poziomu JS. Znajdujesz odpowiedni element form w DOMie i dajesz twojForm.action = 'inne.action'.
dark_root
Zrobiłem takie coś
pl.htm
Kod
<form action="pl.php" method="post">
<input name="dl.start" value="value1" type="submit">
</form>
<form action="pl.php" method="post">
<input name="dl.start" value="value2" type="submit">
</form>

pl.php
Kod
<?php
if($_POST['submit'] == 'value1')
header('Location: http://www.pl.pl');
elseif($_POST['submit'] == 'value2')
header('Location: http://www.pl.de');
?>

Jednak nie działa. Nie pokazuje się żaden błąd ani nic się nie dzieje. CO robię źle?
Shili
Patrząc na kod php musisz nadać atrybut name="submit" przyciskowi wysyłającemu.
dark_root
MI też się wydawało, że to zależy od name, ale Pest napisał wyżej, iż może zależeć również od value. Da się jakos kliknąć na btton jeśli nie ma on nazwy?
synu
przyciski dodaj nie jako submit, tylko jako button:
<input type="button" onclick="akcja1(this.form)"/>
<input type="button" onclick="akcja2(this.form)"/>
Shili
Cytat
MI też się wydawało, że to zależy od name, ale Pest napisał wyżej, iż może zależeć również od value.
Ależ oczywiście, że może. Nie zrozumieliście się po prostu.

Name muszą mieć i tak. Bo odwołując się przez $_POST['nazwa'] pobierasz value pola formularza o name="nazwa".
Innymi słowy - submity mogą mieć taki sam name (i nawet warto żeby miały), różnią się jedynie value i na podstawie tej value wybierasz sobie odpowiednią akcję już po stronie php, jak zresztą to zrobiłeś winksmiley.jpg

Czyli innymi słowy - albo w formularzu zmieniasz name na submit, albo w pliku php $_POST['submit'] na $_POST['dl.start']
pest
Sorki, moja wina... nie napisałem, że:
przydałoby się nadać jeszcze parametr name="submit"

Ale to już tutaj zostało napisane i rozwiązanie już masz.
dark_root
Problem w tym, że strona, do której przycisku chciałem się odwołać nie należy do mnie i nie ma określonego name. Temat jest jednak już nie ważny bo posłużyłem się cURL.
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.