Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][HTML] Dziwne działanie przycisku <button>
glizda1125
post 4.06.2008, 15:56:48
Post #1





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 17.09.2007

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


Witam

Mam następujący problem:
  1. <?php
  2. <form method="post">
  3. <button type="submit" name="but1" value="val1">Przycisk</button>
  4. </form>
  5. ';
  6. echo "wynik= $_POST[but1]";
  7. ?>

Jeśli odpale to w IE i kliknę na przycisk wyświetli mi
Przycisk czyli to co jest pomiedzy znacznikami <button></button>
A pod operą wyświetli val1 czyli waretość value

Chcę aby w jednym formularzu było wiele przycisków o takiejsamej wartości wyświetlanej na przycisku ale przekazujących różne wartości za pomocą POST.
tzn.
  1. <?php
  2. <form method="post">
  3. <button type="submit" name="but1" value="val1">Przycisk</button><br />
  4. <button type="submit" name="but1" value="val2">Przycisk</button>
  5. </form>
  6. ';
  7. echo "wynik= $_POST[but1]";
  8. ?>


zeby w zależności jaki przycisk klikne przesyłał mi wartość val1 lub val2 a nie Przycisk, czyli tak jak w operze.

Czy jest to możliwe czy w dobrą stronę idę? questionmark.gif

Ten post edytował glizda1125 4.06.2008, 20:14:42
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 12)
minou
post 4.06.2008, 16:03:06
Post #2





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 1.06.2008

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


Kod
<input type="submit" name="nazwa" value="Treść 1">
<input type="submit" name="nazwa" value="Treść 2">


Koniecznie o tej samej wartości atrybutu name.

A w php łapiesz to tak:
Kod
<?
if ($_POST[nazwa]=="Treść 1"){
    //wykonuje co tam chcesz
}
elseif ($_POST[nazwa]=="Treść 2"){
    //wykonuje co tam chcesz
}
Go to the top of the page
+Quote Post
Shili
post 4.06.2008, 16:03:21
Post #3





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

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


Która opera? Na mojej 9.24 wyświetla się wszystko dobrze.

Tylko jedna uwaga - może to powoduje błąd.
$_POST['name'] - to powinno być w uszach, czyli
  1. <?php
  2. echo 'wynik= '.$_POST['but1'];
  3. ?>
(najwydajniej)
Go to the top of the page
+Quote Post
glizda1125
post 4.06.2008, 20:23:39
Post #4





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 17.09.2007

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


Edytowałem posta i pozamieniał mi troche kod. Teraz juz poprawiłem to może będziecie wiedzieli blizej oco mi chodzi.

Chce zrobic cos takiego zeby bylo kilka przyciskow z wyswietlanym takim samym tekstem na nich (np Usuń).
Np mamy tabele z lista produktów i chce aby przy kazdym z nich był przycisk usuń i w zależności przy jakim produkcie bym kliknal usun to by przakazywalo np id tego produktu metodą POST.

  1. <?php
  2. <form method="post">
  3. <button type="submit" name="but1" value="val1">Przycisk</button><br />
  4. <button type="submit" name="but1" value="val2">Przycisk</button>
  5. </form>
  6. ';
  7. echo "wynik= $_POST[but1]";
  8. ?>

Po kliknieciu pierwszego przycisku zeby wyświetlalo mi wartość val1 a drugiego val2
W operze wlasnie tak sie dzieje w IE zamiast val1 i val2 wyswietla Przycisk
Go to the top of the page
+Quote Post
Shili
post 4.06.2008, 20:42:25
Post #5





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

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


bo IE wysyła innerHTML.

Możesz podmienić to innerHTML przez js, z tym że prawdopodobnie będzie to widoczne na ułamek sekundy.
Kod
onclick="this.innerHTML=\'val1\';"


To oczywiście trzeba ustawić przy każdym buttonie z innymi wartościami winksmiley.jpg
Userzy IE przeważnie js nie wyłączają, ale przy wyłączeniu wszystko się posypie.

Ten post edytował Shili 4.06.2008, 20:43:32
Go to the top of the page
+Quote Post
glizda1125
post 4.06.2008, 20:51:41
Post #6





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 17.09.2007

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


Cytat(Shili @ 4.06.2008, 21:42:25 ) *
Userzy IE przeważnie js nie wyłączają, ale przy wyłączeniu wszystko się posypie.


