2012-08-13 11 views
23

Obecnie mam formularz HTML, w którym użytkownik wprowadzi tytuł i tekst do artykułu. Kiedy nadejdzie pora, są one oznaczone dwoma przyciskami. Jedną z nich jest "uratowanie" ich artykułu bez jego publikowania, a drugim jest "opublikowanie" artykułu i upublicznienie go.Jak korzystać z dwóch przycisków przesyłania i rozróżniać, który z nich został użyty do przesłania formularza?

Używam PHP i próbuję dowiedzieć się, jak określić, który przycisk został użyty, aby zapisać odpowiednią odpowiednią wartość w bazie danych.

<td> 
<input type="submit" class="noborder" id="save" value="" alt="Save" tabindex="4" /> 
</td> 
<td> 
<input type="submit" class="noborder" id="publish" value="" alt="Publish" tabindex="5" /> 
</td> 

prawdopodobnie muszę wspomnieć o tym wcześniej, ale nie można przypisać wartości przycisków, ponieważ przycisk jest obraz, więc tekst pokaże się nad nim.

Odpowiedz

48

Podaj każdy atrybut input a name. Tylko kliknięty atrybut input 'name zostanie wysłany na serwer.

<input type="submit" name="publish" value="Publish"> 
<input type="submit" name="save" value="Save"> 

A potem

<?php 
    if (isset($_POST['publish'])) { 
     # Publish-button was clicked 
    } 
    elseif (isset($_POST['save'])) { 
     # Save-button was clicked 
    } 
?> 

Edycja: Zmieniono value atrybuty alt. Nie wiesz, czy jest to najlepsze podejście do przycisków graficznych, z jakiegoś szczególnego powodu, dla którego nie chcesz używać input[type=image]?

Edycja: Ponieważ to trwa coraz upvotes poszedłem do przodu i zmieniono dziwny kod alt/value do rzeczywistego przesyłania wejść. Wydaje mi się, że pierwotne pytanie dotyczyło niektórych przycisków graficznych, ale obecnie jest wiele lepszych sposobów na to, zamiast używać input[type=image].

+0

Próbowałem właśnie tej metody używając! Empty(). Teraz, gdy o tym wspomnisz, funkcja isset() prawdopodobnie zadziała. EDYCJA: Rzeczywiście działa. Dzięki za sugestie! – fvgs

+0

Nie pamiętam dokładnie, dlaczego zdecydowałem się użyć przycisków zamiast obrazów, jednak uważam, że było tak dlatego, że nie mogłem zastosować hover do przesłanego obrazu. – fvgs

+0

Idealnie proste rozwiązanie do obsługi wielu przycisków wysyłania. – commnux

7

nazwa dawać i wartości dla tych złożyć przyciski jak:

<td> 
    <input type="submit" name='mybutton' class="noborder" id="save" value="save" alt="Save" tabindex="4" /> 
    </td> 
    <td> 
    <input type="submit" name='mybutton' class="noborder" id="publish" value="publish" alt="Publish" tabindex="5" /> 
    </td> 

a następnie w skrypcie php można sprawdzić

if($_POST['mybutton'] == 'save') 
{ 
    ///do save processing 
} 
elseif($_POST['mybutton'] == 'publish') 
{ 
    ///do publish processing here 
} 
+1

Nie mogę podać wartości przycisków, ponieważ są obrazami. Jeśli przypiszę wartości, ten tekst pojawi się na górze mojego obrazu. – fvgs

+1

Jeśli tak jest, to możesz mieć 2 różne bussonty z różnymi nazwami, np. @powerbuoy zasugerował. Następnie sprawdź skrypt php, który przycisk został przesłany. –

+0

Nie sądzę, że to zadziała, Powiedział, że nie może umieszczać wartości na przyciskach, ponieważ są one obrazem. – WatsMyName

1

można go używać w następujący sposób,

<td> 

<input type="submit" name="save" class="noborder" id="save" value="Save" alt="Save" 
tabindex="4" /> 

</td> 

<td> 

<input type="submit" name="publish" class="noborder" id="publish" value="Publish" 
alt="Publish" tabindex="5" /> 

</td> 

A w PHP:

<?php 
if($_POST['save']) 
{ 
    //Save Code 
} 
else if($_POST['publish']) 
{ 
    //Publish Code 
} 
?> 
2

Jeśli nie możesz umieścić wartości na przyciskach. Mam tylko zgrubne rozwiązanie. Umieść ukryte pole. A gdy jeden z przycisków zostanie kliknięty przed przesłaniem, wypełnij wartość ukrytego pola tak, jak powiedz 1 po pierwszym kliknięciu i 2 po kliknięciu drugiego. oraz w polu wyboru strony sprawdź wartość tego ukrytego pola, aby określić, który z nich został kliknięty.

Powiązane problemy