PHP Массив населения в форме электронной почты работает только наполовину - PullRequest
0 голосов
/ 22 января 2020

У меня есть две формы, настроенные на моем веб-сайте, но они используют один и тот же файл обработчика форм php, поэтому я создал код, чтобы он определял выбранную топику c или заполнял ее c заголовок для другой формы, по какой-то причине она работала, но теперь я могу заставить работать только два последних элемента массива, первый - дать мне пустую тему в письме и повесить форму. код ниже:

PHP фрагмент:

    if(isset($_POST['Message-Topic']))
        {
            $Topics = array (
                "The Want List" => "Want List",
                "Sell a Car" => "Sell a Car",
                "Consignment Program" => "Consignment Program",
                "General Information" => "General Inquiry");
            $Topic = $Topics[$_POST['Message-Topic']];
        } 
    elseif(isset($_POST['Subject'])) 
        {
            $Topic = "Buyer Inquiry";
        }

    $this->mailer->Subject = $Topic;

HTML фрагмент:

<select placeholder="Message Topic" name="Message-Topic" required>
    <option value="" disabled selected>Select your Topic</option>
    <option value="Want List">The Want List</option>
    <option value="Sell a Car">Sell a Car</option>
    <option value="Consignment Program">Consignment Program</option>
    <option value="General Information">General Information</option>
</select>

Дайте мне знать, если я могу предоставить что-нибудь еще, спасибо!

1 Ответ

1 голос
/ 22 января 2020

После исправления очевидной несоответствия между первым параметром и его аналогом в массиве $Topics и небольшой настройкой для удаления пробелов, кажется, что он работает нормально для выбора топи c. Когда вы делаете lookup для извлечения окончательной топи c, значения в ключах select & в массиве совершенно произвольны - они не должны совпадать или даже близко копировать значение, используемое в почтовом приложении. Ниже приводится распечатка того, как этому почтовику может быть присвоено значение.

<?php

    $topic = false;


    if( $_SERVER['REQUEST_METHOD']=='POST'){
        if( isset( $_POST['Message-Topic'] ) ) {

            $choice=$_POST['Message-Topic'];

            $topics = array (
                "want_list"             => "The Want List",
                "sell_car"              => "Sell a Car",
                "consignment_program"   => "Consignment Program",
                "general_information"   => "General Inquiry"
            );

            $topic = array_key_exists( $choice, $topics ) ? $topics[ $choice ] : false;

        }elseif( empty( $_POST['Message-Topic'] ) ){
            $topic='General Enquiry';

        } elseif( isset( $_POST['Subject'] ) ) {
            $topic = "Buyer Inquiry";
        }

        #$this->mailer->Subject = $topic;
        exit( printf( '$this->mailer->Subject = "%s";',$topic ) );
    }

?>
<!DOCTYPE html>
<html lang='en'>
    <head>
        <meta charset='utf-8' />
        <title></title>
    </head>
    <body>
        <form method='post'>
            <select name="Message-Topic" required>
                <option hidden disabled selected>Select your Topic
                <option value="want_list">The Want List
                <option value="sell_car">Sell a Car
                <option value="consignment_program">Consignment Program
                <option value="general_information">General Information
            </select>

            <input type='submit' />
        </form>
    </body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...