2012-10-01 60 views
0

我有2个Mysql表(tbl_subjects和tbl_courses)。使用PHP预先从MySql DB中选择多个选项

tbl_subjects 
id | subject_name | 
1 | english  | 
2 | maths  | 
3 | Physics  | 

tbl_courses 
id | my_subjects | 
1 | 1,3   | 

HTML &为多选列表PHP代码

$sql_subjects = mysql_fetch_array(mysql_query("SELECT * FROM tbl_subjects WHERE id IN (1,3)")); 

<select name="subjects[]" multiple="multiple" size="7"> 
<?php 
$sql = mysql_query("SELECT * FROM tbl_subjects"); 
while($row = mysql_fetch_array($sql)) 
{ 
$id = $row['id']; 
$subject_name = $row['subject_name ']; 
?> 
<option value="<?php echo $id; ?>" <?php if($sql_subjects['id'] == $id) echo 'selected="selected"'; ?>> <?php echo $subject_name; ?></option> 
<?php } ?> 
</select> 

正如你在上面的代码中看到,应该有2预选值,但是我只拿到了第一个1的结果。你可以在图像中看到enter image description here

+0

这看起来并不像一个标准的选择框,你怎么创造的呢? – wroniasty

+0

这是jquery UI Multiselect,你可以在这里在线查看http://www.erichynds.com/examples/jquery-ui-multiselect-widget/demos/ – Arif

+0

先尝试一下没有使用multiselect插件。同时检查PHP生成的标记。 – wroniasty

回答

3
$sql_subjects=array();  
while($row = mysql_fetch_array(mysql_query("SELECT * FROM tbl_subjects WHERE id IN (1,3)"))){ 
    $sql_subjects[] = $row['id']; 
} 

和你的html部分

<option value="<?php echo $id; ?>" <?php if(in_array($id,$sql_subjects) echo 'selected="selected"'; ?>> <?php echo $subject_name; ?></option> 
+0

它的工作......非常感谢你,你很棒 – Arif

+1

:) ..有趣的编码....和是..如果你知道(1,3)是你的ID检查。 (SELECT * FROM tbl_subjects WHERE id IN(1,3))..那么你可以直接做$ sql_subjects = array(1,3);而不是运行查询和创建一个数组.... – bipen

1

这是因为mysql_fetch_array()只会生成第一行。我们需要使用循环来检索所有行。

相反,你知道ID那么你为什么从数据库使用in_array()来检查一次检索,

<select name="subjects[]" multiple="multiple" size="7"> 
<?php 
    $ids = array(1,2); 
    $sql = mysql_query("SELECT * FROM tbl_subjects"); 
    while($row = mysql_fetch_array($sql)){ 
     $id = $row['id']; 
     $subject_name = $row['subject_name']; 
    ?> 
    <option value="<?php echo $id; ?>" <?php if(in_array($id,$ids)) echo 'selected="selected"'; ?>> <?php echo $subject_name; ?></option> 
    <?php 
    } 
?> 
</select> 
+0

你是对的,我的问题解决了....非常感谢你帮助我:) – Arif

相关问题