2017-04-14 4 views
1

PHPメール経由で送信されるHTMLフォームを作成しました。すべてがうまくいきますが、電子メールを送信すると、実際の選択肢を持つドロップダウンメニューだけが表示されるように、単純化したいと思います。今では、ユーザーが0を選択しても、すべての単一のドロップダウンメニューが電子メールに表示されるように設定されています。私は既にかなりの数のドロップダウンを持っています。選択されている場合にのみ、ドロップダウンメニューの内容を表示します。

論理的には単純なif文で作業する必要がありますが、電子メールにコンテンツを送信するためには1行しかないのでわかりません。if/else文をそこ。私は三項演算子を調べましたが、私のPHPの知識は限られており、動作させることができませんでした。ありがとう!だから、簡単にするため(だけアイデアを得るために簡素化)

HTML

<form>  
    <div class="tab-content clearfix"> 
     <div class="tab-pane active" id="carpet-cleaning"> 
      <h3 class="options-text">Carpet Cleaning Options</h3> 
       <!--how many bedrooms--> 
       <label class="control-label" for="carpet_cleaning">Bedrooms</label><br> 
       <select class="form-control-1" id="carpet_cleaning" name ="bedrooms_selection"> 
        <option value="0">0</option> 
        <option value="1">1</option> 
        <option value="2">2</option> 
        <option value="3">3</option> 
       </select> 
       <!--how many dining rooms--> 
       <br><label class="control-label" for="dining_rooms">Dining Rooms</label><br> 
       <select class="form-control-1" id="dining_rooms" name="dining_selection"> 
        <option value="0">0</option> 
        <option value="1">1</option> 
        <option value="2">2</option> 
        <option value="3">3</option> 
        <!--how many family rooms--> 
        <br><label class="control-label" for="family_rooms">Family Rooms</label><br> 
       <select class="form-control-1" id="family_rooms" name="family_room_selection"> 
        <option value="0">0</option> 
        <option value="1">1</option> 
        <option value="2">2</option> 
        <option value="3">3</option> 
       </select> 
    </div> 
</div> 
</form> 

PHP

<?php 
$bedrooms = $_POST['bedrooms_selection']; 
$diningRooms = $_POST['dining_selection']; 
$familyRooms = $_POST['family_room_selection']; 
$email_subject = "Price Quote"; 
$email_body="Carpet Services Needed: \n Bedrooms: $bedrooms \n Dining Rooms: $diningRooms \n Family Rooms: $familyRooms"; 
$to = "[email protected]"; 
$headers = "From: $email"; 
mail($to, $email_subject, $email_body, $headers); 
header("Location: http://example.com"); 
?> 

ユーザーがドロップダウンメニューで0を選択した場合、私はそれを表示したくありません送信される電子メールにif/elseステートメントを許可しない文字列だけではこれを理解することはできません。

+0

追記構築することができます。技術的には、 POST配列は失敗します。 –

+0

あなたは詳しく説明できますか?それは今のところ働いていますが、あなたが意味することを知りたいと思います。私はかなりPHPの新しいので、説明が本当に役立つだろう。 – Coltvant

+0

それは大丈夫です、大丈夫です。あなたの* "(アイデアを得るために単純化された)" *は、その方法が廃止されたことを意味するようです。 –

答えて

2

次の場合と比較して、email_body文字列

<?php 
if(!empty($_POST['bedrooms_selection'])){ 
$services[]='Bedrooms: '.$_POST['bedrooms_selection']; 
} 
if(!empty($_POST['dining_selection'])){ 
$services[]='Dining Rooms: '.$_POST['dining_selection']; 
} 
if(!empty($_POST['family_room_selection'])){ 
$services[]='Family Rooms: '.$_POST['family_room_selection']; 
} 
if($services){ 
$email_subject = "Price Quote"; 
$email_body='Carpet Services Needed: \n'.implode("\n",$services); 
$to = "[email protected]"; 
$headers = "From: $email"; 
mail($to, $email_subject, $email_body, $headers); 
header("Location: http://example.com"); 
} 
else{ 
echo 'You have to select at least one service'; 
} 
?> 
+0

これは私が探していたものです。したがって、空でなければ、各サービスは宣言されて配列に入れられますが、それは正しいのですか?そして、 '$ services'で配列を表示するだけですか? – Coltvant

+0

はい。ゼロは空です。宣言されていない限り、変数はfalseです。配列は表示可能な情報を保持します。 –

関連する問題