質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

Q&A

解決済

1回答

1918閲覧

$mailBodyでの出力とデータがない時の項目非表示

zer0root

総合スコア28

if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

0グッド

0クリップ

投稿2015/11/02 01:25

お世話になります。

PHPでフォームに入力された入力値をメール本文に出力し入力がなかった項目は項目ごと非表示にしする。ということを行いたいのですが 下記のコードで実装しているので出力はできていますが、
入力がなかった場合の項目ごと非表示の部分が実装できなくご教示していただきたいと思います。
よろしくお願いいたします。

lang

1 2<?php 3 session_start(); 4 mb_language("japanese"); 5 mb_internal_encoding("UTF-8"); 6 7 Class Mail 8 { 9 // フォームデータをSESSIONに格納 10 public function sendMail() { 11 $sessionClass = new Session(); 12 13 $to_mail = $_SESSION['email']; 14 15 // メールタイトル 16 $subject = MAIL_SUBJECT; 17 18 // メールヘッダーの設定 19 $header = ""; 20 $header .= "From: " . FROM_MAIL; 21 $header .= "\n"; 22 $header .= "Bcc: " . BCC_MAIL; 23 24 25 // メール本文 26 $mailBody = ''; 27 $mailBody .= $_SESSION['name'] . ' さま' . "\n\n"; 28 $mailBody .= 'お問い合わせ' . "\n"; 29 $mailBody .= '誠に有難う御座います。' . "\n\n"; 30 $mailBody .= '------以下お問い合わせ内容------' . "\n\n"; 31 $mailBody .= '会社名:' .$_SESSION['company'] ."\n\n"; 32 $mailBody .= '部署名:' .$_SESSION['section'] ."\n\n"; 33 $mailBody .= 'ご担当者名:' .$_SESSION['name'] ."\n\n"; 34 $mailBody .= 'ご担当者名(フリガナ):' .$_SESSION['name2']. "\n\n"; 35 $mailBody .= 'メールアドレス:' .$_SESSION['email'] . "\n\n"; 36 $mailBody .= '電話番号:' .$_SESSION['tel1'].$_SESSION['tel2'].$_SESSION['tel3']. "\n\n"; 37 $mailBody .= 'FAX番号:' .$_SESSION['fax1'].$_SESSION['fax2'].$_SESSION['fax3']. "\n\n"; 38 $mailBody .= 'ご住所:' .$_SESSION['zip1'].$_SESSION['zip2'].$_SESSION['prefecture'].$_SESSION['address']. "\n\n"; 39 $mailBody .= 'お問い合わせ内容:' .$_SESSION['message']. "\n\n"; 40 $mailBody .= 'また、何か御座いましたら、' . "\n"; 41 $mailBody .= 'お問い合わせを頂ければ幸いに御座います。' . "\n\n"; 42 $mailBody .= '以上、よろしくお願い致します。' . "\n\n"; 43 44 // メール送信 45 mb_send_mail($to_mail, $subject, $mailBody, $header); 46 return; 47 } 48 } 49?> 50

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

あんまり難しく考える必要は無く、
それぞれのフォームデータの有無で判断するのが良いかと思います。
例えば名前なら

PHP

1 $mailBody = ''; 2 if($_SESSION['name']){ 3 $mailBody .= $_SESSION['name'] . ' さま' . "\n\n"; 4 } 5 $mailBody .= 'お問い合わせ' . "\n";

という感じで項目ごとにifで判断する感じです。

それとは全く別の感想として、
$_SESSIONをクラス内で使ってしまうと、
そのクラスの外で$_SESSIONを迂闊に触れなくなってしまい、せっかくクラス化して分離しようとしている意味が無くなってしまうので、
$_SESSIONを使うのではなく、メソッドの引数にするか、クラスのコンストラクタの引数にしてメンバ変数として持たせる方がバグ発生の可能性が減らせるのでお勧めです。

投稿2015/11/02 03:06

tanat

総合スコア18709

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

zer0root

2015/11/02 04:30

解決できました。ありがとうございます。 その他実装のアドバイスまでいただき大変光栄ですありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問