现在,我的变量默认为当前的d / m / y,然后将其弹出到mySQL查询中,该查询显示表中的所有数据WHERE date ='$ dday'AND month ='$ dmonth'AND年= '$ d年'。
$ddate = date("d");
$dmonth = date("m");
$dyear = date("Y");
相反,我希望有一个选择框,它将根据所选的选项更改变量。因此Day选择的默认选项将是当前日期,但是如果我将其更改为第12天,我希望变量在select选项更改时更改,然后自动重新查询数据库。我假设这将使用AJAX完成。
我所说的甚至可能吗?如果查询的自动化增加了很大的复杂性,我只需更改变量并根据按下提交按钮进行更新即可。
如果我的简单级别以下的问题被提出,我保证会暂时不提问题并开始回答问题。
答案 0 :(得分:1)
是的,这是可能的。 jQuery甚至可以轻松实现。
创建您的<select>
元素并为其指定一个ID,以便在jQuery中使用。
在<select>
更改时触发的jQuery中添加事件侦听器,例如$("#date").change()
。
在change事件的事件处理程序中,获取<select>
的当前值,然后使用jQuery的AJAX $.post()
函数将该数据发送到PHP文件。
在该PHP文件中,将数据清理为prevent MySQL Injections,然后在数据库中查询新数据。
使用PHP的echo
函数发回数据。
在jQuery $.post()
回调函数(第三个参数)中,接收回显的数据并将其放入变量中。
使用jQuery用数据更新HTML。
答案 1 :(得分:0)
您建议的两种解决方案都可以使用。您可以使用AJAX将选择框中的值发送到php脚本,或者您只需提交表单并通过$_POST
或$_GET
以这种方式访问它们,具体取决于您的表单方法。
答案 2 :(得分:0)
下面是一个例子,生病让你去做查询:
<?php
//Some pseudo data kinda as your receive it from your query
$datafromSql = array(
array('id'=>1,'date'=>1,'month'=>1,'year'=>2012,'theData'=>'This is some data when the user select 1/1/2012'),
array('id'=>2,'date'=>2,'month'=>2,'year'=>2012,'theData'=>'This is some data when the user select 2/2/2012'),
array('id'=>3,'date'=>3,'month'=>3,'year'=>2012,'theData'=>'This is some data when the user select 3/3/2012'),
);
//Super simple API to access the data
if($_SERVER['REQUEST_METHOD']=='POST' && isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest'){
header('Content-Type: text/html');
//pseudo code, really you would just format your query result
$return=array();
foreach($datafromSql as $row){
//Select all from array which match select choice
if($row['date']==$_POST['day'] || $row['month']==$_POST['month'] || $row['year']==$_POST['year']){
$return[]=$row['theData'].'<br />';
}
}
//output, with a fancy horizontal rule
echo implode('<hr />',$return);
die;
}?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.2.min.js" charset="utf-8"></script>
<script type="text/javascript">
function update(){
$.post('./<?php echo basename(__FILE__)?>',
{
day: $("#day").val(),
month: $("#month").val(),
year: $("#year").val()
},
function(data) {
$('#result').replaceWith('<div id="result"><h1>The Result:</h1>'+ data +'</div>');
});
}
$(document).ready(function(){
update();
});
</script>
</head>
<body>
<form id="dateform" >
<p>Select Date:
<select size="1" name="day" id="day" onChange="update()">
<?php foreach(range(1,31) as $i){echo '<option value="'.$i.'">'.$i.'</option>';} ?>
</select>
<select size="1" name="month" id="month" onChange="update()">
<?php foreach(range(1,12) as $i){echo '<option value="'.$i.'">'.$i.'</option>';} ?>
</select>
<select size="1" name="year" id="year" onChange="update()">
<?php foreach(range(2008,2012) as $i){echo '<option value="'.$i.'">'.$i.'</option>';} ?>
</select>
</p>
</form>
<p id='result'></p>
</body>
</html>