如果php mysql中存在逗号分隔值,请选中复选框

时间:2013-07-05 01:40:43

标签: php checkbox

首先抱歉我的英语不好:)我有一个名为members的表,并且连续有一些逗号分隔的语言值。当用户编辑他/她的个人资料时,我想要检查语言复选框,如果表中存在值。我试过这个,但只检查了最后一个复选框。

$langs = explode(", ", $p['lang']);

<input type="checkbox" name="lang[]" value="English" <? if (in_array('English', $langs)) {echo 'checked="checked"';} ?> />English

<input type="checkbox" name="lang[]" value="Spanish" <? if (in_array('Spanish', $langs)) {echo 'checked="checked"';} ?> />Spanish

3 个答案:

答案 0 :(得分:2)

尝试

$langs = array_map('trim', explode(",", $p['lang']));
<input type="checkbox" name="lang[]" value="Spanish" <?=(in_array('Spanish', $langs)?'checked="checked"':NULL)?> />Spanish

编辑说明:第一行将删除所有元素的前导和尾随空格,第二行必须为所有语言重复

true/false ? statement for true : statement for false用于check您的方框

修剪解决方案here

答案 1 :(得分:1)

试试这个

$p['lang'] = 'English,Spanish';

$langs = explode(",", $p['lang']);

function checkboxChecked($input)
{
    global $langs;

    if (in_array($input, $langs))
    {
        return 'checked';
    }
}

<input type="checkbox" name="lang[]" value="English" <?php checkboxChecked('English'); ?> />English

<input type="checkbox" name="lang[]" value="Spanish" <?php checkboxChecked('Spanish'); ?> />Spanish

**在这个函数之前可能需要一个echo:

<?php echo checkboxChecked('Spanish'); ?>

如果这不起作用,请尝试此操作(爆炸后)并将结果复制/粘贴到注释中

print_f($langs);

答案 2 :(得分:0)

你必须试试这个, 这有点长,但效果很好

Present<input type="checkbox" name="" value="" <?php $result=mysql_query("select date from student where no='$_POST[rollno]'"); while($row=mysql_fetch_array($result)){ if ($row['date']=='2015-08-10') {echo 'checked="checked"';}} ?> />