【发布时间】:2016-12-18 02:32:10
【问题描述】:
你好,我首先有这个表格: agregareserva.php:
<form action="GUImostrarcalendario.php" method="post" name="a">
<select type="text" id="id_habitacion" name="id_habitacion" />
<option value"1">ID 1</option>
<option value="2">ID 2</option></select>
<input type="submit" name="a" value="Ver"/>
</form>
在 GUImostrarcalendario.php 我有:
<?php
include "controlreservas/conexion.php";
$id_habitacion=$_POST["id_habitacion"];
$sql1="SELECT llegada,salida,id_reserva FROM reservas
where id_habitacion ='$id_habitacion'";
$query = $con->query($sql1);
?>
<?php if($query->num_rows>0):?>
<?php while ($r=$query->fetch_array()):?>
<?php
$begin = new DateTime( $r["llegada"] );
$end = new DateTime( $r["salida"] );
$end = $end->modify( '+1 day' );
$interval = new DateInterval('P1D');
$daterange = new DatePeriod($begin, $interval ,$end);
$dates_ar = [];
foreach ($daterange as $date) {
$dates_ar[] = $date->format("Y-m-d");
}
$disabled_dates = '"' . implode('", "', $dates_ar) .'"';
?>
<script>
$(function() {
var disabledDays = [<?php echo $disabled_dates; ?>];
var date = new Date();
jQuery(document).ready(function() {
$( "#datepicker9").datepicker({
dateFormat: 'Y-m-d',
beforeShowDay: function(date) {
var m = date.getMonth(), d = date.getDate(), y = date.getFullYear();
for (i = 0; i < disabledDays.length; i++) {
if($.inArray(y + '-' + (m+1) + '-' + d,disabledDays) != -1) {
//return [false];
return [true, 'ui-state-active', ''];
}
}
return [true];
}
});
});
});
</script>
<?php endwhile;?>
<?php else:?>
<?php endif;?>
<input type="text" id="datepicker9" name ="datepicker9"/>
当在输入选择中选择 id_habitacion (id room) 时,此代码用于在 datepicker 中显示预订(预订)中的所有日期。
此代码有效,但仅在日期选择器中显示数据库中的第一条记录,例如 id_habitacion= 1 的表:
我是这个 ID 的所有预订日期
我的代码导致日期选择器:
只显示一个预订日期
最后我需要日期选择器在我显示的表格中显示所有日期。
谢谢。
【问题讨论】:
-
.....code javascript ..... 呃,您的代码中根本没有 javascript - 实际上,该代码看起来不完整,并且根本没有迹象表明该代码如何影响呈现的网页 -
请显示预期的 html 样本。真的不清楚你想要完成什么。在while循环中一遍又一遍地生成相同的javascript并且不生成任何关联的html也是没有意义的
-
您还在
$(function() {中运行jQuery(document).ready(function() {,这是多余的,因为$(function() {与jQuery(document).ready(function() {完全相同 - 所以文档已经准备好,不需要再次准备好 -
简而言之,损坏的代码并不能很好地替代对这个 UI 的外观和功能的正确解释
-
所以看来您只需要将禁用的日期传递给一个日期选择器,然后认为 php 只创建一个日期数组,您可以将该 final 数组 传递给datepicker 使用
var disabledDays =<?php echo json_encode($date_arr)?>,您也不需要手动implode()数组。但这超出了@JaromandaX 向您展示的循环范围
标签: javascript php jquery datepicker