Как передать массивные данные из формы в mysql - одним Запросом? И чтобы данные каждого цикла, были добавлены в отдельную строку в таблице БД.
Пробую так:
Цикл input-ов откуда передаются данные
while($myrow=mysql_fetch_array($rsm)) {
<input type="checkbox" checked name="visited[]">
<input type="hidden" name="user_id[]" value="'.$myrow['user_id'].'">
<input type="hidden" name="day[]" value="'.$textday.'">
<input type="hidden" name="dates[]" value="'.$today.'">
}
INSERT
foreach($_POST[visited] as $visited){
$sql= mysql_query ("INSERT into dates (user_id,dates,visited) Values ($user_id,$dates,$visited)");
}
Покажу реализацию на вышем примере, а вообще советую перейти на PDO подход, и как то фильтровать данные перед тем как вставить в запрос.
К примеру ваш POST запрос выглядел бы вот так:
$_POST = [
'visited' => [
1,
1,
1
],
'user_id' => [
20,
30,
30
],
'dates' => [
'12-12-2015',
'12-12-2016',
'12-12-2017',
]
];
Чтобы его сохранить достаточно этого кода:
$query = 'INSERT INTO dates (user_id,dates,visited) VALUES ';
$values_array = [];
foreach ($_POST['visited'] as $key => $visited) {
$values_array[] = sprintf("('%s', '%s', '%s')", $_POST['user_id'][$key], $_POST['dates'][$key], $visited); //Лучше заменить '%d', '%s', '%d' но я не знаю как лежат у вас данные, так что этот вариант чтобы наверняка
}
$values_string = implode(', ', $values_array);
$query .= $values_string;
$sql = mysql_query($query);
В итоге в переменной $query
лежит вот такая строка:
string(128) "INSERT INTO dates (user_id,dates,visited) VALUES ('20', '12-12-2015', '1'), ('30', '12-12-2016', '1'), ('30', '12-12-2017', '1')"
Вам нужно сформировать SQL-запрос, который вставит сразу несколько строк в таблицу. В MySQL этот запрос обычно имеет следующий вид:
INSERT INTO table_name (a, b, c) VALUES (1, 2, 3), (2, 3, 4);
, где a, b, c - имена полей, в которые нужно вставить значения, а данные в каждой паре круглых скобок соответственно значения этих полей. Одни скобки - одна вставленная строка.
Для того, чтобы сформировать запрос для вашего случая, нужно сделать так:
$sql = 'INSERT INTO dates (user_id, dates, visited) VALUES ';
foreach($_POST[visited] as $visited) {
$sql .= '($user_id, $dates, $visited),';
}
$sql = rtrim($sql, ',');
mysql_query($sql);
Обращаю огромнейшее внимание на то, что у вас не проверяются вводимые пользователем данные, из-за чего любой пользователь сможет применить SQL-инъекцию и выполнить практически любой запрос. Но это не касается темы вашего вопроса, поэтому я это и не исправлял - советую перейти на PDO и почитать про SQL-инъекции.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Если не ошибаюсь с macOS сразу идет PHP, но новыйУ меня стоит локальный сервер MAMP и он отображает версию 7
как по условию сделать некоторые строки неактивными, точнее как пройдет дата окончания они должны стать неактивными, а щяс на данном рисунке...
Итак, есть сайт, на нем ajax-форма поиска информации с рекапчей от гугла (без галочки), ответ формы мне нужно спарсить