如何使用PHP替换HTML元素内容(纯文本)的属性

时间:2013-07-03 19:37:46

标签: php html forms

我制作了一份表格,其中包含联系信息并将其发送至电子邮件。它的工作期望我有超过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" );

3 个答案:

答案 0 :(得分: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" );
    }
?>

答案 1 :(得分:1)

我相信你想从option发送文本而不是。正确?

我建议您在表单上创建此元素:<input type='hidden' id='city_name' name='city_name' />,以便在用户选择所需选项时使用JavaScript保存select值。然后,在select上创建和事件,如下所示:

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

所以你的PHP代码上会有$_POST['city_name']

答案 2 :(得分:0)

据推测,您在服务器上生成了<option>列表,例如一个数组:

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

然后你只需要

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

获取选项的文本。

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

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