0

我制作了一个表格,它将获取联系信息并将其发送到电子邮件。它适用于我有超过 2000 个选项的城市。城市下拉列表发送值,这只是一个数字。我希望表单发送城市,这是 HTML 元素内容而不是属性中的值编号。我不想用城市替换 2000 个不同的值。我知道循环会走的路,但我不知道如何创建它。

HTML -

<option value="2" >Los Angeles - CA</option>

PHP -

$city = $_REQUEST['city'] ;

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
       mail( "$webmaster_email", "Submission", "$city,"From:$email" );
header( "Location: $thankyou_page" );
4

3 回答 3

1

使用数组!例子:

<?php
    $cities = array(
        '0' => 'New York - NY',
        '1' => '...'
        '2' => '...'
    );
    if (isset($cities[$_REQUEST['city']])) {
        $city = $cities[$_REQUEST['city']];
    } else {
        $city = $_REQUEST['city'];
    }

    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        mail( "$webmaster_email", "Submission", "$city,"From:$email" );
        header( "Location: $thankyou_page" );
    }
?>
于 2013-07-03T19:43:46.673 回答
1

我相信您想发送文本不是. option正确的?

我建议你在你的表单上创建这个元素:当用户选择他想要的选项时,用 JavaScript<input type='hidden' id='city_name' name='city_name' />保存值。select然后,select像这样创建和事件:

<select onchange="document.getElementById('city_name').value=this.options[this.selectedIndex].text;">

因此,您将$_POST['city_name']在 PHP 代码中使用该代码。

于 2013-07-03T19:45:24.523 回答
0

大概您<option>在服务器上生成了带有某些东西的列表,例如一个数组:

$locations = array(
   ...
   2 => 'Los Angeles - CA'
   ...
);

那么你就会有

$place = $locations[$_REQUEST['city']];

获取选项的文本。

或者,您可以在选项中嵌入完整的城市名称:

<option value="Los Angeles - CA">Lost Angeles - CA</option>
于 2013-07-03T19:40:20.297 回答