首页 文章

如何从mysql数组中检索数据并在表单中选中复选框

提问于
浏览
0

我有一个从mysql数组中检索数据的问题,我想要做的是,当用户下次为现有ID打开相同的表单时,他应该看到哪个选项被选中,哪个没有,所以,如果他提交表单而不更改任何东西(在复选框上),它会再次相同 .

这是代码:

$media_array = $_POST['nesto1'];
foreach ($media_array as $one_media) {
$source .= $one_media.", ";
}
$nesto1 = substr($source, 0, -2);

<label><input type="checkbox" name="nesto1[]" value="NewData" /> NewData </label>
<label><input type="checkbox" name="nesto1[]" value="NewData2" /> NewData2 </label>
<label><input type="checkbox" name="nesto1[]" value="NewData3" /> NewData3 </label>

这是我如何检索数据:

$result = mysql_query("SELECT * FROM `article` WHERE id=".intval($_GET["id"])." ORDER BY id ASC");
$row = mysql_fetch_array($result);

我应该如何在下次打开时选中复选框选项,例如NeData和NewData3,如果我的mysql行中的值为:NewData,NewData3 .

我试过in_array,但我没有成功,这就是我尝试过的:

<label><input type="checkbox" name="nesto1[]" value="NewData"<?php echo in_array("NewData",$nesto1)?" checked="checked"":""; ?> />NewData</label>
<label><input type="checkbox" name="nesto1[]" value="NewData2"<?php echo in_array("NewData2",$nesto1)?" checked="checked"":""; ?> />NewData2</label>
<label><input type="checkbox" name="nesto1[]" value="NewData3"<?php echo in_array("NewData3",$nesto1)?" checked="checked"":""; ?> />NewData3</label>

提前致谢 .

新代码(我已更改值,数组和语法错误现在已修复):

if(isset($ _ POST [“name”])&& isset($ _ POST [“change”])&& isset($ _ POST [“nesto2”])&& is_numeric($ _ POST [“change”])){$ id = INTVAL($ _ GET [ “身份证”]);

$name = mysql_real_escape_string($_POST["name"]);
$nesto1 = mysql_real_escape_string($_POST["nesto1"]);
$nesto2 = mysql_real_escape_string($_POST["nesto2"]);
$change = mysql_real_escape_string($_POST["change"]);
$type=  mysql_real_escape_string($_POST["category"]);
$media_array = array();
foreach ($media_array as $one_media) {
$source .= $one_media.", ";
}
$nesto1 = substr($source, 0, -2);

$result = mysql_query("SELECT * FROM `article` WHERE id=".intval($_GET["id"])." ORDER BY id ASC");
$row = mysql_fetch_array($result);

形成:

<label><input type="checkbox" name="nesto1[]" value="Kutija"<?php echo in_array("Kutija",$nesto1)?" checked=\"checked\"":""; ?> />Kutija</label>
<label><input type="checkbox" name="nesto1[]" value="Punjač"<?php echo in_array("Punjač",$nesto1)?" checked=\"checked\"":""; ?> />Punjač</label>
<label><input type="checkbox" name="nesto1[]" value="Baterija"<?php echo in_array("Baterija",$nesto1)?" checked=\"checked\"":""; ?> />Baterija</label>

错误:警告:in_array()期望参数2为数组,在第142行的/home/smarthos/public_html/articles/article/edit.php中给出null

3 回答

  • 0

    语法错误:

    in_array("NewData",$nesto1)?" checked="checked"":""
                                ^--       ^--     ^^---
    

    在引用整个字符串时,不能在字符串中使用相同类型的引号 . 尝试

    in_array("NewData",$nesto1)?' checked="checked"':""
                                ^--                ^--
    

    要么

    in_array("NewData",$nesto1)?" checked=\"checked\"":""
                                          ^--      ^--
    

    代替 .

  • 0

    在foreach外观中,检查数据的数组值,如果数据存在渲染“已检查” .

    foreach ( as $key=>$value) {
        echo '<label><input type="checkbox" name="nesto1[]" value="NewData"        
    
        //if data item is checked, render option as checked
        if ($nesto1 == true) {
            //this could also be done via CSS on the option element.
            echo'checked';
        }
        echo $value. 'NewData</label>';
    }
    

    这应该让你走上正轨 .

  • 0

    在您的第一个代码块中, $nesto1 不是数组,因此您无法使用 in_array . 尝试:

    $nesto1 = array();
    foreach ($media_array as $one_media) {
        $nesto1[] = $one_media;
    }
    

    另外,正如@ marc-b指出的那样,存在语法错误 .

相关问题