0

Не понимаю, как записать массив в БД. Нужно выбрать 3 тега максимум. Долго уже мучаюсь, ни к чему это так и не привело. Вот код:

<?php 
if(!isset($_SESSION['user'])) {
?>

<?php $data = date('Y-m-d H:i:s'); $tags_id[] = $_POST['tags_id']; $array = implode('; ', $tags_id); var_dump($tags_id);

if (isset($_POST["discription"])) { $query = "INSERT INTO quote (tags_id, author, discription, data) VALUES ('$array', '{$_POST['author']}','{$_POST['discription']}','$data')"; //$query = "INSERT INTO quote (tags_id, author, discription, data) VALUES ( '{$_POST['tags_id']}', '{$_POST['author']}', '{$_POST['discription']}', '$data')"; $sql = mysqli_query($connect, $query);

if ($sql)
{
    echo '&lt;h2&gt;Данные добавлены!&lt;/h2&gt;';
}
else
{
    echo '&lt;h2&gt;Произошла ошибка. Данные не записаны.&lt;/h2&gt;';
    echo $query;
}                

} ?>

&lt;!-- Триггер/Открыть модальный --&gt;
&lt;button id=&quot;myBtn&quot;&gt;Открыть&lt;/button&gt;

<form action="" method="post"> <!-- Модальный --> <div id="myModal" class="modal">

&lt;!-- Модальное содержание --&gt;
&lt;div class=&quot;modal-content&quot;&gt;
    &lt;span class=&quot;close&quot;&gt;&amp;times;&lt;/span&gt;
    &lt;p&gt;Создание цитаты&lt;/p&gt;
    &lt;label for=&quot;colFormLabel&quot; class=&quot;col-sm-2 col-form-label&quot;&gt;Жанр:&lt;/label&gt;
        &lt;div class=&quot;col-sm-7&quot;&gt;
        &lt;input class=&quot;form-control&quot; type=&quot;text&quot; name=&quot;author&quot;/&gt;
    &lt;/div&gt;
    &lt;label for=&quot;colFormLabel&quot; class=&quot;col-sm-2 col-form-label&quot;&gt;Цитата:&lt;/label&gt;
        &lt;div class=&quot;col-sm-7&quot;&gt;
        &lt;textarea name=&quot;discription&quot; class=&quot;form-control&quot; id=&quot;shortdescription&quot; rows=&quot;3&quot;&gt;&lt;/textarea&gt;
    &lt;/div&gt;
    &lt;form action=&quot;&quot; method=&quot;post&quot;&gt;
    &lt;label for=&quot;colFormLabel&quot; class=&quot;col-sm-2 col-form-label&quot;&gt;Теги:&lt;/label&gt;
    &lt;div class=&quot;col-sm-7&quot;&gt;              
        &lt;?php
        $sql = mysqli_query($connect, 'SELECT `id`, `Name` FROM `tags`');
        while ($result = mysqli_fetch_array($sql))
            {
            //echo &quot;\t\t&lt;option value=\&quot;{$result['id']}\&quot;&gt;{$result['Name']}&lt;/option&gt;\n&quot;;
            echo &quot;&lt;input type='checkbox' name='tags_id[]' id='tags_id' value=\&quot;{$result['id']}\&quot;&gt;{$result['Name']}  ,  &quot;;
            }
        ?&gt;
    &lt;/div&gt;
    &lt;/form&gt; 
        &lt;div&gt;&lt;input type=&quot;submit&quot; value=&quot;Сохранить&quot; name=&quot;ok&quot; class = &quot;l&quot;&gt;&lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;

</form>

Из этого всего возникает предупреждение: Notice: Array to string conversion in C:\xampp\htdocs\quotes\createquote.php on line 16

Линия 16: $array = implode('; ', $tags_id);

Если я делаю иначе - ошибка с попыткой записать массив. В общем. По итогу я пришла к тому, что выше. Но как все это исправить - понятия не имею. var_dump($tags_id); - передает это: array(1) { [0]=> array(2) { [0]=> string(1) "3" [1]=> string(1) "4" } } и чего я делаю вывод, что данные выбранные он получает. Так что остается только преобразовать и записать в БД.

Если кто знает, как это сделать - была бы очень признательна!

Neko
  • 31
  • 5
  • 1
    $tags_id = $_POST['tags_id']; – u_mulder Oct 01 '22 at 12:09
  • Так-то оно так... но тогда добавляется только 1 значение, вот в чем проблема. А надо, чтоб добавлялось несколько.

    И тогда при переходе на страницу меня встречают такие ошибки: Notice: Undefined index: tags_id in C:\xampp\htdocs\quotes\createquote.php on line 15 - $tags_id = $_POST['tags_id'];

    Warning: implode(): Invalid arguments passed in C:\xampp\htdocs\quotes\createquote.php on line 16 - $array = implode('; ', $tags_id);

    – Neko Oct 01 '22 at 12:16
  • Какое такое одно значение? – u_mulder Oct 01 '22 at 12:17
  • Ну, первое, которое выбираю. Например, я выбираю 3 и 4, добавляется только 3 – Neko Oct 01 '22 at 12:18
  • Само собой, тип колонки tags_id какой - int(11)? И как ты туда хочешь поместить несколько чисел? – u_mulder Oct 01 '22 at 12:19
  • опа. точняк. но как тогда мне следовало сделать? varchar? я все равно смогу сввязать ее с таблицей tags? картиночка: https://sun9-84.userapi.com/impg/74YdDkBY7p0mGjB8EHZhZeYufIark9MO0H5Smw/pptUDsnRzUY.jpg?size=739x283&quality=96&sign=85526662ef18c3f9c05f14855247bf38&type=album – Neko Oct 01 '22 at 12:22
  • 1
    https://ru.stackoverflow.com/questions/69743/%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80-%D1%81%D0%B2%D1%8F%D0%B7%D0%B8-%D0%BC%D0%BD%D0%BE%D0%B3%D0%B8%D0%B5-%D0%BA%D0%BE-%D0%BC%D0%BD%D0%BE%D0%B3%D0%B8%D0%BC – u_mulder Oct 01 '22 at 12:23
  • Да.. на листике то оно и так многие ко многим. я забыла про пром таблицы в таком случае. господи. я на самом деле понятия не имею какую пром таблицу делать. ладно. сейчас думать буду. спасибо большое! – Neko Oct 01 '22 at 12:27

0 Answers0