未能INSERT复选框获取未定义的变量反馈

时间:2015-07-05 10:37:33

标签: php mysqli

我在这里有一个奇怪的 - 所以我在创建帖子时显示了我的数据库中的类别列表作为复选框。我勾选帖子属于哪些,它应该采用doc_id以及cat_id表格选中哪个框。当我打开错误报告时,我得到以下内容:

Notice: Undefined index: cat_id in /Applications/MAMP/htdocs/admin/actions/new_doc.inc.php on line 53
array(4) { ["doc_name"]=> string(2) "df" ["doc_owner"]=> string(3) "dsf" ["doc_content"]=> string(3) "dsf" ["submit"]=> string(0) "" }

这里引用这一行:

$cat_ids = $_POST['cat_id'];

整个代码块如下所示:

if (empty($errors)) { 

// MAKING THE QUERY 

$q = "INSERT INTO docs (doc_name, doc_content,  doc_owner, created_date) VALUES ('$dn', '$dc', '$do', NOW() )"; 

$r = mysqli_query($dbc, $q); 

if ($r) { 

$doc_id = mysqli_insert_id($dbc); 

$query = "INSERT INTO doc_cat_join (cat_id,doc_id) VALUES ";

$cat_ids = $_POST['cat_id']; 

$length = count($cat_ids); 
for ($i = 0; $i < count($cat_ids); $i++) { 
$query.='(' . $cat_ids[$i] . ',' . $doc_id . ')'; 

if ($i < $length - 1) 
$query.=','; 

} 

mysqli_query($dbc, $query); 
mysqli_close($dbc); 

以下是我如何展示复选框:

<?php

function build_cat_checkboxes(){

    global $dbc;

    $q = "SELECT * FROM cats";

    $r = mysqli_query ($dbc, $q); // Run the query.

    // FETCH AND PRINT ALL THE RECORDS
    while ($row = mysqli_fetch_array($r)) {
    echo '<ul><li><label><input type="checkbox" name="cat_id[]" value="' . $row['cat_id'] . '"> ' . $row["cat_name"] . '</label></li></ul>';
    }
}

?>

我无法理解为什么它没有插入到doc_cat_join表中,就像提到的那样,它应该使用doc_id和cat_id并将它们作为带有id的新行插入。

以下是该表视图的示例:

enter image description here

1 个答案:

答案 0 :(得分:3)

如果没有勾选复选框,则根本没有POST参数cat_id 由于这也意味着文档未分配到单个类别,这可能是输入验证/错误处理的一部分。

if (empty($errors)) { 
  if (!isset($_POST['cat_id'])) {
    die('no category assigned'); // or maybe a bit more sophisticated error handling
  }