【问题标题】:testing database results to set a checkbox as checked测试数据库结果以将复选框设置为选中
【发布时间】:2014-10-10 08:43:04
【问题描述】:

如果数据出现在我的数据库中,我想在我的复选框上输出checked 属性。

我尝试做in_array(),但由于值的原因它不起作用(请参阅数据库)

我不知道我应该如何很好地输出它们

PHP 代码:

    $general_list = "";
if($row['f_general'] == 'Bar, '){
    $general_list .= "<label class=\"bg-danger\"><input type=\"radio\" name=\"general[]\" value=\"Bar, \" checked=\"checked\"/>Bar</label>";
}else{
    $general_list .= "<label><input type=\"radio\" name=\"general[]\" value=\"Bar, \"/>Bar,</label>";
 } 
if($row['f_general'] == 'Restaurant,'){
    $general_list .= "<label><input type=\"radio\" name=\"general[]\" value=\"Restaurant, \" checked=\"checked\"/>Restaurant,</label>";
}else{
    $general_list .= "<label><input type=\"radio\" name=\"general[]\" value=\"Restaurant, \"/>Restaurant,</label>";
 } 
if($row['f_general'] == 'Coffee Shop,'){
    $general_list .= "<label><input type=\"radio\" name=\"general[]\" value=\"Coffee Shop, \" checked=\"checked\"/>Coffee Shop,</label>";
}else{
    $general_list .= "<label><input type=\"radio\" name=\"general[]\" value=\"Coffee Shop, \"/>Coffee Shop,</label>";
 }

我的数据库值是这样存储的:

Bar, Restaurant, Coffee Shop, Concierge, 

HTML 代码:

<label><input type="checkbox" name="general[]" value="Bar, "/>Bar,</label>
<label><input type="checkbox" name="general[]" value="Restaurant, "/>Restaurant,</label>
<label><input type="checkbox" name="general[]" value="Coffee Shop, "/>Coffee Shop,</label>
<label><input type="checkbox" name="general[]" value="Concierge, "/>Concierge,</label>
<label><input type="checkbox" name="general[]" value="Business Center, "/>Business Center,</label>
<label><input type="checkbox" name="general[]" value="Salon, "/>Salon,</label>

【问题讨论】:

    标签: php html mysql checkbox


    【解决方案1】:

    尚不清楚您的数据是如何从数据库中出来的,但如果您将其存储为逗号分隔的字符串:不要。有更好的方法来做到这一点——为$row['f_general'] 中的每个实体使用单独的数据库行,即

    f_general
    Bar
    Restaurant
    Coffee Shop
    (etc.)
    

    然后您可以进行查询并将字段f_general 中的所有项目放入一个数组中,而不必解析逗号分隔的字符串。

    既然你有字符串,就解析它来创建一个数组:

    $db_row = explode(", ", $row['f_general']);
    

    然后,您可以通过执行以下操作使您的代码更加紧凑和易于维护:

    # set up an array with all the checkboxes in it:
    $items = array('Bar', 'Restaurant', 'Coffee Shop', 'Concierge', 'Business Center', 'Salon');
    
    $general_list = '';
    
    # go through each item in the array
    foreach ($items as $i) {
        # see if that item is in the data from the database
        if ( in_array($i, $db_row) ) {
            $general_list .= '<label class="bg-danger"><input type="radio" name="general[]" value="'
            . $i . '" checked="checked" />' . $i . '</label>';
        }
        else {
            $general_list .= '<label><input type="radio" name="general[]" value="'
            . $i . '" />' . $i . '</label>';
        }
    }
    

    【讨论】:

    • 感谢您提供有关如何完成的想法。终于明白了
    【解决方案2】:

    不要在值中添加逗号。您可以使用 implode 来存储值,例如

    implode(",",$_POST[general]);
    

    然后爆炸展示:

    explode(",",$_POST[general]); //it will return array
    

    【讨论】:

      猜你喜欢
      • 2019-07-21
      • 2011-08-31
      • 2015-11-20
      • 2021-12-10
      • 1970-01-01
      • 1970-01-01
      • 2013-07-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多