我有两个divs
。
首先div
inputs
checkbox
和select
。{/ p>
<div>Events Selection</div>
Events <input type="checkbox" id="Option-1" checked="true">
Leaves <input type="checkbox" id="Option-2" checked="true">
Meetings <input type="checkbox" id="Option-3" checked="true">
Travels <input type="checkbox" id="Option-4" checked="true">
<div>Station Selection</div>
<select id="Filters1">
<option value="0">All Stations</option>
<option value="1">Main Station</option>
<option value="2">Sub Station</option>
<option value="3">Sub Station Main Office</option>
</select>
秒div
有一个SQL语句$sql = "SELECT * FROM events";
,我希望从First div
回显所有选中和选中的选项。
所以,我的问题是如何在First div
中更改选择或复选框时动态更改SQL语句。
赞:当页面加载时,它应该是这样的:
$sql = Select * From events Where (every checkboxes are
checked and `All Stations` are selected.)
当用户想要从First div
过滤结果时,应将$sql
语句更改为用户选择并检查的内容。
赞:我想通过Events
选项查看Meetings
和Main Station
复选框,现在我希望$sql
语句应该更改为我的选择Second div
。
答案 0 :(得分:1)
首先使用参数化查询,不要动态构建它们。关于MSDN的例子和解释。
编写将接收所选选项value
的存储过程,并为您提供所需的数据。 F.e:
CREATE PROCEDURE dbo.getevents
@value int
AS
SELECT *
FROM events
WHERE somecolumn = @value
这是简化版,我想你需要if
IF @value = 0...SELECT this ... IF @value = 1
语句
在这种情况下,您可以使用:
$sql = "EXEC dbo.getevents ?";
$stmt = sqlsrv_query($conn, $sql, array($value));
然后获取结果并在您的网页上显示。
修改#1 强>
使用XAMP和SQL Server 2014
免责声明:我发布此代码仅用于演示目的。参数作为字符串传递,没有样式,也许是一些错误。
我已安装 XAMP 。已下载sqlsrv
个库,请在php.ini
。
我得到了带有数据库Test
的本地SQL Server。 SQL Server有一个名为sqldev
的实例。我的电脑名称为workshop
。因此,SERVER\INSTANCE
应该是workshop\sqldev
而不是DATABASE
。而不是Test
- CREATE TABLE dummy (
id int identity(1,1),
[Desc] nvarchar(max),
[Type] nvarchar(100)
)
INSERT INTO dummy VALUES
('Do something already','Events'),
('Congrats!','Events'),
('Meet up at six PM','Meetings'),
('To Amsterdam','Travels'),
('goodbye!','Leaves')
。这就是我写的连接。
首先我创建这样的表:
jquery-3.1.1.js
表包含一些要播放的虚拟数据。
下一步:
从https://jquery.com/download/下载 jQuery (我使用<html>
<head>
<script src="jquery-3.1.1.js"></script>
<style>
table {
width:20%
}
table, td, th {
border-collapse: collapse;
border: 1px solid gray;
}
</style>
</head>
<body>
<div>Events Selection</div>
Events <input type="checkbox" id="option" class="options" name="options[]" value="Events">
Leaves <input type="checkbox" id="option" class="options" name="options[]" value="Leaves">
Meetings <input type="checkbox" id="option" class="options" name="options[]" value="Meetings">
Travels <input type="checkbox" id="option" class="options" name="options[]" value="Travels">
<div id="response"></div>
<script>
$('input:checkbox').click(function() {
$.ajax({
url: "sql_page.php",
type: "post",
data: $('.options:checked').serialize(),
success: function(data) {
$('#response').html(data);
}
});
});
</script>
</body>
</html>
)
的index.php
<?php
header('Content-Type: text/html; charset=utf-8');
$serverName = "SERVER\INSTANCE";
$connectionInfo = array("Database"=>"DATABASE");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if(isset($_POST['options'])) {
if( $conn === false ) {
echo "Unable to connect.</br>";
die( print_r( sqlsrv_errors(), true));
}
$values = $_POST['options'];
$valuelist = "'" . implode("', '", $values) . "'";
$tsql = "SELECT * FROM dummy WHERE [Type] IN (".$valuelist.");";
$stmt = sqlsrv_query($conn, $tsql);
if( $stmt === false ) {
echo "Error in executing query.</br>";
die( print_r( sqlsrv_errors(), true));
}
echo "<table>";
while ($obj = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_NUMERIC)) {
echo "<tr>
<td>".$obj[0]."</td>
<td>".$obj[1]."</td>
<td>".$obj[2]."</td>
</tr>\n";
}
echo "</table>";
sqlsrv_free_stmt( $stmt);
sqlsrv_close( $conn );
}
?>
sql_page.php
index.php
然后我在浏览器中继续sql_page.php
:
如果您使用MySQL,则需要使用其他库和命令,但它们与我编写的类似。主要思想是连接到数据库并使用参数运行一些查询,它是一个index.php
想法。
sql_page.php
部分在单击复选框时向id=response
发送Ajax请求。然后使用http://127.0.0.1:1111
在div中显示此页面中的数据(来自SQL Server)。
修改#2 强>
使用从here下载的EasyPHP Devserver 16.1.1
我在默认文件夹中安装了 EasyPHP ,启动它,转到8888
,在端口air-hr
上启动了Apache + PHP,启动了MySQL。
我创建了一个名为events
的数据库,其中包含名为CREATE TABLE `events` (
`eventid` int(11) NOT NULL,
`eventname` varchar(100) NOT NULL,
`eventcategory` varchar(100) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
INSERT INTO `events` (`eventid`, `eventname`, `eventcategory`) VALUES
(1, 'Go now!', 'Leaves'),
(2, 'Meet some new people', 'Meetings'),
(3, 'Travel to Amsterdam', 'Travels'),
(4, 'PARTY HARD!', 'Events');
的表。表格的脚本和结构如下:
test
另外,我创建了可以连接到DB并从表中选择的用户C:\Program Files (x86)\EasyPHP-Devserver-16.1\eds-www
。
我在jquery-3.1.1.js
项目文件夹中创建了2个文件(其说明如下)并复制<?php
header('Content-Type: text/html; charset=utf-8');
if(isset($_POST['options'])) {
$values = $_POST['options'];
$valuelist = "'" . implode("', '", $values) . "'";
$query = "SELECT * FROM events WHERE eventcategory IN (".$valuelist.");";
$link = mysqli_connect("localhost", "test", "testpass", "air-hr");
if (!$link) {
echo "Error: Unable to connect to MySQL." . PHP_EOL;
echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;
echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;
exit;
}
echo "<table>";
if ($result = mysqli_query($link, $query)) {
while ($row = mysqli_fetch_row($result)) {
echo "<tr>
<td>".$row[0]."</td>
<td>".$row[1]."</td>
<td>".$row[2]."</td>
</tr>\n";
}
mysqli_free_result($result);
}
echo "</table>";
mysqli_close($link);
}
?>
。
index.php 如上所述
sql_page.php
<?php $a = 1380; ?>
<script>
<?php $b = document.write(month); ?>
</script>
<div id="firstshow">
<div id="test1">
<div class="col-xs-5 text-right">
<b><?php echo $a/$b; ?> €/month</b><!-- the result I wish to divide $a from $b -->
</div>
</div>
<div class="dropdown">
<button class="btn btn-default dropdown-toggle" type="button" data-toggle="dropdown"><b class="pull-left">36</b>per month
<i class="fa fa-chevron-down pull-right" aria-hidden="true"></i></button>
<ul class="dropdown-menu">
<li><a href="#">12</a></li>
<li><a href="#">24</a></li>
<li><a href="#">36</a></li>
</ul>
</div>
</div>
结果在这里:
希望这能帮到你!
答案 1 :(得分:0)
这里是你的代码
首先命名您的输入并选择如下:
<form action="sql_page.php" method="post">
<div>Events Selection</div>
Events <input type="checkbox" id="Option-1" name="Option-1" checked="true">
Leaves <input type="checkbox" id="Option-2" name="Option-2" checked="true">
Meetings <input type="checkbox" id="Option-3" name="Option-3" checked="true">
Travels <input type="checkbox" id="Option-4" name="Option-4" checked="true">
<div>Station Selection</div>
<select id="Filters1" name="Filters1">
<option value="0">All Stations</option>
<option value="1">Main Station</option>
<option value="2">Sub Station</option>
<option value="3">Sub Station Main Office</option>
</select>
<input type="submit" id="submit">
</form>
并在你的sql_page.php这里php代码
if (isset($_POST)) {
foreach ($_POST as $col => $value) {
$whare .= "$col = '$value' AND ";
}
$whare = rtrim($whare,'AND ');
$sql = "Select * From events Where $whare";
}