Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML] Dwa przyciski - jeden formularz.
Forum PHP.pl > Forum > Przedszkole
L0k0
Witam, prawdopodobnie będzie to dość proste pytanie, jednakże drugi dzień ślęczenia nad tym zaczyna mnie irytować.

Mam formularz i do niego dwa przyciski: 'Wróć i popraw' oraz 'Sprawdź poprawność' czyli 'załaduj stronę poprzednią' i 'załaduj stronę następną'.

Nie wiem po czym sprawdzić, który został kliknięty. Próbowałem kilka sposobów - wszystkie zawiodły...

Kod nagłówka formularza i jedno z moich rozwiązań:
Kod
<form id="formID" action="index.php?page=<?php if ($_POST['przycisk'] == "przycisk_1"){ echo "strona_1"; } else { echo "strona_2";} ?>" method="POST">


Przyciski:
Kod
<button style="float:left; border:1px; border-style: solid; " type="submit" class="regular" name="przycisk" value="przycisk_1">
            <img src="gfx/formularze/back.gif" alt=""/>
            Wczytaj ponownie
            </button>
    
            <button style="float:right; border:1px; border-style: solid; margin-bottom: 10px;" type="submit" class="positive" name="przycisk" value="przycisk_2">
            <img src="gfx/formularze/form.png" alt=""/>
            Sprawdź poprawność
            </button>


Proszę o podpowiedź.
pablo_83
  1. <input type="submit" name="przycisk1" value="popraw"/>
  2. <input type="submit" name="przycisk2" value="dalej" />
  3.  


  1. if($_POST['przycisk1] == 'popraw'){
  2. echo 'wróć i popraw';
  3. }else {
  4. echo 'idź dalej';
  5. }
  6.  


w if'ach robisz akcje dla konkretnego wywołania.
w action w formularzu deklarujesz gdzie formularz ma wyslać dane, $_POST[] jest przechwytywany po stronie serwera po wykonaniu formularza, więc albo tworzysz sobie dwie strony z formularzem i w zależności który został kliknięty poprzez instrukcję powyżej przekierowujesz do niego, albo atrybut action zostawiasz pusty wtedy po kliknięciu w submit formularz wróci do tej samej strony a w if'ach deklarujesz co chcesz wyświetlić.
L0k0
Dzięki za odpowiedź.

Sytuacja wygląda tak, że jak zrobiłem jak pokazałeś to po wciśnięciu przycisku (któregokolwiek) mam w pasku adresu index.php?page= i nic więcej.
Natomiast jeśli zamiast == zmienię na != to dzieła (oczywiście dla jednego przycisku).

Biorę konkretne name i value - z dobrego przycisku. Sprawdziłem kilkukrotnie.

Nie wiem dlaczego nie widzi w ogóle tych danych przekazywanych POST'em...

Rozwiązałem to tak:

pole name musi być takie samo, żeby posłużyć się value to name musi być takie samo.

Kod
   if ((!empty($_POST)) && $_POST['sprawdz_poprawnosc'] == 'bezpieczna_gotowka')
    {
        header('Location:index.php?page=bezpieczna_gotowka_sprawdz');
    }
    else if((!empty($_POST)) && $_POST['sprawdz_poprawnosc'] == 'wroc')
        {
            header('Location:index.php?page=formularz_main');
        }


A w przyciskach mam:

Kod
<button style="float:left; border:1px; border-style: solid; " type="submit" class="regular" name="sprawdz_poprawnosc" value="wroc">
            <img src="gfx/formularze/back.gif" alt=""/>
            Wczytaj ponownie
            </button>
    
            <button style="float:right; border:1px; border-style: solid; margin-bottom: 10px;" type="submit" class="positive" name="sprawdz_poprawnosc" value="bezpieczna_gotowka">
            <img src="gfx/formularze/form.png" alt=""/>
            Sprawdź poprawność
            </button>


Może ktoś skorzysta :-)

Temat do zamknięcia.
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.