2013-01-08 77 views
0

EDITED:如何基於下拉選項建立動態查詢?

SQL

$valuefromjs = $_REQUEST['var']; 
$result6 = "SELECT DISTINCT $valuefromjs FROM persons ORDER BY $valuefromjs ASC"; 
$result7 = mysql_query($result6); 
$num = mysql_num_rows($result7); 

$dataRanges[0] = array('dataRanges');  
     for ($i=1; $i<($num+1); $i++) 
     { 
     $dataRanges[$i] = array((int) mysql_result($result7, $i-1)); 
     } 

echo json_encode($dataRanges); 

HTML

<select id="combo2" class="combo" data-index="2"></select> 

jQuery的

$('#1combo').on('change', function() { 
var jsonVar = $.ajax({ 
url : "visits/comboquery.php?var="+$(this).val(), 
dataType: "json", 
async: false, 
success: function(response) { 
} 
}).responseText; 
for (var i=1; i<objVar.length;i++) 
    { 
    $('#combo2').html("<option value="+objVar[i]+">"+objVar[i]+"</option>"); 
    } 
}); 

問題:

我有與陣列查詢結果。現在我需要的結果是combo2選項,什麼是錯的?

+7

[**請不要在新代碼中使用'mysql_ *'函數**](http://bit.ly/phpmsql)。他們不再被維護[並被正式棄用](https://wiki.php.net/rfc/mysql_deprecation)。看到[**紅框**](http://j.mp/Te9zIL)?學習[*準備的語句*](http://j.mp/T9hLWi),並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [這篇文章](http://j.mp/QEx8IB)將幫助你決定哪個。如果你選擇PDO,[這裏是一個很好的教程](http://j.mp/PoWehJ)。 – Kermit

+0

請使用描述性標題而不是一組標籤 – KingCrunch

+0

@KingCrunch,完成。關於這個問題,可以這樣做?每次更改combo1選項時,變量都應該更改,無需重新加載頁面或提交。 – pleaseDeleteMe

回答

0

根據我的理解,從combo1中選擇將定義運行哪個查詢來構建combo2。

問題:用於構建combo2的PHP在服務器端被解析,即PHP代碼總是在頁面到達用戶瀏覽器並開始執行時完成。

如果您有一組可能生成秒組合的查詢(應該是這種情況,因爲combo1的選項數量有限),您可以創建它們全部,每個都有不同的ID,並維護他們隱藏(CSS「顯示:無」)。

<select id="firstCombo2" class="combo2"> 
    ... 
</select> 
<select id="secondCombo2" class="combo2"> 
    ... 
</select> 

現在,當用戶從COMBO1選擇,你可以決定哪些隱藏combo2的你要顯示的一個(CSS「顯示:塊」)。

$('select#combo1).on("change", function(){ 
    $('select.combo2').css('display','none'); //hide all combo2's 
    if($(this).val()=='Opt1'){ 
      $('select#firstCombo2').css('display','block'); 
    }else if($(this).val()=='Opt2'){ 
      $('select#secondCombo2').css('display','block'); 
    } 
} 
+0

嗨,我更新了代碼,現在可以看到它嗎?謝謝 – pleaseDeleteMe

0

您應該使用AJAX來解決您的問題。在combo1上的 onChange調用一個AJAX調用到您的服務器併發送combo1的選定值。 然後在你的php代碼中運行查詢,並從AJAX請求中接收到值,然後構造一個新的組合框,其中包含字符串中的選項並回顯該字符串。您可以使用該AJAX響應來填充新的組合2。

+0

如果你需要代碼示例讓我知道。 –

+0

我用一些AJAX更新我的主要問題。檢查它請 – pleaseDeleteMe

相關問題