2013-01-03 96 views
-1

我有一個在不同文件中生成的下拉菜單。它是用一個while循環生成的,我想添加一個靜態值(Select contract)。將靜態值添加到下拉菜單中

眼下的下拉菜單如下:

1234 
4321 
2323 
3232 

而且我想作這樣的:

Select contracr 
1234 
4321 
2323 
3232 

這是我在的index.php代碼:

<select id="text2" name="text2"> 

</select> 

這裏是我在process.php中的代碼(產生項目):

<?php 
$selectedKey = $_GET['selected_key']; 
$query = "SELECT * FROM `1 received` WHERE Key = '".$selectedKey."'"; 
$run = mysql_query($query); 
while($row = mysql_fetch_assoc($run)) { 
    echo "<option value='".$row['Number']."'>".$row['Number']."</option>"; 
} 
?> 

Ajax代碼:

<script> 
$("select#select2").change(function(){ 
    $.ajax({ 
     type: "GET", 
     url: "process.php", 
     data: "selected_key=" + $(this).val(), 
     success: function(result) { 
      $("select#text2").html(result); 
     } 
    }); 
}); 
</script> 
+1

順便說...你真的應該使用PDO或mysqli的替代。 – 2013-01-03 08:45:11

+0

你應該將'$ selectedKey'強制轉換爲int來關閉一個大的安全漏洞。 – pduersteler

回答

3

我覺得你這個得太多。

在添加數據庫中的所有其他值之前,只需向<select>添加一個額外選項 - 即字面值,而不是PHP生成的值。給它一個像「0」或「NotSelected」的值,然後在你的驗證程序中檢查。

哦,作爲一個不相關的問題,不這樣做:

$selectedKey = $_GET['selected_key']; 
$query = "SELECT * FROM `1 received` WHERE Key = '".$selectedKey."'"; 

你打開自己的SQL注入。如果你不知道那是什麼,請查看它。你應該使用準備/參數化的查詢。 PDO和mysqli擴展都具有這種能力,所以你應該使用其中的一個,而不是已經被棄用的mysql擴展(即「這個將從語言中刪除,所以停止使用它」)在最新版本中的PHP。


更新:

此基礎上你更新HTML直接使用AJAX請求得到了<select>元素新的內容,你需要移動<option>項目我提到的是部分的事實您在AJAX請求中調用的腳本。

具體來說,你應該直接在foreach循環之前做到這一點:

<?php 
$selectedKey = $_GET['selected_key']; 

// DO SOME VALIDATION ON $selectedKey here 
// Remember what I said about SQL injection and using mysqli/PDO 

$query = "SELECT * FROM `1 received` WHERE Key = '".$selectedKey."'"; 
$run = mysql_query($query); 
echo "<option value='NotSelected'>Select Contract</option>"; 
while($row = mysql_fetch_assoc($run)) { 
    echo "<option value='".$row['Number']."'>".$row['Number']."</option>"; 
} 
?> 
+0

嗯,我試圖自己添加一個'後面加上它。 – AgentConundrum

1
<?php 
$selectedKey = $_GET['selected_key']; 
$query = "SELECT * FROM `1 received` WHERE Key = '".$selectedKey."'"; 
$run = mysql_query($query); 

echo "<option value='0'>Select Contractor</option>"; //Simply add this 

while($row = mysql_fetch_assoc($run)) { 
    echo "<option value='".$row['Number']."'>".$row['Number']."</option>"; 
} 
?> 
+0

那麼,因爲這是在另一個文件,它不會出現在下拉菜單。 – Smiley

+0

@ user1914940 - 咦?這對我來說沒有意義。如果現在使用您提供的腳本並且我修改了腳本,它是如何填充下拉菜單的? – 2013-01-03 08:10:34

1

試試這個..

<?php 
$selectedKey = $_GET['selected_key']; 
$query = "SELECT * FROM `1 received` WHERE Key = '".$selectedKey."'"; 
$run = mysql_query($query); 
$str = "<option value='0'>Select anyone</option>"; 
while($row = mysql_fetch_assoc($run)) { 
    $str .= "<option value='".$row['Number']."'>".$row['Number']."</option>"; 
} 
echo $str; 
?> 

Likt這一點,你可以添加靜態選項

+0

這將添加選擇任何人在下拉菜單的末尾,需要它在頂部:) – Smiley

+0

它會顯示選擇任何人作爲第一個選項。 。然後它會填充您的循環中的其他選項.. –

-2
please used this code...... 
<?php 
$selectedKey = $_GET['selected_key']; 
$query = "SELECT * FROM `1 received` WHERE Key = '".$selectedKey."'"; 
$run = mysql_query($query); 

$str = "<option value='0'>Select Contractor</option>"; //Simply add this 

while($row = mysql_fetch_assoc($run)) { 
    $str .= "<option value='".$row['Number']."'>".$row['Number']."</option>"; 
} 
?> 


echo $str variable into your select box like this:- 


<select id="text2" name="text2"> 
<?php echo $str;?> 
</select> 
+2

那麼你通常會複製並粘貼其他人的答案並將它們發佈爲自己的答案? – 2013-01-03 08:14:20

+0

不,我沒有複製粘貼請正確看我已連接變量,然後將其回顯到選擇框這是我的邏輯是請正確地看到它..... –

+3

相同的評論//只需添加此與Nicarus '以前的解決方案是完全的巧合嗎? – Pankrates