2016-06-20 72 views
-2

我已經完成了我需要的所有功能。但唯一不能正確的是這個。一個表格上的兩個動作按鈕

我需要此表單有2個按鈕,它有一個將新用戶添加到數據庫中的按鈕,但我需要另一個按鈕,它會將新用戶詳細信息通過電子郵件發送到電子郵件地址。我需要首先顯示電子郵件按鈕。那麼在發送之後,必須出現提交按鈕。我花了大約2個小時瀏覽關於郵件()和郵件功能的不同教程,但我不理解它。我仍然很新的HTML和PHP。

繼承我的代碼到目前爲止與一個工作按鈕。

<h2>Add Contact</h2> 
<form name="form1" action="<?=$_SERVER['PHP_SELF'];?>?mode=added" method="post"> 
<div align="center"><table class="searchable"> 
<tr><td>Extension:</td><td><div align="center"> 
<input type="text" name="ext" required /> 
<span class="error">* <?php echo $nameErr;?></span> 
</div></td></tr> 
<tr><td>Name:</td><td><div align="center"> 
<input type="text" name="name" required /> 
<span class="error">* <?php echo $nameErr;?></span> 
</div></td></tr> 
<tr><td>Department:</td><td><div align="center"><select name="department" required> 
      <option value="ADMIN">ADMIN</option> 
      <option value="AFTER-SALES DIRECTOR">AFTER-SALES DIRECTOR</option> 
      <option value="ALPINE DEALER PRINCIPAL">ALPINE DEALER PRINCIPAL</option> 
      <option value="AUTO ARMOUR/AUTO ENHANCE - FITMENT CENTRE (Smash and Grab)">AUTO ARMOUR/AUTO ENHANCE - FITMENT CENTRE (Smash and Grab)</option> 
      <option value="BANDIT-VW">BANDIT-VW</option> 
      <option value="BOOKINGS VW">BOOKINGS VW</option> 
      <option value="DRIVEWAY/WASHBAYS">DRIVEWAY/WASHBAYS</option> 
      <option value="FINANCE AND INSURANCE">FINANCE AND INSURANCE</option> 
      <option value="IT DEPARTMENT">IT DEPARTMENT</option> 
      <option value="MARKETING DEPARTMENT">MARKETING DEPARTMENT</option> 
      <option value="MASTER CARS">MASTER CARS</option> 
      <option value="MAYOR OF PINETOWN">MAYOR OF PINETOWN</option> 
      <option value="NEW CAR PREP DEPARTMENT">NEW CAR PREP DEPARMENT</option> 
      <option value="NUMBER PLATES">NUMBER PLATES</option> 
      <option value="PANELBEATER - EASIFIX - CAR CARE">PANELBEATER - EASIFIX - CAR CARE</option> 
      <option value="PARTS">PARTS</option> 
      <option value="PARTS DISPATCH">PARTS DISPATCH</option> 
      <option value="PARTS TELESALES">PARTS TELLESALES</option> 
      <option value="USED CAR PREP AND ORDERS">USED CAR PREP AND ORDERS</option> 
      <option value="VW NEW CARS ADMIN AND STOCK CONTROL">VW NEW CARS ADMIN AND STOCK CONTROL</option> 
      <option value="VW NEW VEHICLE SHOWROOM">VW NEW VEHICLE SHOWROOM</option> 
      <option value="VW SERVICE ADVISORS">VW SERVICE ADVISORS</option> 
      <option value="VW WORKSHOP">VW WORKSHOP</option> 
      <option value="VW WORKSHOP FOREMEN">VW WORKSHOP FOREMEN</option> 
      <option value="WARRANTY & CLAIMS">WARRANTY & CLAIMS</option> 
      <option value="WORKSHOP DRIVERS">WORKSHOP DRIVERS</option> 
    </select> 
