Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][html][js]Najbanalniejszy problem z formularzem
Forum PHP.pl > Forum > Przedszkole
-eirik-
Ludzie, pomóżcie, bo już nic nie kumam.

Banalny problem:
Na stronce jest tylko pytanie: czy na pewno chcesz wykonać jakąś akcję:
Pod spodem guzik Tak, a na dole strony link "Powrót" kierujący na stronę poprzednią.
Akcja formularza ma się wykonać oczywiście tylko po kliknięciu przycisku. W tej chwili mam tak, że nawet jak nacisnę "Powrót" to akcja się wykonuje:

  1. <?php
  2. echo '<form action="Servants.php" method="POST">';
  3. echo '<b>Czy na pewno chcesz anulować to ogłoszenie? </b><br>';
  4. echo '<input type="submit" value="Tak" name="Yes">';
  5. echo '</form>';
  6.  
  7. //Potem łączę się do bazy, wykonuję stosowne kwerendy, nic ciekawego
  8.  
  9. echo '<br><a href="Servants.php">Powrót</a>'; /Tak, na tę samą stronę, tylko bez wykonania akcji
  10. ?>

Potrzebuję wstawić jakiś warunek, który rozpozna, czy guzik został naciśnięcty, czy nie. Próbowałem z hidden i value - nie działa (to znaczy nie widzi, że to zostało ustawione).
Może dodać dwa guziki? Ale jak to obsłużyć?
marcio
zrob if'a z isset czyli.
  1. <?php
  2. //tutaj form
  3. if(isset($_POST['tak'])) [font="Courier New"]{
  4. //tutaj zapuyanie do bazy
  5. }
  6. else // tutaj link do poprzedniej strony bez {}
  7. ?>

chyba o to chodzi?questionmark.gif
-eirik-
Nie działa.
Poza tym, nazwa tego submita to Yes, a nie tak. Zresztą w obu przypadkach nie ma efektu, to znaczy akcja się nie wykonuje. Wniosek z tego taki, że ISSET($_POST["Yes"] jest False.
Ale po nacisnięciu tego guzika wyświetla się strona podana w parametrze action.
Innymi słowy, po dodaniu sprawdzania na ISSET, po kliknięciu guzika następuje przejście do wskazanej strony _bez_wykonania_akcji.
qqrq
Stwórz sobie w formularzu pole hidden:

  1. <input type="hidden" name="Yes" value="Tak" />


I teraz sprawdź. Aha i wywal name="Yes" z submita.
-eirik-
Chyba to za mało, bo nadal kicha.

Mam teraz tak:
  1. <?php
  2. echo '<form action="Servants.php" method="POST">';
  3. echo '<b>Czy na pewno chcesz anulować to ogłoszenie? </b><br>';
  4. echo '<input type="hidden" name="Yes" value="Tak" />';
  5. echo '<input type="submit" value="Tak">';
  6. echo '</form>';
  7.  
  8. if (ISSET($_POST["Yes"])) {
  9. //itd
  10. }
  11. ?>


Dła ułatwienia dodam, że sprawdzanie ISSET($_POST["Tak"])) takoż nie działa.
rybik
  1. <?php
  2.  
  3. echo '<form action="servants.php" method="POST">';
  4.  
  5. echo '<fieldset>';
  6. echo '<legend>Czy na pewno chcesz anulować to ogłoszenie?</legend>';
  7. echo '<input type="radio" name="is_ok" value="1" id="yes"/><label for="yes" accesskey="T" style="margin-right:10px;"><u>T</u>ak</label>';
  8. echo '<input type="radio" name="is_ok" value="0" id="not" checked="checked" /><label for="not" accesskey="N" style="margin-right:10px;"><u>N</u>ie</label>';
  9. echo '<input type="submit" value="Ok" style="margin-left: 10px; padding: 0 20px;">';
  10. echo '</fieldset>';
  11. echo '</form>';
  12.  
  13. if($_POST['is_ok'])
  14. {
  15. echo "Potwierdzono";
  16. } else {
  17. echo "Nie potwierdzono";
  18. }
  19.  
  20. ?>


Tu masz ładny formularz z accesskeyami (przełączasz tak / nie naciskając alt+podkreślona literka).
Dodanie radio_buttona z domyślnym "nie" co prawda wymaga dodatkowego klikniecia ale wiadomo, ze nikt sobie przez przypadek nie usunie ogloszenia bo mu sie nacisnal enter.
W kodzie potem używasz tylko tego jednago ifa, który przy braku wartości $_POST zachowa sie tak samo jakby wybrać "nie".

Oczywiście fieldset i legend możesz sobie usunąć winksmiley.jpg zalecam jednak pozostawić opisy przycisków w postaci labeli, zgodnie ze standardami.
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.