2014-10-06 3 views
0

안녕하세요 폼 배열에서 선택한 값을 저장하려고합니다. 양식 값을 색인으로 사용하여 실제 단어가있는 배열의 값을 찾습니다. ex "nf"=> 뉴 펀들 랜드PHP html 양식 값이 배열

<!-- 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; 
    ?> 

지방 배열과 양식 배열을 사용하여 변수를 잘못 채우고 있다고 생각합니다. 제공 할 수있는 도움과 설명이 우수합니다. 고맙습니다.

+0

에코에서 구문 오류가 있습니다. echo : $ province; ? –

+0

$ province. = "$ prov - $ selectedProvince,"; 이것은 배열의 키와 값을 연결합니다. – JWhy

+0

키가 필요없고 값만 필요합니다. 그래서 매니 토바와 앨버타 양식을 클릭하면 PROVINCE 배열에서 "mb"와 "ab"를 찾아서 거기에 매니토바와 알버타의 값을 표시해야합니다. –

답변

0

지금은 $PROVINCES 키의 양식에서 선택한 값을 검색하지 않으므로 원하는 결과를 얻지 못할 수 있습니다. 양식 데이터를 처리 할 때

, 당신은 (그것이 GET 형태 인 경우 또는 $_GET['province']) $_POST['province']에서 값의 상관 관계를 필요로하고 약어 및 전체 제목의 배열을 사용하여 번역합니다. 그러나이 약어 및 제목 목록이 있으므로 양식을 만들 때이 요소를 사용하여 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