Поле со списком не отправляется в БД
<?php
session_start();
$connection = mysqli_connect("localhost", "root", "", "regauth") or die("Error!!!");
if(empty($_SESSION['user']))
header("location: ../../");
if($_GET['link'] === 'logout'){
unset($_SESSION['user']);
session_destroy();
header("location: ../../");
}
$len=htmlspecialchars(trim($_POST['nameselect']));
if(isset($_POST['do-len'])){
mysqli_query($connection, "INSERT INTO users (len) VALUES ('$len') ");
}
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Личный кабинет</title>
</head>
<body>
<div><?php echo "Привет, ".$_SESSION['user'][1]; ?> | <a href="index.php?link=logout">Выйти</a>
</div>
<h3>Создание заявки</h3>
<form method="post">
<p><select size="3" name="nameselect" multiple>
<option value="Тест1">Тест1</option>
<option value="Тест1">Тест2</option>
<option value="Тест3">Тест3</option>
</select></p>
<p><input type="submit" name="do-len"value="Отправить"></p>
</form>
<h3>Просмотр своих записей на курсы</h3>
<!-- <?php
$sql=mysql_query("select * from `users` where 'len' ");
/*
символ '*' указывает, что нужно выбрать все столбцы
если Вам нужен один или несколько столбцов, укажите какие
это сократит нагрузку на MySQL и время вывода информации
например, нам нужны только заголовок и текст
*/
$result=mysql_fetch_array($sql);
# выводим результат
print "$result[len]";
?>
-->
</body>
</html>
Ответы (1 шт):
Автор решения: Максим Степанов
→ Ссылка
Вместо
<select name="nameselect" multiple>
укажите, что вы ожидаете массив:
<select name="nameselect[]" multiple>
Затем получайте его и подставляйте в запрос:
// получим массив с выбранными именами
$names = $_POST['nameselect'];
// получаем строку вида: INSERT INTO users (len) VALUES ('Тест1'), ('Тест3'):
$query = "INSERT INTO users (len) VALUES ('".implode("'), ('", $names)."')";
// выполняем запрос
mysqli_query($connection, $query);
Внимание, это упрощенный пример. Использование в реальном приложении может привести к проблемам с безопасностью.