[英]Pre-Selected Multiselect from MySql DB Using PHP
我有2個Mysql表(tbl_subjects和tbl_courses)。
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個預先選擇的值,但是我只得到第一個的結果。您也可以在圖像中看到
$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>
這是因為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>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.