web-dev-qa-db-ja.com

送る PDF ラジオボタンの選択に基づいて電子メールでリンクする

私は私のワードプレスサイトでカスタム電子メールとフォームを使っています。

ものは2つのラジオボタンがある形であります:

  1. 英語
  2. 中国語

他のフィールドは正常です。

上記の両方の言語で、2 PDFをサーバーにアップロードしました。私が欲しいのはフォームの言語選択に基づいてEメールでuse PDFリンクを送ることです。

私は試していますが、常に同じPDFリンクを送信しています。

データをチェックしてEメールで送信するコード:

if(isset($_POST['submit']) && isset($_POST['language1'])){
  $clname=$_POST['clname'];
  $clsurname=$_POST['clsurname'];
  $clemail=$_POST['clemail'];
  $radio = $_POST['language1'];
  $fileatt1     = "http://example.com/english.pdf";
  $fileatttype = "application/pdf";
  $fileattname = "newname.pdf"; //name that you want to use to send or you can use the same name

  $headers = 'From: '. $clname .' <'. $clemail .'>' . "\r\n";
  $mail = get_option('admin_email');
  $subject = "Testing";


  $message = 'Name:'.$clname.' '.$clsurname.'\n\n
    Email:'.$clemail.'\n\n Radiovalue:'.$radio.'\n'. $fileatt;

  wp_mail($mail,$subject,$message,$headers);
            $emailsent= true;
}

フォームコード

<div class="overflow-hidden">
  <form class="text-center" method="post" action="<?php echo $_SERVER['REQUEST_URI']; ?>">

    <div class="col-md-6">
       <p class="tns">First Name *:</p>
       <input type="text" name="clname" placeholder="First Name" required />
    </div>
    <div class="col-md-6">
      <p class="tns">Last Name *:</p>
        <input type="text" name="clsurname" placeholder="Last Name" required />
        <input type="radio" name="language1" value="English">English 
        <input type="radio" name="language2" value="Chinese">Chinese </div>

      </div>

      <hr>
      </div>
      <div class="overflow-hidden">
      <div class="col-sm-6 col-sm-offset-3">


      <input type="submit" name="submit" value="submit" />
    </div>
  </div>
</form>

別のPDFリンクをELSE状態にしようとしましたが、うまくいきません。私はまた条件を入れて2つの異なるを試してみましたが、それはまた私のために働いていません。

2
Helping Hands

2つの無線入力に同じname属性を使用する必要があります。したがって、名前がlanguageであるとしましょう。 languageが設定されている場合、valueで表される2つのオプションがあります。EnglishまたはChineseです。

あなたが投稿したコードでは、それは主にあなたの問題です。 $radio変数を$_POST['language1']に設定しますが、$_POST['language1']常にEnglishになりますChinese値は$_POST['language2']によって設定されるため

フォームマークアップで、radio入力name値を変更します

<div class="overflow-hidden">
  <form class="text-center" method="post" action="<?php echo $_SERVER['REQUEST_URI']; ?>">

    <div class="col-md-6">
      <p class="tns">First Name *:</p>
      <input type="text" name="clname" placeholder="First Name" required />
    </div>
    <div class="col-md-6">
      <p class="tns">Last Name *:</p>
      <input type="text" name="clsurname" placeholder="Last Name" required />
      <input type="radio" name="language" value="English">English 
      <input type="radio" name="language" value="Chinese">Chinese
    </div>

    <hr>

    <div class="overflow-hidden">
      <div class="col-sm-6 col-sm-offset-3">
        <input type="submit" name="submit" value="submit" />
      </div>
    </div>
  </form>
</div>

PHPで:

  • language1の参照をlanguageに変更します
  • 三項演算子 を使用して、$fileattを設定します。 $radioEnglishの場合、英語のURLをファイルに出力します。それ以外の場合は中国語のURLを出力します。

if(isset($_POST['submit']) && isset($_POST['language'])){

  $radio       = $_POST['language'];
  $fileatt     = 'English' == $radio ? "http://example.com/english.pdf" : "http://example.com/chinese.pdf" ;
  $fileatttype = "application/pdf";


  $headers = 'From:' . $_POST['clname'] . ' <'. $_POST['clemail'] .'>' . "\r\n";
  $mail = get_option('admin_email');
  $subject = "Testing";


  $message = 'Name: ' . $_POST['clname'] . ' ' . $_POST['clsurname'] .'\n\n
  Email:'.$_POST['clemail'].'\n\n Radiovalue:' . $radio . '\n'. $fileatt;

  wp_mail($mail,$subject,$message,$headers);
  $emailsent= true;
}
2
bynicolas