Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何从数据库中设置multiple标记的值_Php_Html_Mysql - Fatal编程技术网

Php 如何从数据库中设置multiple标记的值

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";

我正在从数据库中选择要在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>
我的问题是如何将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我已经改变了它,并添加了一些关于它的评论: