2011-05-03 92 views
0

所有被編輯自動填充下拉數據

嗨,

我怎麼能自動從數據庫中通過下拉列表填充數據選擇?和我的下拉結果已經出現爲好,代碼如下:

<?php 
    echo '<tr> 
    <td>'.$customer_data.'</td> 
    <td><select name="customer_id" id="customer_id" onchange="getCustomer();">'; 

    foreach ($customers as $customer) { 
     if ($customer['customer_id'] == $customer_id) { 
      echo '<option value="'.$customer['customer_id'].'" selected="selected">'.$customer['name'].'</option>'; 
     } else { 
      echo '<option value="'.$customer['customer_id'].'">'.$customer['name'].'</option>'; 
     } 
    } 
    echo '</select> 
     </td> 
    </tr>'; 
?> 

具有HTML視圖代碼

<select name="customer_id" id="customer_id" onchange="getCustomer();"> 
    <option value="8">admin</option> 
    <option value="6">customer1</option> 
    <option value="7" selected="selected">FREE</option> 
</select> 

現在如果選擇下拉菜單中的一個,我想另一個例如<?php echo $firstname; ?>, <?php echo $lastname; ?>

出現在

<tr> 
<td><div id="show"></div></td> 
</tr> 

,基於客戶的ID /名稱選擇

這樣做,我嘗試使用JSON調用如下:

<script type="text/javascript"><!-- 
function getCustomer() { 
    $('#show input').remove(); 
    $.ajax({ 
     url: 'index.php?p=customer/customers&customer_id=' + $('#customer_id').attr('value'), 
     dataType: 'json', 
     success: function(data) { 
      for (i = 0; i < data.length; i++) { 
       $('#show').append('<input type="text" name="customer_id" value="' + data[i]['customer_id'] + '" /><input type="text" name="firstname" value="' + data[i]['firstname'] + '" />'); 
      } 
     } 
    }); 
} 
getCustomer(); 
//--></script> 

php的通話JSON放置在url.php處用url index.php?p = page/customer)

public function customers() { 
    $this->load->model('account/customer'); 
    if (isset($this->request->get['customer_id'])) { 
     $customer_id = $this->request->get['customer_id']; 
    } else { 
     $customer_id = 0; 
    } 

    $customer_data = array(); 
    $results = $this->account_customer->getCustomer($customer_id); 
    foreach ($results as $result) { 
     $customer_data[] = array(
      'customer_id' => $result['customer_id'], 
      'name'  => $result['name'], 
      'firstname'  => $result['firstname'], 
      'lastname'  => $result['lastname'] 
     ); 
    } 

    $this->load->library('json'); 
    $this->response->setOutput(Json::encode($customer_data)); 
} 

和DB

public function getCustomer($customer_id) { 
    $query = $this->db->query("SELECT DISTINCT * FROM " . DB_PREFIX . "customer WHERE customer_id = '" . (int)$customer_id . "'"); 
    return $query->row; 
} 

,但我得到了錯誤的返回如下

enter image description here

有有人請如何解決它更多更好?在此先感謝

回答

0

您的PHP編碼風格的東西: 對於PHP代碼塊,不要使用新的php標籤的每一行。另外,如果你想從PHP獲得一個HTML輸出,你可以使用echo-Method來執行此操作。所以,你的代碼看起來是這樣的:

<?php 
    echo '<tr> 
    <td>'.$customer.'</td> 
    <td><select name="customer_id">'; 

    foreach ($customers as $customer) { 
     if ($customer['customer_id'] == $customer_id) { 
      echo '<option value="'.$customer['customer_id'].'" selected="selected">'.$customer['name'].'</option>'; 
     } else { 
      echo '<option value="'.$customer['customer_id'].'">'.$customer['name'].'</option>'; 
     } 
    } 
    echo '</select> 
     </td> 
    </tr>'; 
?> 

薄是,每次PHP解釋器發現一個開放的PHP標籤時,它開始解釋它的代碼,當它找到一個結束標記,它停止這樣做。因此,在您的代碼中,解釋器始終啓動和停止。這不是很好的表現。

我想你想設置你的文本字段的值?這實際上不是PHP所做的。這更像是JavaScript的事情,因爲它實際上發生在瀏覽器中,而不是服務器上。

+0

感謝您的建議非常感謝,是的,我想通過選擇組合框自動填充文本字段(名字,姓氏),數據從數據加載,我知道如何加載數據,你看起來似乎它似乎需要javascript/ajax/jquery來處理它,但可以請讓我知道如何修復它,請嗎? – omc11 2011-05-04 10:13:42

+0

您的意思是如何設置文本框中的值,具體取決於您的下拉框中選擇了哪個選項? – 2011-05-04 16:00:42

+0

是的,沒錯,我完全編輯了我以前的代碼,請看看,我希望足夠描述我想要的內容,請讓我知道有什麼問題或者有更好的解決方案嗎?謝謝 – omc11 2011-05-05 08:43:58

0

取而代之的是:

success: function(data) { 
     for (i = 0; i < data.length; i++) { 
      $('#show').append('<input type="text" name="customer_id" value="' + data[i]['customer_id'] + '" /><input type="text" name="firstname" value="' + data[i]['firstname'] + '" />'); 
     } 
    } 
在你的JS AJAX調用

做到這一點:

success: function(data) { 
     $('#show').append('<input type="text" name="customer_id" value="' + data['customer_id'] + '" /><input type="text" name="firstname" value="' + data['firstname'] + '" />'); 
    } 

爲你的PHP函數只返回一個對象。如果你然後遍歷對象屬性你確實循環了屬性值的一個字符......

+0

感謝您的更正,但現在我得到未定義的字段, – omc11 2011-05-05 11:47:09