Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php]Obsługa wielu przycisków w formularzu
zaiac
post
Post #1





Grupa: Zarejestrowani
Postów: 79
Pomógł: 0
Dołączył: 11.05.2007
Skąd: Kraków

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


Witajcie,

Mam oto taki problemik. Wyciągam z bazy powiedzmy.... koncerty wraz z ich datami, które spełniają jakieś tam kryteria - ich ilość jest oczywiście zmienna i wyświetlam tabelkę, w każdym wierszu tworząc przyciski Zapisz lub Wypisz (jeśli zalogowany użytkownik jest już na ten koncert zapisany). I teraz mam problem w jaki sposób obsłużyć przyciski tak, aby ich kliknięcie powodowało odpowiednie akcje w bazie (zapisanie lub wypisanie użytkownika). Podkreślam, że ilość przycisków jest zmienna, więc odpada zwykłe if-owanie i podpięcie różnych warunków dla każdego buttona. Podejrzewam że chodzi o stworzenie jakiegoś JS, ale jestem w tym temacie zielony. Bardzo proszę o sugestie w jaki sposób wykaraskać się z tego.

Z góry dzięki za podpowiedzi!

Ten post edytował zaiac 11.05.2007, 14:00:55
Go to the top of the page
+Quote Post
no_face
post
Post #2





Grupa: Zarejestrowani
Postów: 346
Pomógł: 23
Dołączył: 28.11.2004

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


Kazdy przycisk to osobny formularz, np.
  1. <form method="POST" action="plik_ktory_przetworzy_dane.php">
  2. <input type="hidden" name="id_koncertu" value="np_22">
  3. <input type="submit" value="Submit">
  4. </form>

generujac strone z lista koncertow, wypisujesz za kazdym powtorzeniem sie koncertu jego id w id_koncertu. Po wyslaniu odbierasz w pliku, ktory bedzie to przetwazal id i mozesz robic z tym co chcesz.
Go to the top of the page
+Quote Post
Kicok
post
Post #3





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

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


  1. <?php
  2. if( $zapisany ) {
  3. echo( '<button onClick="window.location = 'plik.php?action=wypisz&id_koncertu=' . $id_koncertu . '';">Wypisz</button>' );
  4. }
  5. else {
  6. echo( '<button onClick="window.location = 'plik.php?action=zapisz&id_koncertu=' . $id_koncertu . '';">Zapisz</button>' );
  7. }
  8. ?>


Pisane z palca, ale coś w tym guście powinieneś zrobić.

Ten post edytował Kicok 11.05.2007, 14:20:24
Go to the top of the page
+Quote Post
zaiac
post
Post #4





Grupa: Zarejestrowani
Postów: 79
Pomógł: 0
Dołączył: 11.05.2007
Skąd: Kraków

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


Cytat(no_face @ 11.05.2007, 15:17:52 ) *
Kazdy przycisk to osobny formularz, np.
  1. <form method="POST" action="plik_ktory_przetworzy_dane.php">
  2. <input type="hidden" name="id_koncertu" value="np_22">
  3. <input type="submit" value="Submit">
  4. </form>

generujac strone z lista koncertow, wypisujesz za kazdym powtorzeniem sie koncertu jego id w id_koncertu. Po wyslaniu odbierasz w pliku, ktory bedzie to przetwazal id i mozesz robic z tym co chcesz.


Tylko że nie chcę przechodzić nigdzie z tej strony - idealnie byłoby, gdyby po naciśnięciu odświeżała się strona z owmi przyciskami i widać było już zmianę w wyświetlonej tabelce.

Cytat(Kicok @ 11.05.2007, 15:19:15 ) *
Pisane z palca, ale coś w tym guście powinieneś zrobić.


A co to miałoby robić? Możesz wytłumaczyć trochę te kodzik?
Go to the top of the page
+Quote Post
no_face
post
Post #5





Grupa: Zarejestrowani
Postów: 346
Pomógł: 23
Dołączył: 28.11.2004

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


Cytat(zaiac @ 11.05.2007, 13:44:01 ) *
A co to miałoby robić? Możesz wytłumaczyć trochę te kodzik?

Po nacisnieciu przycisku, przejdzie do strony plik.php wykona w tym przypadku action=wypisz czyli wypisz koncert o id_koncertu=jakies_id; Czyli mniej wiecej to co chciales zrobic. Ogolnie mowiac jest on bardzo podobny do mojego rozwiazania. Strona sie przeladuje, zostanie cala lista, tylko zmieni sie wypisz/zapisz.

