我有一个表单,显示输入日期选择器和具有多个时间选择的选择,以选择客户必须在日期选择的时间。
这是我的代码:
echo '<form action="my_account.php" method="post">
Date : <input required type="text" id="datepicker" name="BIRTHDATE">';
echo'
<select id="slots" name="slots" >
<option value=""></option>';
<script>
$("#slots").on("click", function() {
if($( "#datepicker" ).val() == ''){
alert('veuillez remplir le champ date en premier');
return false;
}else{
var date_book = $( "#datepicker" ).val();
alert(date_book);
alert('champ rempli');
$.ajax({
type : 'POST',
url : 'my_account.php',
data : {
param : date_book
},
success : function(data) {
alert('ok');
}
});
}
});
</script>
$start_time="09:45";
$end_time="16:45";
for($i = strtotime($start_time); $i<= strtotime($end_time); $i = $i + $duration * 60) {
$slots[] = date("H:i:s", $i);
}
echo'post param :'. $_POST['param'];
$sql_book="select id, start, date from bookings where id_event=".$id_eve." and id_cust=".$_SESSION['id']." and date =". $_POST['param'];
echo'sql book :'.$sql_book;
$times=db_query($db_name,$sql_book);
foreach($times as $time)
{
if($time->id != NULL){
$start_book[] = $time->start;
$date_book[] = $time->date;
}
}
for($j=0; $j < count($slots); $j++){
echo' <option value='.$slots[$j].'">'.$slots[$j].'</option>';
}
echo'</select>
<input type="submit" id="form_sendbutton" name="BT_Envoyer" value="Envoyer" />
</form>';
但该变量未分配给php。 谢谢你的帮助
答案 0 :(得分:1)
您正在以JSON格式发送日期,而在PHP脚本中,您不会对其进行解码。
但是因为只有一个值...我会删除JSON格式。
$.ajax({
type : 'POST',
url : 'my_account.php',
data : "param="+date_book,
success : function(data) {
alert('ok');
}
});
的 ----------- 强>
的修改
我在这个上做了一点工作,因为我讨厌被投票
好的......我的回答并非解决所有问题
有很多要修复的!
好吧,我认为您希望使用dB查询的结果填充select
字段,具体取决于datepicker的结果日期。 如果我错了......就在这里放弃阅读这个答案!并尝试解释我的错误。
;)
首先,点击select
时触发ajax调用...这是错误的。
即使它填充了一些数据库结果,也会在用户的每次尝试时触发ajax调用以选择option
。
所以我将其更改为日期字段的onchange
然后 ......我的第一个回答没有错。只需将日期作为POST
值发送即可。没有必要JSON它
最重要的:
您必须为数据库查询创建单独的PHP文件
结果将是options
中的HTML select
。
这是您的my_account.php
:
<?php
// Your PHP code before this, if any...
?>
<form action="my_account.php" method="post">
Date : <input required type="text" id="datepicker" name="BIRTHDATE">
<select id="slots" name="slots" ></select>
<input type="submit" id="form_sendbutton" name="BT_Envoyer" value="Envoyer" />
</form>
<script>
$("#datepicker").on("change", function() {
if($( "#datepicker" ).val() == ''){
return false;
}else{
var date_book = $( "#datepicker" ).val();
console.log("champ rempli "+date_book);
$.ajax({
type : 'POST',
url : 'my_account_options.php',
data : "param="+date_book,
success : function(data) {
console.log("ajax success");
$("#slots").html(data);
}
});
}
});
// Datepicker - I added this too to trigger the datepicker.
// It may be different in your code.
$('#datepicker').fdatepicker('yy-mm-dd');
</script>
这是第二个PHP文件,我称之为my_account_options.php
:
<?php
if($_POST['param']){
$start_time="09:45";
$end_time="16:45";
$duration=1; // Added to test... Remove it.
for($i = strtotime($start_time); $i<= strtotime($end_time); $i = $i + $duration * 60) {
$slots[] = date("H:i:s", $i);
}
$id_eve="someEvent"; // Added to test... Remove it.
$_SESSION['id']="custId"; // Added to test... Remove it.
$sql_book="select id, start, date from bookings where id_event='".$id_eve."' and id_cust='".$_SESSION['id']."' and date='". $_POST['param']."'";
// Commented out to test...
/*
$times=db_query($db_name,$sql_book);
foreach($times as $time)
{
if($time->id != NULL){
$start_book[] = $time->start;
$date_book[] = $time->date;
}
}
for($j=0; $j < count($slots); $j++){
echo ' <option value="'.$slots[$j].'">'.$slots[$j].'</option>';
}
*/
// Added to test... Remove it.
echo ' <option value="sql query">'.$sql_book.'</option>';
}
?>
由于我没有您的数据库。
我“模拟”了您的$duration
,$_SESSION['id']
和$id_eve
vars ......
现在,登录选项文本的内容是......您的数据库查询是否可供您查看
我得到的结果是:select id, start, date from bookings where id_event="someEvent" and id_cust="custId" and date="2016-05-05"
注意包装值的双引号(在查询中):它丢失了。
所以...希望成为“未经投票”(!!!)并且这对你有所帮助
;)
的 ----------- 强>
的修改
最后一件事要检查......
您可能在my_account_options.php中没有$duration
和$id_eve
个变量。
只需将它们设置为my_account.php中的$ _SESSION变量,这样它就可以用于您的SQL查询...如果是这样,请不要忘记session_start();
。
或将它们作为帖子值传递,如下所示:
data : "param="+date_book+"&duration=<?php echo $duration; ?>&id_eve=<?php echo $id_eve; ?>",