2011-11-16 25 views
1

这是我的PHP脚本,它从数据库中提取记录,然后创建动态复选框,并且该复选框是用户需要勾选以供选择的水果列表。如果从另一个阵列中匹配,自动检查动态复选框

我想实现的目的是使复选框自动检查,如果它匹配来自另一个数组的某些信息。

比方说数组内容是香蕉,芒果,苹果。我想让这些复选框自动检查。我怎样才能做到这一点?谢谢。

<?php 
    fruits = $stmt->prepare("SELECT * FROM fruits ORDER by fruit_id ASC"); 
    $fruits->execute(); 

    $cols = 6; 

    do { 
    echo "<tr>"; 
    for ($i = 1; $i <= $cols; $i++) { 

    $row = $fruits->fetch(PDO::FETCH_ASSOC); 

    if ($row) { 
    $fruit_id = $row['fruit_id']; 
    $fruit_name = $row['fruit_name']; 
    ?> 

    <td> 
    <table> 
    <tr valign="top"> 
    <td> 
    <?php echo '<input type="checkbox" id="fruit_id[]" name="fruit_id[]" value="' . $fruit_id . '"/>' . $fruit_name . "\n"; ?> 
    </td> 
    <td width="30">&nbsp;</td> 
    </tr> 
    </table> 
    </td> 
    <?php 
    } else { 
    echo "<td>&nbsp;</td>"; 
    } 
    } 
    } while ($row); 
    ?> 

回答

1

比方说,你autochecked水果阵列为$ autocheck_array。然后你可以使用:

<?php echo '<input type="checkbox" id="fruit_id[]" name="fruit_id[]" value="' 
. $fruit_id . '"' . (in_array($fruit_name, $autocheck_array) ? ' checked="checked"' : '') 
. '"/>' . $fruit_name . "\n"; ?> 

你可以很容易地改变三元运营商的if语句,如果你喜欢这样的说法,但我更喜欢单衬方法。

+0

试过这个,但它没有填充检查。 $ autocheck_array = array(“apple”,“banana”); ($水果名称,$ autocheck_array)?'checked =“=”水果ID“=”水果ID“=”fruit_id []“value =”'。勾选“':'')。'”/>'。 $ fruit_name。 “\ n” 个; ?> –

+0

错过了'value =''后的报价'$ fruit_id。' - 编辑过,尝试使用当前的代码调试这个最简单的方法是查看它给出的HTML输出,只需查看结果页面的源代码。 –

+0

顺便说一下,为什么你的'id'设置为'fruit_id []'?你只需要这个名字。一旦查询被发送,这个id将不可用于php,并且应该在你的HTML。 –

2

你可以不喜欢它:

 
if(in_array("apple", $yourArray)) { echo "checked"; } 

希望你得到它

+0

这应该是正确的答案, – Msquared86

相关问题