Php 如何从数据库中设置multiple标记的值
我正在从数据库中选择要在php/html上编辑的条目。我可以从数据库中调用表的值,并将其放入多个标记中Php 如何从数据库中设置multiple标记的值,php,html,mysql,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";
$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>
我的问题是如何将explode语句中的选定值放入其中
编辑:
我已经解决了这个问题,谢谢大家
<option value ="<?php echo $value['_id']; ?>" <?php echo in_array($value['_id'], $job_tags) ? 'selected="true"' : null; ?>><?php echo $value['job_name']; ?></option>
只需检查其是否在阵列中,如果是,请将其设置为选中:
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
}
我将值周围的引号改为double,这并不是一个规则,但这样做是一个很好的做法。另一个变化是短回声。小型演示,两者的作用相同:
<php $var = 'foorbar'; ?> <!-- A bit weird, but this is demo-purpose -->
<span><?php echo $var; ?></span>
<span><?=$var?></span>
您可以在字符串$job\u exp\u标记中查找该值,如果找到,则设置所选属性
foreach($array as $value){
$selected = strpos($job_exp_tags, $value) ? 'selected' : '';
echo '<option value="'.$value['_id'].'" '.$selected.'>'.$value['job_name'].'</option>';
}
假设你说你从数据库中得到了这些工作标签,然后将其分解,那么你肯定使用了一个糟糕的数据库设计。这些值应该在它们自己的子表中,例如,您需要规范化您的表。然后你的问题会自动回答,因为你可以做一个简单的连接查询。重复你自己的问题-这是一个多选否,对于如何做没有多大改变。@CBroe,这不仅仅是标题的错误类型。很抱歉。必须编辑它。或者只使用selected而不是selected=selected我想我们终于度过了XHTML时代。一些旧习惯:P我已经改变了它,并添加了一些关于它的评论: