【问题标题】:checkbox error in editing using php使用php编辑复选框错误
【发布时间】:2014-11-20 22:28:38
【问题描述】:

我只是想在这里分享我关于复选框的问题,因为我知道很多人可以在这里帮助我。我有一个名为技能 [] 的复选框数组,并且我将选中的复选框存储在我的数据库中的单个列中,因为这是一个应用程序表单项目。我使用implode()来分隔数据库中选择的技能:

$skills = implode(',',$skills);

现在这是我真正的问题,因为我不知道如何在数据库中检索选中的复选框,因为每当我尝试编辑我的选中复选框时。即使值在数据库中,也不会检查复选框中的任何内容。

获取技能值的php代码:

$skills = $wpdb->get_results("SELECT skills FROM php_employee_skills WHERE id=13");
            if($skills!=null){
                foreach($skills as $value):
                    $skills=$value->skills;
endforeach;
            }else{
                echo"<div class='updated' style='height:50px; font-size:12px;'>"."<br>".$message." in table skills in database"."</div>";
            }

我不知道在我的 html 代码中放什么来检索数据:

<td><input type="checkbox" name="skills[]" Value="C# Java" class="cbox">C# Java</td>

注意:申请表中以复选框形式存在的技能超过 10 个,所以我使用 implode 将它们保存在我的数据库中。在我的申请表的情况下使用implode或explode是否正确?

【问题讨论】:

    标签: javascript php html checkbox


    【解决方案1】:

    像这样?

    $str="php,mysql,java";
    
    $skills=explode(",",$str);
    
    //print_r($str2);
    
    foreach ($skills as $chk)
    {
        echo '<input type="checkbox" value="'.$chk.'">'. $chk."\n";
    }
    

    【讨论】:

    • 所以你想先将技能保存在数组中,然后使用explode检索它们?我想要输出的是当我检查 java、php 和其他技能并且我想编辑或检查更多技能时,应该已经检查了以前的技能但是发生的事情是当我编辑技能时有 mo 检查技能。希望你明白我的意思:)
    【解决方案2】:

    为选中的复选框添加 checked 属性

    <td><input type="checkbox" name="skills[]" Value="C# Java" class="cbox" checked>C# Java</td>
    

    如果您只在复选框中工作,那没问题。但是如果你想列出谁在数据库中指定了“技能”,你应该把他们分开。

    【讨论】:

    • “分开”是什么意思?所以你的意思是内爆在这种情况下不适用?顺便说一句,感谢您的回复:)
    【解决方案3】:
    if ( $skills != null ) {
        foreach ( $skills as $skill) {
            ....
        }
    }
    

    请确保您在 WP 中阅读了有关 coding standards 的信息。它可以改进您的代码以遵循它们。

    现在,下一个问题是您需要一种方法来识别您的技能:

    <td><input type="checkbox" name="skills[]" value="C# Java" class="cbox" <?php echo (in_array('C# Java', $skills) ? 'checked' : '' )  ?> /> C# Java</td>
    

    在这一行中,您检查该技能是否在您的技能集中。如果是这样,则添加 checked 属性,否则不会发生任何事情。

    【讨论】:

    • 感谢您的回复。我试过你的评论 global $wpdb; $skills = $wpdb->get_results("从 php_employee_skills WHERE id=13 中选择技能"); if($skills !=null){ $skills = explode(',',$skills); foreach ($skills as $skill){ echo 'input type="checkbox" name="skills[]" value = "C# Java" '; echo (in_array('C# Java', $skills) ? 'checked' : '' ) ; } } 输出是:警告:explode() 期望参数 2 是字符串,并且警告:为 foreach() 提供的参数无效希望您仍然可以继续帮助我:)
    • 显然,技能已经是一个数组了。取消注释行$skills = explode(',', $skills);
    • 在 if($skills !=null) 条件之前先通过 echo $skills 检查。
    • @Antony,$skills 输出数组。字面意思是数组。
    • 是的,因为它显示 - 期望参数 2 是字符串警告。你能给我一个存储在 id 13 的技能列中的示例数据,以及你如何列出用户端的所有技能吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-17
    • 2012-01-20
    • 2017-11-20
    • 2023-03-18
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    相关资源
    最近更新 更多