【发布时间】:2016-04-09 17:28:55
【问题描述】:
我正在尝试显示数据库中不可用的座位
<?php
$query = "SELECT * FROM booking;";
$result = mysqli_query ($connection,$query) or die ("<div class='alert alert-danger' role='alert'>You couldn't execute booking query</div>");
//Fetch all rows for each booking
while ($row = mysqli_fetch_array ($result, MYSQLI_ASSOC)) {
extract ($row);
echo "
<script type='text/javascript'>
sc.get(['".$BOOKING_SEAT."']).status('unavailable');
</script>";
echo "\n";
}
?>
这是我稍后看到的:
<!-- Booking JavaScript -->
<script type="text/javascript" src="js/booking.js"></script>
<script type="text/javascript" src="js/seat-charts.min.js"></script>
<script type='text/javascript'>
sc.get(['5_7']).status('unavailable');
</script>
<script type='text/javascript'>
sc.get(['5_8']).status('unavailable');
</script>
<script type='text/javascript'>
sc.get(['5_9']).status('unavailable');
</script>
<script type='text/javascript'>
sc.get(['5_10']).status('unavailable');
</script>
当我检查代码时,我看到了我到底想要什么,但它不起作用,因为它显示“未捕获的 ReferenceError:sc 未定义”。
“sc”和“get”来自“js/booking.js”和“js/seat-charts.min.js”。
更新:
var price = 10; //price
$(document).ready(function() {
var $cart = $('#selected-seats'), //Sitting Area
$counter = $('#counter'), //Votes
$total = $('#total'); //Total money
var sc = $('#seat-map').seatCharts({
map: [ //Seating chart
'aaaaaaaaaa',
'aaaaaaaaaa',
'aaaaaaaaaa',
'aaaaaaaaaa',
'aaaaaaaaaa'
],
naming : {
top : false,
getLabel : function (character, row, column) {
return column;
}
},
legend : { //Definition legend
node : $('#legend'),
items : [
[ 'a', 'available', 'Option' ],
[ 'a', 'unavailable', 'Sold']
]
},
click: function () { //Click event
if (this.status() == 'available') { //optional seat
$('<option selected>R'+(this.settings.row+1)+' S'+this.settings.label+'</option>')
.attr('id', 'cart-item-'+this.settings.id)
.attr('value', (this.settings.row+1)+'_'+this.settings.label)
.data('seatId', this.settings.id)
.appendTo($cart);
$counter.text(sc.find('selected').length+1);
$counter.attr('value', sc.find('selected').length+1);
$total.text(recalculateTotal(sc)+price);
$total.attr('value', recalculateTotal(sc)+price);
return 'selected';
} else if (this.status() == 'selected') { //Checked
//Update Number
$counter.text(sc.find('selected').length-1);
$counter.attr('value', sc.find('selected').length-1);
//update totalnum
$total.text(recalculateTotal(sc)-price);
$total.attr('value', recalculateTotal(sc)-price);
//Delete reservation
$('#cart-item-'+this.settings.id).remove();
//optional
return 'available';
} else if (this.status() == 'unavailable') { //sold
return 'unavailable';
} else {
return this.style();
}
}
});
//sold seat
//sc.get(['1_2', '4_4','4_5','6_6','6_7','8_5','8_6','8_7','8_8', '10_1', '10_2']).status('unavailable');
});
//sum total money
function recalculateTotal(sc) {
var total = 0;
sc.find('selected').each(function () {
total += price;
});
return total;
}
**
问题是“sc”不是全局的,我们必须把它放在外面 函数
**
【问题讨论】:
-
当您在基于 PHP 和 Javascript 的客户端-服务器通信方面变得更有经验时的一点旁注:使用 asynchronous requests (AJAX) 而不是编写 Javascript 检索数据(最好采用 JSON 或 XML 格式)直接用PHP。混合编程语言并没有带来任何好处。好吧,也许是在进化算法领域,但肯定不是在手动创建的代码领域。
-
我还不知道 AJAX 呵呵
标签: javascript php sql