Есть таблица
idv dekad_podvid
1 красный
5 зеленый
3 синий
Делаю запрос
$sql = "SELECT * FROM dekad_podvid ORDER BY idv ASC";
$query = mysql_query($sql) or die("Ошибка: " . mysql_error());
while($row = mysql_fetch_array($query)) {
$idv=$row[0];
$podvid=$row[1];
echo "<input type='checkbox' name='podvid[]' id='podvid' value='$idv' >";
echo $podvid;
Выводит корректно, однако не знаю как обработать этот массив далее.
Нужно: принять через POST выставленные галочки и выполнить запрос вида
SELECT * FROM table WHERE "полученные галочки"
Для того, чтобы решить задачу сохранения флажков, не достаточно одной таблицы dekad_podvid
. Ее нужно либо расширить столбцом values
для хранения отмеченных флажков, либо создать дополнительную таблицу dekad_podvid_values
со следующей структурой
CREATE TABLE dekad_podvid_values (
id int(11) NOT NULL AUTO_INCREMENT,
idv int(11) NOT NULL,
PRIMARY KEY (id)
);
Отдельная таблица может быть удобна, в том случае, если потребуется хранить разные состояния флажков для разных пользователей (когда могут потребоваться несколько наборов и дополнительные поля для обозначения принадлежности отдельным пользователям).
HTML-форма для флажков может выглядеть следующим образом
<?php
require_once('handler.php');
?>
<!DOCTYPE html>
<html lang="ru">
<head>
<title>Редактирование состояния флагов</title>
<meta charset='utf-8'>
</head>
<body>
<form method='POST'>
<?php
foreach($podivs as $podiv) {
$checked = in_array($podiv['idv'], $values) ? 'checked' : '';
echo "<input type='checkbox' name='podvid[]' id='podvid' ".
"value='{$podiv['idv']}' $checked>{$podiv['dekad_podvid']}<br />";
}
?>
<input type='submit' value='Добавить'><br />
</form>
</body>
</html>
Обработчик handler.php выполняет две функции, создает массивы $podivs
для формирования флажков и $values
с сохраненными флажками. Кроме того, он обрабатывает POST-данные, поступающие из формы.
В вопросе вы используете устаревшее расширение mysql. В настоящий момент оно признано устаревшим, более того, исключено из PHP 7. Поэтому далее ответ ориентируется на расширение PDO. Файл handler.php может выглядеть следующим образом
<?php
require_once('connect.php');
try {
// Обработчик формы
if(!empty($_POST)) {
// Удаляем старые данные
$query = 'DELETE FROM dekad_podvid_values';
$pdo->exec($query);
// Вставляем новые данные
if(count($_POST['podvid'])) {
$values = [];
foreach($_POST['podvid'] as $value) {
$values[] = "(NULL, ".intval($value).")";
}
$query = 'INSERT INTO dekad_podvid_values
VALUES '.implode(',', $values);
$pdo->exec($query);
}
header("Location: {$_SERVER['PHP_SELF']}");
exit();
}
// Данные для флажков формы
$query = 'SELECT * FROM dekad_podvid ORDER BY idv ASC';
$pdv = $pdo->query($query);
$podivs = $pdv->fetchAll();
// Идентификаторы отмеченных флажков
$query = 'SELECT idv FROM dekad_podvid_values';
$val = $pdo->query($query);
$values = $val->fetchAll(PDO::FETCH_NUM | PDO::FETCH_COLUMN);
}
catch (PDOException $e) {
echo "Ошибка выполнения запроса: {$e->getMessage()}";
}
Для установки соединения с базой данных используется файл connect.php, который может быть оформлен следующим образом
<?php
try {
$pdo = new PDO(
'mysql:host=localhost;dbname=test',
'root',
'',
[PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_EMULATE_PREPARES => true]);
}
catch (PDOException $e) {
echo "Невозможно установить соединение с базой данных";
}
?>
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Как обработать foreach-ем данный массив? Не могу вывести это: $Array[1]->EMAIL[0]->VALUE;
Собственно есть форма
Есть форма обратной связи, у которой есть кнопка на которую навешано событие отправки письма на почту, после нажатияПроблема в том, что после...
В sonata есть возможность выгрузить в различных вариантах данные (csv, xml, json)А есть ли простой способ их туда загрузить обратно после изменения?