如何从数据库中设置多个<select>标签的值</select>

时间:2013-11-04 14:51:16

标签: php html mysql

我从数据库中选择要在php / html上编辑的条目。我可以从数据库中调用表的值并将其放在多个标记中。

$job_exp_tags = $row[16];//value from another table
$job_tags = explode(',',$job_exp_tags);//array to be put "selected" on the multiple select tag

$sql_2 = "SELECT _id, job_name from job_tags";

    $sel_2 = mysql_query($sql_2);

    $array = array();

    while($row_new = mysql_fetch_assoc($sel_2)){

    $array[] = $row_new;


    }
<tr>
        <td>Job Experience:<br>
            (Hold ctrl to select multiple)</td>
        <td><select name = 'job_tags[]' multiple>
            <?php

            foreach($array as $value){ ?>

            <option value ='<?php echo $value['_id']; ?>'> <?php echo $value['job_name']; ?> </option>

            <?php

            }
            ?>
            </select> </td>
    </tr>

我的问题是如何从爆炸声明

中为其添加选定的值

编辑:

我已经解决了这个问题,谢谢你们!

<option value ="<?php echo $value['_id']; ?>" <?php echo in_array($value['_id'], $job_tags) ? 'selected="true"' : null; ?>><?php echo $value['job_name']; ?></option>

2 个答案:

答案 0 :(得分:0)

只需检查它是否在您的数组中,如果是,请将其设置为选中:

foreach($array as $value){ ?>
    $selected = in_array($value, $job_tags) ? ' selected ' : '';
    /* Or [selected="selected"] if you dont use html5 yet (which you should) */

    <option value ='<?php echo $value['_id']; ?>' <?php echo $selected; ?>> <?php echo $value['job_name']; ?> </option>
    <?php
}

您的代码可以简化:

foreach($array as $value){ 
    $selected = in_array($value, $job_tags) ? ' selected="selected" ' : ''; 
    ?>
    <option value="<?=$value['_id']?>" <?=$selected?> > <?=$value['job_name']?> </option>
    <?php
}

我将引号值更改为双倍,而不是真正的规则,但这样做是一个好习惯。另一个变化是短回声。小型演示,都做同样的事情:

<php $var = 'foorbar'; ?> <!-- A bit weird, but this is demo-purpose -->

<span><?php echo $var; ?></span>
<span><?=$var?></span>

答案 1 :(得分:0)

您可以在字符串$ job_exp_tags中查找值,如果找到则设置所选属性。

foreach($array as $value){
    $selected = strpos($job_exp_tags, $value) ? 'selected' : '';
    echo '<option value="'.$value['_id'].'" '.$selected.'>'.$value['job_name'].'</option>';
}