2011-01-19 56 views
2

我是一個.NET開發人員幾乎放棄使用PHP的個人項目。兩個圖像按鈕或兩個提交

我想下面的PHP頁面:

兩個隨機圖像(通過代碼來識別),在用戶選擇他們之間,那麼表單刷新,以選擇的護理方式。簡單。

我已經完成了隨機圖像部分(存儲在表格中的URL,我計劃在將來改變它,但現在不是問題),所以我必須使「選擇」部分。我想要使​​圖片可點擊或使用相同的文字在它們下面放置兩個按鈕。

在PHP中我無法確定這種「提交」方式的工作,主要是因爲我太習慣於ASP.NET。

我試過使用兩個正常的提交按鈕,但我不希望它們都具有不同的文本,但用於區分這兩個按鈕的相同屬性也用於編寫該按鈕的文本:值。更不用說,這整個PHP_SELF以及在頁面加載開始時檢查值似乎太過於hacky。

然後我想過製作兩種形式,每種形式都有一個通過querystring發送代碼的動作,但我不想那樣做。我不希望(常規)用戶能夠通過輸入URL來執行操作。

記住:因爲當頁面刷新時我失去了變量值,我必須沿着(而不是通過查詢字符串)發送所選圖像的代碼。

這種衝突是讓我考慮放棄這個項目的原因。當我自己學習ASP.NET時,這非常簡單,直觀,我很快就明白了。

回答

4

如何給提交按鈕兩個不同的名稱:

<input type="submit" name="submit1" value="submit" /> 
<input type="submit" name="submit2" value="submit" /> 

然後,你可以用PHP做以下檢查:

if (isset($_REQUEST['submit1']) && $_REQUEST['submit1'] == "submit") { 
    //its image 1 
} else if (isset($_REQUEST['submit2']) && $_REQUEST['submit2'] == "submit") { 
    //its image 2 
} 

順便說一句,你不必使用$ _REQUEST數組,您可以使用$ _GET或$ _POST,具體取決於您的表單操作。我不確定你使用的是哪一個,所以我把$ _REQUEST放在這裏,它涵蓋了兩者。

0

只有一種形式。這真是你所需要的。

給提交按鈕相同的名稱和不同的值。

<input type="submit" name="submit" value="Option1" /> 
<input type="submit" name="submit" value="Option2" /> 

當表格發佈後,您可以檢查每個值的$_POST['your_submit_value_name']

此外,如果您將<form action="" method="post" enctype="multipart/form-data">保留爲空白,它將自行發佈。所以,當你加載你的頁面,只需檢查:

if (!empty($_POST)) { 
    if ($_POST['submit'] == 'value1') { 
     // Do A 
    } else if ($_POST['submit'] == 'value2') { 
     // Do B 
    } 
} 

不要忘記驗證用戶數據!

+1

這樣就不會每個按鈕上顯示他們不同的文本?因爲提交內容不同(顯示的內容是提交內容,而不是名稱) – Marcelo 2011-01-19 20:00:38

+0

「value」屬性顯示的是文本,而不是名稱。 – Andre 2011-01-20 19:59:57

0

對於提交按鈕問題,您可以使用提交按鈕的名稱屬性來確定哪個按鈕被點擊。

這個被點擊的按鈕將激發一個鍵出現在$ _POST數組中。這樣,您可以區分這些值,但仍具有相同的文本/值。

1

所以首先你需要創建表單通過POST提交,而不是GET:

<form name="myform" action="<?php $_SERVER['PHP_SELF']; ?>" method="post"> 
    <button type="submit" name="submitButton" value="image1"><img src="xxx"></button> 
    <button type="submit" name="submitButton" value="image2"><img src="xxx"></button> 
</form> 

現在在PHP端:

if(isset($_POST['submitButton'])) { 
    $image = $_POST['submitButton']; 
} 

如果一個按鈕,一塊用戶點擊的代碼將被觸發。

這裏的那朵如何都結合在一起的一個完整的例子:

<?php 
if(isset($_POST['submitButton'])) { 
    echo $_POST['submitButton']; 
} 
?> 
<html> 
    <body> 
     <form name="myform" action="<?php $_SERVER['PHP_SELF']; ?>" method="post"> 
      <button type="submit" name="submitButton" value="image1"><img src="xxx"></button> 
      <button type="submit" name="submitButton" value="image2"><img src="xxx"></button> 
     </form> 
    </body> 
</html>