2016-05-12 33 views
2

我正在構建一個網頁,使用戶能夠查看他們選擇的特定產品的報告。步驟如下:使PHP函數互相協作

User chooses interface(Beta或Cloud) - >User Chooses Product(產品基於所選接口) - > Info會相應顯示。

其中顯示的信息寫入如下頁面:

HTML

<div class="roundiv" > 

     <h4>*Interface: </h4> 
     <select class="form-control " style='width:250px;' onclick="INSERT SOMETHING HERE" > 
      <option value="-1" >Select Interface </option> 
      <?php 
       config::selectInterface($cao); 
      ?> 

     </select> 

     <h4> 
      *Product: 
     </h4> 
     <select class="form-control" style="width:250px;"> 
      <option value="-1" >Select Product</option> 
      <?php 
       config::selectIntProduct($cao); 
      ?> 
     </select> 
     <button class="btn btn-success " value="Submit" onclick="" style="margin-left: auto; display:block;" > Submit </button> 
     <!-------------INFO WILL BE DISPLAYED HERE-------------> 
    </div> 

我已經開始在配置類編寫功能,並希望保持這種方法。

這是我的配置類編寫的函數:

功能1

public static function selectInterface(CGenDb $cao) { 

    $sel_interface_options = new CGenRS("select type_desc, type_id from lu_type where type_status = 't' and type_group = 'cloud' and type_sub_group = 'db'", $cao); 
    $sel_interface_options->first(); 
    if ($sel_interface_options->rowcount()) { 
     while (!$sel_interface_options->eof()) { 
      echo "<option value='" . $sel_interface_options->valueof('type_id') . "'>" . $sel_interface_options->valueof('type_desc') . "</option>"; 
      $sel_interface_options->next(); 
     } 
    } 
    $interface_bool = True; 
    return $interface_bool; 
} 

和類selectIntProducts會是這個樣子:

功能2

public static function selectIntProduct(CGendb $cao,$selected_interface){ 

    $selected_interface=$cao_interface= "The interface ID" 

    $sel_product_options = new CGenRS("select prod_name, prod_id from lu_products where prod_active = 't'", $cao_interface); 
    $sel_product_options->first(); 

      if ($sel_product_options->rowcount()) { 
       while (!$sel_product_options->eof()) { 
        echo "<option value='" . $sel_product_options->valueof('prod_id') . "'>" . $sel_product_options->valueof('prod_name') . "</option>"; 
        $sel_product_options->next(); 
       } 
      } 
} 

這是我需要幫助的:

  1. 我想要顯示的產品選擇器只有一個接口/選擇。(我的想法是從功能1返回$interface_bool,測試,如果這是真的,如果是,顯示下一個部分。 )

  2. 在功能選擇的值1應該然後在功能2

$selected_interface我怎樣才能做到這一點?

回答

0

你只能用php來實現它,當你重新加載頁面併發送選定的接口回到php。

更好和更方便的是使用JavaScript來填充選擇,爲此我建議使用knockout.js。它有很好的文檔可以遵循。

對於PHP,我建議這樣的:

<div class="roundiv" > 
    <h4>*Interface: </h4> 
    <select class="form-control " style='width:250px;' onchange="document.location.href='https://url-to-same-page&interface=' + this.options[this.selectedIndex].value" > 
     <option value="-1" >Select Interface </option> 
     <?php 
      config::selectInterface($cao, $_GET['interface']); 
     ?> 

    </select> 

<?php if (!empty($_GET['interface'])): ?> 
    <h4> 
     *Product: 
    </h4> 
    <select class="form-control" style="width:250px;"> 
     <option value="-1" >Select Product</option> 
     <?php 
      config::selectIntProduct($cao, $_GET['interface']); 
     ?> 
    </select> 
    <button class="btn btn-success " value="Submit" onclick="" style="margin-left: auto; display:block;" > Submit </button> 
    <!-------------INFO WILL BE DISPLAYED HERE-------------> 

<?php endif; ?> 
</div> 

並更新selectInterface包括選擇的接口:

public static function selectInterface(CGenDb $cao, $selected_interface) { 
    // ... code 
    while (!$sel_interface_options->eof()) { 
     echo "<option value='" . $sel_interface_options->valueof('type_id') . "' " 
      . ($selected_interface == $sel_interface_options->valueof('type_id') ? 'selected="selected"' : '') 
      . ">" . $sel_interface_options->valueof('type_desc') . "</option>"; 
     $sel_interface_options->next(); 
    } 
    // .. code continues 
}