Проблема занесения строк в базу
Здравствуйте есть таблица в базе где я собираюсь хранить все жанры к определенному сериалу но есть проблема, я собираюсь сделать внос в базу данных сразу из сайта для этого я использую select multiple, логично что жанров для сериала больше одного и они все сохранены в int т.е values у каждого жанра это определенная цифра и в таблице жанры тоже должны сохранятся в int "Это я сделал для поиска по жанрам на сайте", ну так вот, я столкнулся с проблемой как же заносить жанры в таблицу так чтобы каждый новый жанр это новая строка в базе? просто если напрямую заносить в базу жанры то сохранятся там будет только последний выбранный жанр, подскажите пожалуйста как это можно реализовать? может использовать while "Я еще не пробовал", вот код -
$janr = FormChars($_POST['janr']);//Проверка на вредоносные символы и только
mysqli_query($CONNECTDB, "INSERT INTO `janrs` ( `jid`, `tid`) VALUES ($janr, Айди сериала тут)");
это html "select"
<select name="janr" id="janr" class="chosen-select" multiple data-placeholder="жанры"><option value="1">
Альтернативная история
</option>
<option value="2">
Альтернативная реальность
</option>
<option value="3">
Ангелы
</option>
<option value="4">
Андроиды
</option>
<option value="5">
Антивойна
</option>
<option value="6">
Антиутопия
</option>
<option value="7">
Баскетбол
</option>
<option value="8">
Безумие
</option>
<option value="9">
Бисёнэн
</option>
<option value="10">
Боевые искусства
</option>
<!--И т.д-->
</select>
Ответы (2 шт):
В переменной с ключом $_POST['janr'] скорее всего хранится массив данных. Логично сделать цикл перебора, как указали вам в комментариях.
Вы можете написать примерно такой цикл:
foreach ($_POST['janr'] as $janr) {
mysqli_query($CONNECTDB, "INSERT INTO `janrs` ( `jid`, `tid`) VALUES ($janr, Айди сериала тут)");
}
Возможно я ошибаюсь в структуре, поэтому укажите что хранится в $_POST['janr'] и результат выполнения метода FormChars($_POST['janr']) для более точного ответа.
Если Вы используете select multiple с PHP, то стоит в таком случае немного изменить атрибут "name", а именно
<select name="janr[]" id="janr" class="chosen-select" multiple data-placeholder="жанры"><option value="1">
...
Дальше, когда вы поймаете данный форму в скрипте, то получите массив выбранных значений, который можно будет уже обойти при помощи оператора foreach
$janrs = $_POST['janr'];
foreach ($janrs as $janr) {
$jId = (int)$janr; // Поскольку айдишки в селекте это цифры, то лучше преобразовать их в цифры, и скорее всего в таблице данное поле типа INT
$fid = Айди сериала;
mysqli_query($CONNECTDB, "INSERT INTO `janrs` (`jid`, `tid`) VALUES ($jId, $fid)");
}