Решение:
Простой пример с некоторыми примечаниями:
- ваша таблица SQL не имеет всех комбинаций, поэтому Tec_ID может быть неопределенным
- В примере используется Драйвер PHP для SQL Server
Таблица (скрипт T-SQL):
CREATE TABLE [dbo].[TechnoloieTable] (
Tec_ID int,
Tec1 int,
Tec2 int,
Tec3 int,
Tec4 int,
Tec5 int,
Tec6 int,
Tec7 int,
Tec8 int
)
INSERT INTO [dbo].[TechnoloieTable]
(Tec_ID, Tec1, Tec2, Tec3, Tec4, Tec5, Tec6, Tec7, Tec8)
VALUES
(1, 1, 0, 0, 0, 1, 0, 0, 0),
(2, 1, 0, 0, 0, 0, 1, 0, 0),
(3, 1, 0, 0, 0, 0, 0, 1, 1),
(4, 1, 1, 1, 0, 1, 0, 0, 0),
(5, 1, 1, 1, 0, 0, 1, 0, 2),
(6, 1, 1, 1, 0, 0, 0, 1, 2),
(7, 0, 0, 0, 1, 0, 0, 0, 1),
(8, 0, 1, 1, 0, 1, 0, 0, 0),
(9, 0, 1, 1, 0, 0, 1, 0, 0),
(10, 0, 0, 0, 0, 0, 0, 0, 2)
HTML (checkbox-table.php):
<html>
<body>
<form action="checkbox-table-submit.php" method="post">
<table style="border-collapse: collapse; width: 100%;" border="1">
<tbody>
<tr style="height: 21px;">
<td style="width: 25%; height: 21px;"><strong>Technologie</strong></td>
<td style="width: 25%; height: 21px;"></td>
<td style="width: 25%; height: 21px;"></td>
<td style="width: 25%; height: 21px;"></td>
</tr>
<tr style="height: 21px;">
<td style="width: 25%; height: 21px;">Tec1</td>
<td style="width: 25%; height: 21px;"><input name="Technoloie[Tec1]" type="checkbox" value="1"/></td>
<td style="width: 25%; height: 21px;">Tec2</td>
<td style="width: 25%; height: 21px;"><input name="Technoloie[Tec2]" type="checkbox" value="1"/></td>
</tr>
<tr style="height: 21px;">
<td style="width: 25%; height: 21px;">Tec3</td>
<td style="width: 25%; height: 21px;"><input name="Technoloie[Tec3]" type="checkbox" value="1"/></td>
<td style="width: 25%; height: 21px;">Tec4</td>
<td style="width: 25%; height: 21px;"><input name="Technoloie[Tec4]" type="checkbox" value="1"/></td>
</tr>
<tr style="height: 21px;">
<td style="width: 25%; height: 21px;">Tec5</td>
<td style="width: 25%; height: 21px;"><input name="Technoloie[Tec5]" type="checkbox" value="1"/></td>
<td style="width: 25%; height: 21px;">Tec6</td>
<td style="width: 25%; height: 21px;"><input name="Technoloie[Tec6]" type="checkbox" value="1"/></td>
</tr>
<tr style="height: 21px;">
<td style="width: 25%; height: 21px;">Tec7</td>
<td style="width: 25%; height: 21px;"><input name="Technoloie[Tec7]" type="checkbox" value="1"/></td>
<td style="width: 25%; height: 21px;">Tec8</td>
<td style="width: 25%; height: 21px;"><input name="Technoloie[Tec8]" type="checkbox" value="2"/></td>
</tr>
</tbody>
</table>
<input type="submit">
</form>
</body>
</html>
PHP (checkbox-table-submit.php):
<?php
// Selection
$selection = array();
// Form selection
if (isset($_POST['Technoloie'])) {
foreach($_POST['Technoloie'] as $key => $value) {
$selection[$key] = $value;
}
}
if (empty($selection)) {
echo 'Make a selection.';
exit;
}
// Statement generation.
$sql = "SELECT Tec_ID FROM [dbo].[TechnoloieTable] WHERE ";
foreach ($selection as $field => $value) {
$sql .= "(".$field."=".$value.")AND";
}
$sql = substr($sql, 0, strlen($sql)-3);
// Connection with SQLSRV
$server = 'server\instance,port';
$database = 'database';
$username = 'username';
$password = 'password';
$cinfo = array(
"Database" => $database,
"UID" => $username,
"PWD" => $password
);
$conn = sqlsrv_connect($server, $cinfo);
if ($conn === false) {
echo "Error (sqlsrv_connect): ".print_r(sqlsrv_errors(), true);
exit;
}
$stmt = sqlsrv_query($conn, $sql);
if ($stmt === false) {
echo "Error (sqlsrv_connect): ".print_r(sqlsrv_errors(), true);
exit;
}
$id = 0;
while($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
$id = $row['Tec_ID'];
}
sqlsrv_free_stmt($stmt);
sqlsrv_close($conn);
// Echo ID
echo 'ID: '.$id;
?>
Обновление:
Если вы используете PDO, попробуйте выполнить ваше заявление с помощью:
// Connection with PDO_SQLSRV
$server = 'server\instance,port';
$database = 'database';
$username = 'username';
$password = 'password';
try {
$conn = new PDO("sqlsrv:server=$server;Database=$database", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
die("Error connecting to SQL Server".$e->getMessage());
}
try {
$stmt = $conn->query($sql);
$id = 0;
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$id = $row['Tec_ID'];
}
} catch(PDOException $e) {
die("Error executing query".$e->getMessage());
}
$stmt = null;
$conn = null;