2013-01-03 53 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