Сбой для вставки флажков получения неопределенной обратной связи с переменными

1

У меня странное здесь, поэтому я показываю список категорий из своей базы данных как флажки при создании сообщения. Я отмечаю, к каким из них принадлежит сообщение, и он должен взять 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 и вставлять их в новую строку с идентификатором.

Вот пример этого вида таблицы:

Изображение 174551

  • 0
    Не упустите SQL-инъекцию ! Вы должны связать свои параметры.
  • 0
    Из моего примера выше, что является лучшим методом выбора и вставки данных в и из моей таблицы базы данных?
Показать ещё 4 комментария
Теги:
mysqli

1 ответ

3
Лучший ответ

Если флажок не установлен, параметр POST cat_id вообще не будет установлен.
Поскольку это также означает, что документ не привязан к одной категории, это может быть частью проверки правильности ввода/обработки.

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню