2015-10-23 28 views
1

我有一個「狀態」類別選擇,根據所選狀態顯示4個「載體」選擇之一。我希望PHP用它們各自的選項填充「運營商」選擇。我已經搜索過堆棧,並且我確信有幾個答案,但由於我的新手PHP狀態,我很難理解邏輯。這就是說,目前的PHP我有我被指示使用/回收,並不反映我的PHP技能。我真的需要幫助這個人!使用php陣列生成選擇選項

這裏有一個小提琴(減去PHP):http://fiddle.jshell.net/prxmeo9z/

的HTML(使用PHP):

<div class="dropdown-box"> 
         <select name="state_select" id="state_select"> 
          <option selected disabled>Choose a state</option> 
          <option value="1">Connecticut</option> 
          <option value="2">New Hampshire</option> 
          <option value="3">New Jersey</option> 
          <option value="4">New York</option> 
         </select> 
</div> 
     <br /> 

<div id="select-div1" class="select-div"> 
     <select name="conn_select" id="carrier_select1" class="carr-hide"> 
      <option selected disabled>Select a carrier - Conn</option> 
      <option value="1"> 
      <? 
      $options = ''; 
foreach($company_arry as $company) { 
    $options .= "<option value='" . $company['Id'] . "'>" . $company['Name'] . "</option>"; 
} 
echo $options; 
?> 
      </option> 
     </select> 
</div> 

<div id="select-div" class="select-div">      
     <select name="nh_select" id="carrier_select2" class="carr-hide"> 
      <option selected disabled>Select a carrier - NH</option> 
      <option value="2"> 
      <? 
      $options = ''; 
foreach($company_arryNH as $company) { 
    $options .= "<option value='" . $company['Id'] . "'>" . $company['Name'] . "</option>"; 
} 
echo $options; 
?> 
      </option> 
     </select> 
</div> 

<div id="select-div" class="select-div">      
     <select name="nj_select" id="carrier_select3" class="carr-hide"> 
      <option selected disabled>Select a carrier - NJ</option> 
      <option value="3"> 
      <? 
      $options = ''; 
foreach($company_arryNJ as $company) { 
    $options .= "<option value='" . $company['Id'] . "'>" . $company['Name'] . "</option>"; 
} 
echo $options; 
?> 
      </option> 
     </select> 
</div> 

<div id ="select-div" class="select-div">       
     <select name="ny_select" id="carrier_select4" class="carr-hide"> 
      <option selected disabled>Select a carrier - NY</option> 
      <option value="4"> 
      <? 
      $options = ''; 
foreach($company_arry as $company) { 
    $options .= "<option value='" . $company['Id'] . "'>" . $company['Name'] . "</option>"; 
} 
echo $options; 
?> 
      </option> 
     </select> 

</div> 

的JS/JQuery的:

function optionCheck() { 
    var i, len, optionVal, helpDiv, 
     selectOptions = document.getElementById("state_select"); 

    // loop through the options in case there 
    // are multiple selected values 
    for (i = 0, len = selectOptions.options.length; i < len; i++) { 

     // get the selected option value 
     optionVal = selectOptions.options[i].value; 

     // find the corresponding help div 
     helpDiv = document.getElementById("carrier_select" + optionVal); 
     //selectDiv = document.getElementsByClassName("select-div"); 

     // move on if we didn't find one 
     if (!helpDiv) { continue; } 

     // set CSS classes to show/hide help div 
     if (selectOptions.options[i].selected) { 
      helpDiv.className = "conn_select nh_select nj_select ny_select"; 
      $(helpDiv).addClass("dropdown-box"); 
     } else { 
      helpDiv.className = "carr-hide"; 
      //$(".select-div").addClass("carr-hide"); 

     } 
    }  
} 

// alternative method of binding the onchange handler 
document.getElementById("state_select").onchange = optionCheck; 

的PHP文件我m包括:

