0

ドロップダウンオプションとしてさまざまな人にメールを送信すると思われる連絡先があります。

オプション値は配列を使用して配列で定義されており、指定された人に電子メールを送信できるように、配列値を呼び出すのに苦労しています。

配列は次のように定義されています。

if((isset($_GET['enquiry']) && $_GET['enquiry']=='Locate a dealer/distributor')||(isset($_POST['enquiry']) && $_POST['enquiry']=='Locate a dealer/distributor')){
    $chk_Locate=TRUE;
}

if(isset($_GET['enquiry']) && $_GET['enquiry'] == 'CC'){
    $query_recipients = array(array('Complaint', 'csm@examplecompany.co.za'),
                            array('Suggestion', 'csm@examplecompany.co.za'),
                            array('Compliment', 'csm@examplecompany.co.za'));
    $enquiry = '<input type="hidden" name="enquiry" id="enquiry" value="CC">';
}

else{
    $query_recipients = array(array('Locate a dealer/distributor', 'sales@examplecompany.co.za'),
                            array('Technical support', 'technical@examplecompany.co.za'),
                            array('Back orders', 'backorders@examplecompany.co.za'),
                            array('Product enquiry', 'sales@examplecompany.co.za'),
                            array('Catalog request', 'sales@examplecompany.co.za'),
                            array('New customer enquiry', 'sales@examplecompany.co.za'),
                            array('Existing customers - logon', 'dealers@examplecompany.co.za'),
                            array('Existing customers - orders', 'weborder@examplecompany.co.za'),
                            array('Report web problems', 'webmaster@examplecompany.co.za'));
}

ループ

foreach($query_recipients as $key => $val){ 
    if((isset($_POST['enquiry']) && $_POST['enquiry'] == $val[0])||(isset($_GET['enquiry']) && $_GET['enquiry'] == $val[0])){
        $selected = $val[0].' : '.$item;
        if($val[0]=='Existing customers - logon'||$val[0]=='Technical support'||$val[0]=='Catalog request'||$val[0]=='Product enquiry'||$val[0]=='New customer enquiry'||$val[0]=='Existing customers - orders'||$val[0]=='Catalog request')

それらを呼び出すコードは次のとおりです。

$_POST['recipient_email'] = $contact_email.','.$recpt_email;
    if(isset($ref_number)){
        $_POST['subject'] = 'Examplecompany Group: '.$ref_number.': '.$_POST['enquiry'];
    }else{
        $_POST['subject'] = 'Examplecompany Group: '.$_POST['enquiry'];
    }
    $_POST['sender_email'] = $_POST['email'];
    $_POST['cc'] = $_POST['email'].', Examplecompany Group <Examplecompany.orders@gmail.com>';
    $_POST['body'] = '<p>Name: ' . $_POST['name'] . '</p>'
                        . '<p>Surname: ' . $_POST['surname'] . '</p>'
                        . '<p>Company: ' . $_POST['company'] . '</p>'
                        . '<p>Examplecompany Account No.: ' . $_POST['accnr'] . '</p>'
                        . '<p>Account No. verification: ' . $cust_verify . '</p>'
                        . '<p>Email: ' . $_POST['email'] . '</p>'
                        . '<p>Tel/cell: ' . $_POST['tel'] . '</p>'
                        . $_POST['enquiry'] . ': ' . $_POST['message'];

    if(Email::Send($_POST, NULL)){
        $message = 'Your feedback has been sent'.$cont_ref;
    } else {
        $message = 'There was an error sending your feedback';
    }
}

これは、今のところそれらを呼び出すために使用すると思われる行ですが 、選択したオプションに関係なく$_POST['recipient_email'] = $contact_email.','.$recpt_email;、最後の配列を呼び出しarray('Report web problems', 'webmaster@examplecompany.co.za')ます。

配列値を呼び出す方法を見つけることができれば、助けてください。私のフォームは計画通りに機能すると思います。

わからないセリフがある

$enquiry_options .= '<option>'.$val[0].'</option>';
    $recpt_email = $val[1];

val が設定されている場合$Val[1]、フォームは配列の最後のメール アドレスにメールを送信しますが、設定されている場合は送信しませ$Val[0]ん。

4

1 に答える 1

0

ネストされた配列の代わりにキーと値のペアを使用するように配列を切り替えることを検討してください。(アレイのドキュメントを参照してください。)

$enquiry_choices = array(
    'Complaint' => 'csm@examplecompany.co.za',
    'Suggestion' => 'csm@examplecompany.co.za',
    'Compliment' => 'csm@examplecompany.co.za',
    'Locate a dealer/distributor' => 'sales@examplecompany.co.za',
    'Technical support' => 'technical@examplecompany.co.za',
    'Back orders' => 'backorders@examplecompany.co.za',
    'Product enquiry' => 'sales@examplecompany.co.za',
    'Catalog request' => 'sales@examplecompany.co.za',
    'New customer enquiry' => 'sales@examplecompany.co.za',
    'Existing customers - logon' => 'dealers@examplecompany.co.za',
    'Existing customers - orders' => 'weborder@examplecompany.co.za',
    'Web site problems' => 'webmaster@examplecompany.co.za',
);

// Optional: Sort the choices by name
ksort($enquiry_choices);

これにより、ユーザーの選択に関連付けられた電子メール アドレスを簡単に取得できます。

$enquiry = $_GET['enquiry'];
$enquiry_email = (array_key_exists($enquiry, $enquiry_choices) ? $enquiry_choices[$enquiry] : false);

ドロップダウン リストの HTML を生成するのも簡単です。( foreachのドキュメントを参照してください。) 定義する上記の$enquiryコードは、以下のコードより前にある必要があることに注意してください。

echo <<<HTML
<div>
    <label for="enquiry">Enquiry:</label>
</div>
<select name="enquiry" id="enquiry" class="select">
HTML;

foreach($enquiry_choices as $key => $value) {
    $selected = ($enquiry == $key ? ' selected="selected"' : '');
    echo "<option$selected>$key</option>";
}

echo '</select>';
于 2012-08-27T20:37:05.230 に答える