Istnieje tez inna mozliwosc, zastosuj ajaxa, w tym przypadku mozesz wykonac co chcesz nie przeladowujac strony.
Go to the top of the page
+Quote Post
zaiac
post
Post #6





Grupa: Zarejestrowani
Postów: 79
Pomógł: 0
Dołączył: 11.05.2007
Skąd: Kraków

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


A jak pozniej odebrac zmienne przekazane w te sposob i jak wygladaloby przekazanie wiecej niz jednej zmiennej?

Ten post edytował zaiac 11.05.2007, 16:45:32
Go to the top of the page
+Quote Post
no_face
post
Post #7





Grupa: Zarejestrowani
Postów: 346
Pomógł: 23
Dołączył: 28.11.2004

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


W skrypcie odbierasz takie dane po przez tablice POST:
  1. <?php
  2. $_POST['id_koncertu'] itd
  3. ?>

by przekazac wiecej danych po prostu wstawiasz wiecej zmiennych:
  1. <input type="hidden" name="id_koncertu" value="22">
  2. <input type="hidden" name="operacja" value="zapisz">

teraz tylko korzystajac z tych danych, wiemy jaki koncert mamy zmodyfikowac i czy ma to byc opcja zapisz czy wypisz. Z pewnoscia bedziesz potrzebowal id usera, ale to juz pewnie gdzies z sesji zciagniesz, czy tez w inny sposob.
Go to the top of the page
+Quote Post
zaiac
post
Post #8





Grupa: Zarejestrowani
Postów: 79
Pomógł: 0
Dołączył: 11.05.2007
Skąd: Kraków

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


Wielkie dzięki za pomoc - wszystko fajnie działa, tylko chciałbym żeby strona "odświeżała sie" po naciśnięciu zapisania lub wypisania. Próbowałem czegoś takiego:

  1. <form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>">
  2. <input type="hidden" name="id_gry" value="<?php echo $row[0] ?>">
  3. <input type="submit" name="Wypisz" value="Wypisz">
  4. </form>


ale nie działa tak jakbym chciał. Możesz mi pomóc jeszcze w tej kwestii.


--
Poprawiłem bbcode. Proszę na przyszłość zwrócić na to uwagę.
~siemakuba
Go to the top of the page
+Quote Post
uli
post
Post #9





Grupa: Zarejestrowani
Postów: 318
Pomógł: 6
Dołączył: 27.01.2005

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


Po co te wszystkie kombinacje??(IMG:http://forum.php.pl/style_emoticons/default/ohmy.gif)

Wystarczy przecież zrobić taki szkielecik:

na początku index.php
  1. <?php
  2. if ($_POST["przycisk"] == "ZAPISZ") {
  3.  
  4. // tutaj zapis do bazy
  5. }
  6.  
  7. if ($_POST["przycisk"] == "KASUJ") {
  8.  
  9. // tutaj kasowanie
  10. }
  11. ?>


no i w index.php sam formularz:

  1. <form action=index.php method=POST>
  2. // tutaj pola do wypełnienia
  3.  
  4. //i dwa lub więcej przycisków
  5. <input type="submit" name="przycisk" value="ZAPISZ">
  6. <input type="submit" name="przycisk" value="KASUJ">
  7. </form>


Chyba prościej i bez hidden. No i ładniej.
Go to the top of the page
+Quote Post
zaiac
post
Post #10





Grupa: Zarejestrowani
Postów: 79
Pomógł: 0
Dołączył: 11.05.2007
Skąd: Kraków

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


Jest ok tylko jak zrobić to odświeżanie - czyli co wpisać w action żeby mi nie przechodził do innej podstrony tylko zostawał na tej samej i odświeżał ją, żeby można było zobaczyć zmiany w zapisach (po kliknięciu zapisz lub wypisz mam tabelke z datami i czy user jest zapisany czy nie) - chciałbym zeby po nacisnieciu zapisz/wypisz odswiezyla sie stronka i byly widoczne zmiany w owej tabelce.
Go to the top of the page
+Quote Post
uli
post
Post #11





Grupa: Zarejestrowani
Postów: 318
Pomógł: 6
Dołączył: 27.01.2005

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


  1. <form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>">


No to wstaw zamiast kodu PHP w action (skoro Tobie nie działa) nazwę tego pliku i już (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.12.2025 - 23:15