2010-05-05 46 views
0

我會盡我所能解釋這一點。php在不提交表單的情況下動態填充列表框

我有一個表單接受多個字段,並最終通過電子郵件將所有字段發送到特定的電子郵件地址。

因此,例如,我有三個文本框,一個列表框和兩個提交按鈕。

的文本框有兩個是名字和電子郵件地址

第三個文本框是用來填充列表框中。所以如果我在第三個文本框中輸入NIKE,並推送第一個提交按鈕。耐克現在將在列表框中。

我希望能夠根據需要填充儘可能多的條目,然後按第二個提交按鈕發送所有信息(名字,電子郵件地址和列表框中的所有項目)。

問題是,推第一個提交按鈕總是觸發發送的電子郵件,因爲我是「POST」。

我現在一切正常。第三個文本框將新數據提交給mysql中的表格,然後檢索所有數據並將其放入列表框中。

修復這種情況的最佳方法是什麼?我可以停止驗證Post變量,直到使用第二個提交按鈕?

另外,我想避免使用Javascript,感謝

回答

1

確保兩個提交按鈕有名字。 I.E:<input type="submit" name="command" value="Add"><input type="submit" name="command" value="Send">。然後你可以使用PHP來確定一個被點擊其中:

if($_REQUEST['command'] == 'Add') 
{ 
    // Code to add the item to the list box here 
} 
elseif($_REQUEST['command'] == 'Send') 
{ 
    // Code to send the email here... 
} 

獎金:對於額外的信用,使命令變量,使他們能夠很容易地改變,並將它們映射到功能...

<?php 

$commands = array(
    'doSendEmail' => 'Send Email', 
    'doAddOption' => 'Add Option', 
); 

function doSendEmail() 
{ 
    // your email sending code here... 
} 

function doAddOption() 
{ 
    // your option adding code here... 
} 

function printForm() 
{ 
    global $commands; 
    ?> 
    Name: <input type="text" name="name"><br> 
    Email: <input type="text" name="name"><br> 
    <input type="text" name="add"> 
    <input type="submit" name="command" value="<?= $commands['doAddOption'] ?>"> 
    <select> 
    <?php /* some code here */ ?> 
    </select> 
    <input type="submit" name="command" value="<?= $commands['doSendEmail'] ?>"> 
    <?php 
} 

if(isset($_REQUEST['command'])) 
{ 
    $function = array_search($_REQUEST['command'],$commands); 
    if($function !== -1) 
    call_user_func($function); 
} 
+0

當然,所有的代碼都是未經測試的......但基本原理是健全的。 – Josh 2010-05-05 21:56:41

+0

工作完美!謝謝! 你知道一篇我可以閱讀的文章(網站),它解釋了你的「make命令變量,映射到函數」嗎? – Kukoy 2010-05-05 22:22:17

+0

請參閱我發佈的「獎勵」部分。也就是說,這些命令存儲在一個PHP變量中,並且它們映射到函數。 (反過來,但你明白了) – Josh 2010-05-05 22:23:53

相關問題