【问题标题】:PHP html Form value found in arrayPHP html表单值在数组中找到
【发布时间】:2014-11-30 12:30:16
【问题描述】:

您好,我正在尝试将选择的值存储在表单数组中。我使用表单值作为索引来查找具有实际单词的数组中的值。 ex "nf" => 纽芬兰

<!-- PROVINCES CHOICE -->
Province (Multiple Select) <font style="color:red;">*</font>
     <select name="province[]" multiple = "multiple" style = "background-color:<?php echo $colorProvince; ?>">                                      
        <!-- Option select for province -->
        <option value="--" disabled="disabled">--Please Select Provinces--</option>
        <option value="nf">Newfoundland</option>
        <option value="pe">Prince Edward Island</option>
        <option value="nb">New Brunswick</option>
        <option value="ns">Nova Scotia</option>
        <option value="qc">Quebec</option>
        <option value="on">Ontario</option>
        <option value="mb">Manitoba</option>
        <option value="sk">Saskatchewan</option>
        <option value="ab">Alberta</option>
        <option value="bc">British Columbia</option>
        <option value="nt">Northwest Territories</option>
    </select>

    <?PHP $PROVINCES = array(
        "--"=>"---Please Select Provinces---",                
        "nf"=>"Newfoundland",
        "pe"=>"PrinceEdwardIsland",
        "nb"=>"New Brunswick",
        "ns"=>"Nova Scotia",
        "qc"=>"Quebec",
        "on"=>"Ontario",
        "mb"=>"Manitoba",
        "sk"=>"Saskatchewan",
        "ab"=>"Alberta",
        "bc"=>"British Columbia",
        "nt"=>"Northwest Territories");

    {
        foreach($PROVINCES as $prov => $selectedProvince)               
        {
            $province = $province . $selectedProvince . " , ";              

        }
        echo $province;
   ?>

我想我只是使用省数组和表单数组错误地填充了变量。 您可以提供的任何帮助和解释都非常好。谢谢。

【问题讨论】:

  • 你在 echo here 中有语法错误 echo: $province; ?
  • $province .= "$prov - $selectedProvince,";这将连接数组的键和值
  • 我不需要键,只需要值。因此,如果有人点击了 Manitoba and Alberta 表格,它应该在 PROVINCE 数组中查找“mb”和“ab”,并在那里显示 Manitoba 和 Alberta 的值
  • @null 抱歉,这是一个错字,我添加它是为了方便其他人,实际的回声更长,但我测试过,这不是问题
  • 您实际上想在这里做什么?您是否正在处理表单的结果?你能发布你得到的输出和你期望得到的吗?你的问题不太清楚。

标签: php html arrays forms


【解决方案1】:

目前,您没有在$PROVINCES 的键中搜索在表单中选择的值,因此您没有得到想要的结果。

当您处理表单数据时,您需要关联来自$_POST['province'](或$_GET['province'],如果它是GET 表单)的值,然后使用您的缩写和完整标题数组翻译它们。但是,由于您有此缩写和标题列表,因此您还可以在创建表单时使用它们来填充 select 元素。下面是一些代码来证明这一点。

在脚本的开头,声明省份和缩写的数组:

$p_arr = array(
    "ab"=>"Alberta",
    "bc"=>"British Columbia",
    "mb"=>"Manitoba",
    "nb"=>"New Brunswick",
    "nf"=>"Newfoundland",
    "nt"=>"Northwest Territories",
    "ns"=>"Nova Scotia",
    "on"=>"Ontario",
    "pe"=>"Prince Edward Island",
    "qc"=>"Quebec",
    "sk"=>"Saskatchewan",
);
?>

稍后,在表单创建代码中:

<label for="province_select">Province (multiple select) <em class="rqd">*</em></label>
<select id="province_select" name="province[]" multiple="multiple">
    <option value="--" disabled="disabled">--Please Select Provinces--</option>
<?php
    # add the options using the keys and values from the abbreviation/province
    foreach ($p_arr as $pk => $pv) {
        echo
'       <option value="' . $pk . '">' . $pv . "</option>\n";
    }
?>

在您处理表单输入的代码中:

<?php
    # this function gets the province name from $p_arr when given an abbreviation
    function get_province( $p ) {
        if (isset($GLOBALS['p_arr'][$p])) {
            return $GLOBALS['p_arr'][$p];
        }
    }

    if ($_POST) {  // or $_GET
        # if 'province' is set in the form
        if ($_POST['province']) {
            # create $prov_str by applying the function "get_province" to all the
            # values in $_POST['province'], and join them with ", "
            $prov_str = implode(", ", array_map( "get_province", $_POST['province'] ) );
            echo "$prov_str\n";
        }
    }

示例输入:bc, nf, ns, qc

输出:British Columbia, Newfoundland, Nova Scotia, Quebec

【讨论】:

    猜你喜欢
    • 2017-11-15
    • 1970-01-01
    • 2011-03-22
    • 1970-01-01
    • 2013-10-08
    • 1970-01-01
    • 2019-08-27
    • 2021-09-15
    • 2016-04-12
    相关资源
    最近更新 更多