2012-08-13 23 views
23

Hiện tại, tôi có biểu mẫu HTML nơi người dùng sẽ nhập tiêu đề và văn bản cho bài viết. Khi đến lúc gửi, chúng được trình bày bằng hai nút. Một là để 'lưu' bài viết của họ mà không xuất bản nó, và người kia là 'xuất bản' bài báo và công bố nó.Làm cách nào để sử dụng hai nút gửi và phân biệt giữa nút nào được sử dụng để gửi biểu mẫu?

Tôi đang sử dụng PHP và tôi đang cố gắng tìm hiểu cách cho biết nút nào đã được sử dụng, để lưu trữ giá trị tương ứng thích hợp trong cơ sở dữ liệu.

<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> 

Có lẽ nên đã đề cập trước đó này, nhưng tôi không thể gán các giá trị nút vì nút là một hình ảnh, vì vậy văn bản sẽ hiển thị ở trên nó.

Trả lời

48

Cung cấp cho mỗi input thuộc tính name. Chỉ thuộc tính name được nhấp của input sẽ được gửi đến máy chủ.

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

Và sau đó

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

Chỉnh sửa: Thay đổi thuộc tính value để alt. Bạn không chắc đây có phải là cách tiếp cận tốt nhất cho các nút hình ảnh hay không, bất kỳ lý do cụ thể nào bạn không muốn sử dụng input[type=image]?

Chỉnh sửa: Vì điều này liên tục nhận được upvotes nên tôi đã tiếp tục và thay đổi mã số alt/value kỳ lạ thành thực gửi đầu vào. Tôi tin rằng câu hỏi ban đầu được yêu cầu cho một số loại nút hình ảnh nhưng có rất nhiều cách tốt hơn để đạt được điều đó ngày nay thay vì sử dụng input[type=image].

+0

Tôi vừa thử phương pháp này bằng cách sử dụng! Empty(). Bây giờ bạn đề cập đến nó, isset() có thể sẽ hoạt động. EDIT: Nó thực sự làm việc. Cảm ơn các đề xuất! – fvgs

+0

Tôi không nhớ chính xác lý do tại sao tôi chọn sử dụng các nút thay vì hình ảnh, tuy nhiên tôi tin rằng đó là vì tôi không thể áp dụng di chuột để gửi hình ảnh. – fvgs

+0

Giải pháp đơn giản hoàn hảo cho việc sử dụng nhiều nút gửi. – commnux

7

tên cho và giá trị cho những người nộp nút như:

<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> 

và sau đó trong kịch bản php của bạn, bạn có thể kiểm tra

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

Tôi không thể cung cấp các giá trị nút vì chúng là hình ảnh. Nếu tôi chỉ định giá trị, thì văn bản đó sẽ hiển thị trên đầu hình ảnh của tôi. – fvgs

+1

Nếu đó là trường hợp, sau đó bạn có thể có 2 bussonts khác nhau với các tên khác nhau như @powerbuoy đã gợi ý. Sau đó kiểm tra trong kịch bản php mà nút đã được gửi. –

+0

Tôi không nghĩ rằng sẽ làm việc, hoặc, Ông nói rằng ông không thể đặt giá trị trên các nút như họ là hình ảnh. – WatsMyName

1

Bạn có thể sử dụng nó như sau,

<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> 

Và bằng PHP,

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

Nếu bạn không thể đặt giá trị trên các nút. Tôi chỉ có một giải pháp thô. Đặt một trường ẩn. Và khi một trong các nút được nhấp trước khi gửi, hãy điền giá trị của trường ẩn với như nói 1 khi nút đầu tiên được nhấp và 2 nếu nhấp vào nút thứ hai. và trong kiểm tra trang gửi cho giá trị của trường ẩn này để xác định trường nào được nhấp vào.

Các vấn đề liên quan