<span class="error">* <?php echo $nameErr;?></span> 
</div></td></tr> 
<tr><td>Email:</td><td><div align="center"> 
<input type="text" name="email" pattern="[a-z0-9._%+-][email protected][a-z0-9.-]+\.[a-z]{2,3}$" name="email" title="Example: [email protected]" required/> 
<span class="error">* <?php echo $nameErr;?></span> 
</div></td></tr> 
<tr><td>Cellphone:</td><td><div align="center"> 
<input type="text" name="phone" /> 
</div></td></tr> 

<tr><td colspan="2" align="center"><a href="javascript:history.go(-1);">Back</a> | <input type="submit" name="submit" id="submit" value="Add New Contact"<?php if($disable ==1){?>disabled<?php } ?>/></td></tr> 
<input type="hidden" name="mode" value="added"> 

</table> 
</div> 
</form> 
+0

退房[標籤:AJAX]。 – Chris

+0

也許[this](https://stackoverflow.com/questions/547821/two-submit-buttons-in-one-form?rq=1)可以提供幫助嗎? –

+1

這不是你問過的那個問題嗎? http://stackoverflow.com/questions/37880117/multiple-button-form-actions – Progrock

回答

2

您可以使用兩個不同的提交按鈕。看看下面的例子:

<?php 

if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['submit'])) { 
    switch ($_POST['submit']) { 
     case 'one': 
      echo "You submitted using the first button"; 
      break; 
     case 'two': 
      echo "You submitted using the second button"; 
      break; 
    } 
} 
?> 
<form method="POST" action="<?= $_SERVER['PHP_SELF']; ?>"> 
    <input type="submit" name="submit" value='one' /> 
    <input type="submit" name="submit" value='two' /> 
</form> 

以下是在同一頁面中執行兩個操作的更高級的示例。這將需要多個重定向。

<?php 
session_start(); 

if (isset($_POST['submit']) && $_POST['submit'] == 'save') { 
    // Insert into the database 

    // Add the $_POST data to a session 
    $_SESSION['postdata'] = $_POST; 
    // Unset the POST 
    unset($_POST); 

    // Redirect to same page 
    header("Location: ".$_SERVER['PHP_SELF']); 
    exit; 
} elseif (isset($_POST['submit']) && $_POST['submit'] == 'email') { 
    // Send your email 
    mail(...); 
    unset($_SESSION['postdata']); 
    // Redirect to same page and add another user 
    header("Location: ".$_SERVER['PHP_SELF']); 
    exit; 
} 
?> 

<?php if (!isset($_SESSION['postdata'])): ?> 
<form method="POST" action="<?= $_SERVER['PHP_SELF']; ?>"> 
    <input type="text" name="username" /> 
    <input type="submit" name="save" /> 
</form> 
<?php else: ?> 
<form method="POST" action="<?= $_SERVER['PHP_SELF']; ?>"> 
    The user with username <?= $_SESSION['postdata']['username']; ?> has been saved. 
    <p>Do you want to submit an email as well?</p> 
    <input type="submit" name="mail" /> 
</form> 
<?php endif; ?> 
1

當您發佈表單回到自身時,如果您使用隱藏表單字段設置標誌以指示表單已被提交,則會有所幫助。只有在表單提交後,您纔可以在頁面上運行特定的代碼。這可以驗證數據並顯示發送電子郵件按鈕。然後您可以設置第二個標誌,在回發時使表單顯示一個添加用戶到數據庫按鈕。總之,如果你打算使用自己的帖子,你需要引入一些隱藏的字段標誌來更好地控制表單。

另一種方法是將表單張貼到另一個腳本進行處理,這樣可以更好地控制順序按鈕顯示。

0

如果你給每個人一個名字,被點擊的名字將作爲任何其他輸入發送。

<input type="submit" name="first_button" value="Click me"> 
<input type="submit" name="second_button" value="Click me"> 

if (isset($_POST['first_button'])) { 
    //first button action 
} else if (isset($_POST['second_button'])) { 
    //second buttonaction 
} else { 
    //no button pressed 
} 

所見here