<? 
$sql = mysql_query("SELECT gia_survey_allyears_company.Name, gia_survey_allyears_matrix.* FROM `gia_survey_allyears_matrix` 
        left join gia_survey_allyears_company on gia_survey_allyears_matrix.CompanyID = gia_survey_allyears_company.ID 
        WHERE gia_survey_allyears_matrix.CompanyID=".mysql_real_escape_string(trim($_GET['id'])).""); 

$row = mysql_fetch_assoc($sql); 

$qu_arry = array( 'Q1'=>'N/A','Q2'=>'N/A','Q3'=>'N/A','Q4'=>'N/A', 
        'Q5'=>'N/A','Q6'=>'N/A','Q7'=>'N/A','Q8'=>'N/A', 
        'Q9'=>'N/A','Q10'=>'N/A','Q11'=>'N/A','Q12'=>'N/A', 
        'Q13'=>'N/A','Q14'=>'N/A','Q15'=>'N/A','Q16'=>'N/A'); 

$quavg_arry = array( 'Q1'=>'N/A','Q2'=>'N/A','Q3'=>'N/A','Q4'=>'N/A', 
        'Q5'=>'N/A','Q6'=>'N/A','Q7'=>'N/A','Q8'=>'N/A', 
        'Q9'=>'N/A','Q10'=>'N/A','Q11'=>'N/A','Q12'=>'N/A', 
        'Q13'=>'N/A','Q14'=>'N/A','Q15'=>'N/A','Q16'=>'N/A'); 

$holdarry = array( 'Agents'=>'N/A','RankOutOf'=>'N/A','Rank'=>'N/A','Score'=>'N/A', 
        'Avg'=>'N/A','AvgAllScore'=>'N/A','AvgAllQuestion'=>'N/A', 
        'ComAvg'=>'N/A','Q1-16'=>$qu_arry,'Q1-16Avg'=>$quavg_arry); 

$company['2003'] = $holdarry; 
$company['2004'] = $holdarry; 
$company['2005'] = $holdarry; 
$company['2006'] = $holdarry; 
$company['2007'] = $holdarry; 
$company['2008'] = $holdarry; 
$company['Name']= $row['Name']; 
$company['State']= $row['State']; 

do { 
// Show Scores for question 
$qu_arry = array( 'Q1'=>round($row['Q2-0'],1),'Q2'=>round($row['Q2-1'],1),'Q3'=>round($row['Q3-0'],1),'Q4'=>round($row['Q3-1'],1), 
        'Q5'=>round($row['Q3-2'],1),'Q6'=>round($row['Q4-0'],1),'Q7'=>round($row['Q4-1'],1),'Q8'=>round($row['Q5-0'],1), 
        'Q9'=>round($row['Q5-1'],1),'Q10'=>round($row['Q5-2'],1),'Q11'=>round($row['Q6-0'],1),'Q12'=>round($row['Q6-1'],1), 
        'Q13'=>round($row['Q7-0'],1),'Q14'=>round($row['Q7-1'],1),'Q15'=>round($row['Q8-0'],1),'Q16'=>round($row['Q8-1'],1)); 

    $company[$row['Year']]= array( 'Agents'=>$row['total'], 
            'RankOutOf'=>'', 
            'Rank'=>$row['Rank'], 
            'Score'=>round($row['QAvg'],1), 
            'Q1-16'=>$qu_arry, 
            'Q1-16Avg'=>''); 

    $sqlStateYear = mysql_query("SELECT * FROM `gia_survey_allyears_matrix` WHERE CompanyID=0 and `State`='".$row['State']."' and `Year`='".$row['Year']."'"); 
    $rowStateYear = mysql_fetch_assoc($sqlStateYear); 

    do { 

$company[$row['Year']]['Q1-16Avg'] = 
       array('Q1'=>round($rowStateYear['Q2-0'],1),'Q2'=>round($rowStateYear['Q2-1'],1), 
        'Q3'=>round($rowStateYear['Q3-0'],1),'Q4'=>round($rowStateYear['Q3-1'],1), 
        'Q5'=>round($rowStateYear['Q3-2'],1),'Q6'=>round($rowStateYear['Q4-0'],1), 
        'Q7'=>round($rowStateYear['Q4-1'],1),'Q8'=>round($rowStateYear['Q5-0'],1), 
        'Q9'=>round($rowStateYear['Q5-1'],1),'Q10'=>round($rowStateYear['Q5-2'],1), 
        'Q11'=>round($rowStateYear['Q6-0'],1),'Q12'=>round($rowStateYear['Q6-1'],1), 
        'Q13'=>round($rowStateYear['Q7-0'],1),'Q14'=>round($rowStateYear['Q7-1'],1), 
        'Q15'=>round($rowStateYear['Q8-0'],1),'Q16'=>round($rowStateYear['Q8-1'],1)); 
$company[$row['Year']]['AvgAllScore'] = round($rowStateYear['QAvg'],1); 
$company[$row['Year']]['RankOutOf'] = $rowStateYear['total']; 
    } while ($rowStateYear = mysql_fetch_assoc($sqlStateYear)); 

// END 
} while ($row = mysql_fetch_assoc($sql)); 
function fnRake($rake) { 
    if ($rake==11 || $rake==12 || $rake==13) { 
     $i=$rake; 
    }else { 
     $i = substr($rake,strlen($rake)-1,1); 
    } 
    switch ($i) { 
     case 1: 
      $add = "st"; 
     break; 
     case 2: 
      $add = "nd"; 
     break; 
     case 3: 
      $add = "rd"; 
     break; 
     case 11: 
      $add = "th"; 
     break; 
     case 12: 
      $add = "th"; 
     break; 
     case 13: 
      $add = "th"; 
     break; 
     default: 
      $add = "th"; 
     break; 
    } 
    if ($rake=="N/A") { 
     return $rake; 
    }else{ 
     return $rake."<sup>$add</sup>"; 
    } 
} 
?> 

一些額外的PHP在我的html開頭:

$state = new state; 
$state_arry = $state->state_options("NY"); 

//For Connecticut 
$sqlCT = mysql_query("SELECT * FROM `gia_survey_allyears_company` WHERE `State`='CT' and `show`='Y' order by Name"); 
//For New York 
$sql = mysql_query("SELECT * FROM `gia_survey_allyears_company` WHERE `State`='NY' and `show`='Y' order by Name"); 
//For New Jersey 
$sqlNJ = mysql_query("SELECT * FROM `gia_survey_allyears_company` WHERE `State`='NJ' and `show`='Y' order by Name"); 
//For New Hampshire 
$sqlNH = mysql_query("SELECT * FROM `gia_survey_allyears_company` WHERE `State`='NH' and `show`='Y' order by Name"); 

$row = mysql_fetch_assoc($sql); 

//For New York 
do { 
    $company_arry[]=array('Name'=>$row['Name'],'Id'=>$row['ID']); 
} while ($row = mysql_fetch_assoc($sql)); 

//For New Jersey 
do { 
    $company_arryNJ[]=array('Name'=>$row['Name'],'Id'=>$row['ID']); 
} while ($row = mysql_fetch_assoc($sqlNJ)); 

//For New Jersey 
do { 
    $company_arryNH[]=array('Name'=>$row['Name'],'Id'=>$row['ID']); 
} while ($row = mysql_fetch_assoc($sqlNH)); 

//For Connecticut 
do { 
    $company_arryCT[]=array('Name'=>$row['Name'],'Id'=>$row['ID']); 
} while ($row = mysql_fetch_assoc($sqlCT)); 

$total = count($company_arry); 
$col1 = round($total/2); 
$col2 = $total-1 

;

這個PHP生成我需要在紐約CARRIER SELECT(作爲一個例子)的列表:

<? 
      for ($i1=0; $i1<= $col1; $i1++) { 
       echo "<a href=\"company.php?id=".$company_arry[$i1]['Id']."\">".$company_arry[$i1]['Name']."</a><br>"; 
      } 
      ?> 
+0

這是很好的和所有,但...究竟是什麼問題? –

+0

問題是,我需要修改最後一個PHP代碼(示例)來生成選項NOT hrefs ...並且我不知道如何。或者,如果這甚至是正確的解決方案? –

+0

它只是文本。將''

回答

1

也許這將修復它

$options = ''; 
foreach($company_arry as $company) { 
    $options .= "<option value='" . $company['Id'] . "'>" . $company['Name'] . "</option>"; 
} 
echo $options; 
+0

這個工程!儘管每個州都有不同的運營商列表,而我的「$ sql」變量目前僅查詢紐約所有公司。那麼我應該爲每個狀態複製變量嗎?或者,還有更好的方法? –

+0

@StevenSerrano,做所有的數據庫有相同的佈局?所以只是'名字'和'Id'。 – Thaillie

+0

是的。在路上,用戶將點擊另一個按鈕,該狀態和運營商將根據狀態和運營商唯一ID(運營商ID已存在)獲取表格數據。我已更新該帖子以反映我對HTML部分和「其他PHP」部分所做的更改。這是一個好的解決方案嗎? –