2016-06-20 25 views
-2

私は自分の電話帳に必要なものすべてを完了しました。しかし、私が正しいことができない唯一のことはこれです。1つのフォームに2つのアクションボタンがあります

新しいユーザーをデータベースに追加するボタンが2つありますが、新しいユーザーの詳細をメールアドレスにメールする別のボタンが必要です。最初に表示するメールボタンが必要です。送信後、送信ボタンが表示されている必要があります。私は約2時間メール()とメール機能について別のチュートリアルを見て回ったが、私はそれを理解していない。私はまだかなりhtmlとPHPの新しいです。

これまでのところ、私のコードは1つの作業ボタンで説明しています。

<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

として

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

[タグ: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

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> 

ここでは、同じページで2つのアクションを実行するより高度な例を示します。これには複数のリダイレクトが必要です。

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

フォームを元に戻すと、フォームが送信されたことを示すために、非表示のフォームフィールドでフラグを設定した場合に役立ちます。フォームが送信されると、ページ上で特定のコードを実行することができます。これにより、データの妥当性を検証し、[電子メールの送信]ボタンを表示できます。次に、ポストバック時にフォームに「ユーザーをデータベースに追加」ボタンを表示させる第2のフラグを設定できます。要約すると、投稿自体を使用する場合は、フォームをより良く制御するためにいくつかの隠しフィールドフラグを導入する必要があります。

代わりに、フォームポストを処理用に別のスクリプトに作成することがあります。これにより、順次ボタンの表示をより適切に制御できます。

0

それぞれに名前を付けると、クリックされたものは他の入力として送信されます。見here

関連する問題