2009-12-08 49 views
2

我需要一些澄清如何填充選擇(S)與數據從MySQL。基本上我想要做的是:填充不同的數據與選擇onChange在PHP

將有一個第一個選擇框中的一些數據。

<select> 
    <option>1</option> 
    <option>2</option> 
    <option>3</option> 
</select> 

當用戶選擇在所述第一選擇一個選項, 有一個第二選擇低於,這應根據在第一選擇中所做的選擇反映的值。

<select> 
    <option>1.1</option> 
    <option>1.2</option> 
    <option>1.3</option> 
</select> 

這些數據是來自MySQL的commin。我不確定是否需要發佈到同一頁面,但是如果我這樣做,如何保留在以前的選擇框中選擇的值?我需要使用JavaScript嗎?

有幫助嗎?

謝謝。

回答

4

你應該使用JavaScript,所以你不需要刷新頁面。我只是重讀你的問題,我會在第二個涉及到一個AJAX請求的解決方案,以拉動動態數據:

HTML

<select name="select1" id="select1"> 
    <option value="1">1</option> 
    <option value="2">2</option> 
    <option value="3">3</option> 
</select> 

<select name="select2" id="select2"> 
    <option value="1">1</option> 
    <option value="2">2</option> 
    <option value="3">3</option> 
</select> 

jQuery的

<script type="text/javascript"> 
$(document).ready(function() { 
    $('#select1').change(getDropdownOptions); 
}); 

function getDropdownOptions() { 
    var val = $(this).val(); 
    // fire a POST request to populate.php 
    $.post('populate.php', { value : val }, populateDropdown, 'html'); 
} 

function populateDropdown(data) { 
    if (data != 'error') { 
     $('#select2').html(data); 
    } 
} 
</script> 

populate.php

<?php 
if (!empty($_POST['value'])) { 
    // query for options based on value 
    $sql = 'SELECT * FROM table WHERE value = ' . mysql_real_escape_string($_POST['value']); 

    // iterate over your results and create HTML output here 
    .... 

    // return HTML option output 
    $html = '<option value="1">1</option>'; 
    $html .= '<option value="b">B</option'; 
    die($html); 
} 
die('error'); 
?> 
+0

我是新來的使用ajax,所以你可以請結合代碼,以便我可以看到這個電話會適合哪裏? – JPro 2009-12-08 12:11:27

+0

謝謝。我會試試這個。 – JPro 2009-12-08 12:16:38

+0

我得到的工作,直到獲得第二選擇的值,你可以請澄清如何從數據庫迭代所有的值,並將其存儲在$ html? – JPro 2009-12-08 12:40:36