A nie ma metody bardziej uniwersalnej?
Go to the top of the page
+Quote Post
nospor
post 4.06.2008, 20:57:12
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Dla kazdego usera tworz formularz z twoim przyciskiem i pole ukrytym (hidden). W value tego pola trzymaj id usera do skasowania. Wciskając przycisk, wysle sie tylko to hidden z danego forma co byl przycisk.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Shili
post 4.06.2008, 20:58:00
Post #8





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

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


Przeczytaj sobie specyfikację microsoftu: http://msdn.microsoft.com/en-us/library/ms535211(VS.85).aspx
Oni po prostu jak zwykle obrali sobie inną drogę.
Go to the top of the page
+Quote Post
glizda1125
post 4.06.2008, 21:19:44
Post #9





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 17.09.2007

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


Cytat(nospor @ 4.06.2008, 21:57:12 ) *
Dla kazdego usera tworz formularz z twoim przyciskiem i pole ukrytym (hidden). W value tego pola trzymaj id usera do skasowania. Wciskając przycisk, wysle sie tylko to hidden z danego forma co byl przycisk.


Na taki sam pomysł też wpadlem.
Męczy mnie to, że jak bede mial np do wyswietlenia kilkadziesiat albo wiecej pozycji i do kazdej bedzie:
  1. <form method="post">
  2. <input type="hidden" name="nazwa" value="wartosc">
  3. <input type="submit" name="Przycisk">
  4. </form>

to czy plik nie zrobi sie bardzo duzy i nie bedzie dlugo ladowal. Z tego właśnie względu zacząłem szukać innego rozwiązania czy nie da sie wszystkiego zamiescic w jednym formularzu i dlatego napisałem tego posta.

Jak byście mieli jakies pomysły to piszcie.

P.S. Dzieki za zainteresowanie
Go to the top of the page
+Quote Post
Shili
post 4.06.2008, 21:22:57
Post #10





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

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


Nie nie powinien. Sam plik html to wcale nie taka duża sprawa, jakby się mogło wydawać. Zrób z polem hidden i sprawdź ile waży wygenerowana strona - powinna wzrosnąć o jakieś około 5kB-10kB, może ciut więcej, może mniej przy 100 dodanych formularzach.

Ten post edytował Shili 4.06.2008, 21:24:36
Go to the top of the page
+Quote Post
nospor
post 4.06.2008, 21:23:52
Post #11





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




wszystko dlatego, ze sie uczepiles tego <button>
jakbys uzyl jak Bog przykazal <input type="submit" ...
albo poprostu linka to bys sie nie musial tak bawic.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
glizda1125
post 4.06.2008, 21:36:16
Post #12





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 17.09.2007

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


Cytat(nospor @ 4.06.2008, 22:23:52 ) *
wszystko dlatego, ze sie uczepiles tego <button>
jakbys uzyl jak Bog przykazal <input type="submit" ...
albo poprostu linka to bys sie nie musial tak bawic.


Button uczepiłem sie dlatego że:
1. Chciałem żeby na przycisku wyświetlał mi np Usuń a przekazywał wartość np 1
  1. <input type="submit" name="Przycisk" value="1">

Przekazuje to co wyświetla czyli 1
A za pomocą <button> mozna było osiagnąć to co chciałem ale niestety nie na wszystkich przeglądarkach.
2. Nie chciałem używać linka bo chciałem żeby dane były przesyłane metodą POST a nie GET zawsze to ładniej wygjąda i nikt nie bedzie ci majstrował w linku.
3. W przykazaniech nie ma nic na temat przesyłania danych pomiędzy stronami tongue.gif
Jeśli sie myle to mnie poprawcie.
Go to the top of the page
+Quote Post
nospor
post 4.06.2008, 21:43:45
Post #13





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
i nikt nie bedzie ci majstrował w linku.
ale w post mozna ci rownie dobrze majstrowac co i w linku. Takze akurat ten Twoj argument jest kiepski winksmiley.jpg

Cytat
Przekazuje to co wyświetla czyli 1
Tu mnie masz.

A myslales o masowym usuwaniu? Robisz przy kazdym userze checkbox. na dole wszystkiego jeden przycisk "Usun". Usuwa tylko tych userow, ktorzy mieli wcisnietego checkboxa.
Checkboxom nadajesz nazwe tablicową, np: name="user[]". Dla checkboxa dla value nadajesz id usera. Dzieki temu w php pod zmienna $_POST['user'] bedziesz mial tablice id userow, ktorych zaznaczyles


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 11:46