Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php/MySQL] Wykrycie naciśnięcia przycisku
Forum PHP.pl > Forum > Przedszkole
fuzzy86
Witam. Mam bardzo proste pytanie. Nie widzę tego w necie.
Mam tabele która wygląda tak:

id | nazwa | adres | katalog | opis

Ładuję z bazy nazwę (każda jest unikalna więc nie ma problemu dalej) do pola <select>
Chcę zrobić żeby powybraniu danej pozycji z utworzonej tak listy i naciśnięciu przycisku (submita) "usuń" pobrało nazwę i usunęło z bazy danych. W sumie wszystko wiem jak zrobić z wyjątkiem tego jaki dać warunek do naciśnięcia "submita"

Kod do zrobienia listy mam taki:
  1. <?php
  2. $zapytanie = mysql_query("SELECT `nazwa` FROM dane_db");
  3. echo '<form method="POST" action="usun.php">
  4. <select name="nazwy">';
  5.  
  6. while($wiersz=mysql_fetch_array($zapytanie)) {
  7.  echo '<option>'.$wiersz[0].'</option>';
  8. };
  9. echo '</select>
  10. <input type="submit" value="Usuń" name="go">
  11. </form>';
  12. ?>
Chemiq
jeżeli dobrze zrozumiałem kod powinien wyglądać tak:
  1. <?php
  2. $zapytanie = mysql_query("SELECT `nazwa` FROM dane_db");
  3. echo '<form method="POST" action="usun.php">
  4. <select name="nazwy">';
  5.  
  6. while($wiersz=mysql_fetch_array($zapytanie)) {
  7.  echo '<option>'.$wiersz[0].'</option>';
  8. };
  9. echo '</select>
  10. <input type="submit" value="Usuń" name="go">
  11. </form>';
  12.  
  13. $go = $_POST['go'];
  14. if (isset($go)) {
  15. // tutaj wpisz akcję która ma się odbyć po kliknięciu na submit
  16. }
  17. ?>

oczywiście zadziała jeżeli skrypt powyżej nazywa się usun.php (tak jak to zadeklarowałeś w polu action znacznika form). ja używam takiego sposobu i działa bez problemów
MagnuM
Jednak lepiej jest najpierw obsługiwać opcję 'wykrycia' naciśnięcia przycisku, a dopiero później wyświetlać resztę skryptu, ze względu na to, że najpierw wyświetlony skrypt może być nieaktualny w niektórych przypadkach.
fuzzy86
Cytat(MagnuM @ 5.08.2006, 20:39 ) *
Jednak lepiej jest najpierw obsługiwać opcję 'wykrycia' naciśnięcia przycisku, a dopiero później wyświetlać resztę skryptu, ze względu na to, że najpierw wyświetlony skrypt może być nieaktualny w niektórych przypadkach.


Czyli najpierw dać warunek:
  1. <?php
  2. $go = $_POST['go'];
  3. if (isset($go)) { ... }
  4. ?>

a potem w else reszte kodu czy źle zrozumiałem?? Czy to coś zmienia?? czy źle zrozumiałem?...
MagnuM
Niekoniecznie w else. Jeżeli dasz w else to zadeklarujesz kod, który uruchomi się w przypadku gdy przycisk nie zostanie wciśnięty kolokwialnie mówiąc.

Podam przykład dla lepszego zrozumienia sprawy.

  1. <?php
  2.  
  3. // sprawdza czy 'wciśnięto' submit formularza
  4. if ( $_POST['action'] )
  5. {
  6. mysql_query("INSERT INTO users (login) VALUES('". $_POST['login'] ."')");
  7. }
  8.  
  9. $rQuery("SELECT login FROM users WHERE id = (SELECT MAX(users.id))");
  10. $aAssoc = mysql_fetch_assoc( $rQuery );
  11.  
  12. Ostatni zarejestrowany u&#380;ytkownik: $aAssoc['login']
  13.  
  14. Rejestracja:
  15.  
  16. <form method="post">
  17. Login: <input type="text" name="login"><br />
  18. <input type="submit" name="action" value="Wyślij">
  19. </form>
  20. ?>


W tym przypadku, gdy użytkownik wypełni przykładowy formularz to zaraz po naciśnięciu przycisku wyświetli się 'Ostatni zarejestrowany użytkownik: (wpisany w formularzu login)'.

Jeżeli zaś skrypt wyglądał by następująco:

  1. <?php
  2.  
  3. $rQuery("SELECT login FROM users WHERE id = (SELECT MAX(users.id))");
  4. $aAssoc = mysql_fetch_assoc( $rQuery );
  5.  
  6. Ostatni zarejestrowany u&#380;ytkownik: $aAssoc['login']
  7.  
  8. Rejestracja:
  9.  
  10. <form method="post">
  11. Login: <input type="text" name="login"><br />
  12. <input type="submit" name="action" value="Wyślij">
  13. </form>
  14.  
  15. // sprawdza czy 'wciśnięto' submit formularza
  16. if ( $_POST['action )
  17. {
  18. mysql_query("INSERT INTO users (login) VALUES('". $_POST['login'] "')");
  19. }
  20. ?>


To niestety wyświetlił by się napis, na którego końcu widniał by login poprzsedniej ostatnio zalogowanej osoby.

Jest to tlko przykład pisany z głowy. Myślę, że idea jest zrozumiała, nie sprawdzałem, powinno działać ;-)

EDIT: Czy ten parser kodu aby na pewno dobrze działa ?
EDIT 2: Co jest nie tak z tym parserem. Zaraz po edycji źle interpretuje kod związany z apostrofami i pochodnymi...
fuzzy86
Aha. rozumiem. Dzięki za wszytkie odpowiedzi. Jak bym coś jeszcze potrzebował to się tu pojawię winksmiley.jpg
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.