Не понимаю, как записать массив в БД. Нужно выбрать 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 '<h2>Данные добавлены!</h2>';
}
else
{
echo '<h2>Произошла ошибка. Данные не записаны.</h2>';
echo $query;
}
}
?>
<!-- Триггер/Открыть модальный -->
<button id="myBtn">Открыть</button>
<form action="" method="post">
<!-- Модальный -->
<div id="myModal" class="modal">
<!-- Модальное содержание -->
<div class="modal-content">
<span class="close">&times;</span>
<p>Создание цитаты</p>
<label for="colFormLabel" class="col-sm-2 col-form-label">Жанр:</label>
<div class="col-sm-7">
<input class="form-control" type="text" name="author"/>
</div>
<label for="colFormLabel" class="col-sm-2 col-form-label">Цитата:</label>
<div class="col-sm-7">
<textarea name="discription" class="form-control" id="shortdescription" rows="3"></textarea>
</div>
<form action="" method="post">
<label for="colFormLabel" class="col-sm-2 col-form-label">Теги:</label>
<div class="col-sm-7">
<?php
$sql = mysqli_query($connect, 'SELECT `id`, `Name` FROM `tags`');
while ($result = mysqli_fetch_array($sql))
{
//echo "\t\t<option value=\"{$result['id']}\">{$result['Name']}</option>\n";
echo "<input type='checkbox' name='tags_id[]' id='tags_id' value=\"{$result['id']}\">{$result['Name']} , ";
}
?>
</div>
</form>
<div><input type="submit" value="Сохранить" name="ok" class = "l"></div>
</div>
</div>
</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" } } и чего я делаю вывод, что данные выбранные он получает. Так что остается только преобразовать и записать в БД.
Если кто знает, как это сделать - была бы очень признательна!
$tags_id = $_POST['tags_id'];– u_mulder Oct 01 '22 at 12:09И тогда при переходе на страницу меня встречают такие ошибки: 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