当$order_status
被接受时,只有包含 Accept 的按钮被禁用。如果$order_status
是派遣发送了禁用按钮。如果$order_status
是取消 禁用按钮是取消的。我是新来的php,我不安静地理解它。
禁用包含文本的按钮接受,即使$order_status
的值为接受, dispatched 或取消或>。为什么总是被禁用?
以下是代码:
<button type="submit" name="submitAccept" class="btn btn-primary"
<?php if ($order_status = 'Accepted'){?> disabled <?php } ?>">Accept </button>
<button type="submit" name="submitSent" class="btn btn-primary" >Sent</button>
<button type="submit" name="submitCancel" class="btn btn-danger"
onclick="if(!confirm('Are you sure you want to cancel order?')){return false;}">Cancel</button>
这是一个很好的习惯,可以将您的担忧分开。首先从您的HTML开始,并尽可能少:
<button
type="submit"
name="submitAccept"
class="btn btn-primary"
<?php if ($submitAcceptDisabled): ?> disabled <?php endif ?>">
Accept
</button>
其他按钮也是如此,只需添加一个标志并保持视图简单即可。对于您的PHP逻辑,让我们调查您的场景:
当订单_status接受时,只有接收按钮被禁用。
$submitAcceptDisabled = $order_status === 'Accepted';
,如果派遣订单_status发送了禁用按钮。
$submitSentDisabled = $order_status === 'Dispatched';
,如果取消了order_status,则禁用按钮是取消。
$submitCancelDisabled = $order_status === 'Cancelled';
在您的一段代码中,您将值分配给$order_status
,而不是检查当前值是否等于某些内容:
if ($order_status = 'Accepted')
这将始终将Accepted
的值设置为$order_status
变量。
您可以考虑的另一个改进是分开JavaScript:
const submitCancel = document.querySelector('button[name="submitCancel"]');
submitCancel.addEventListener('click', () => {
if(!confirm('Are you sure you want to cancel order?')) {
return false;
}
});
您条件语句中的孤独符号不是"比较操作员",它是"分配运算符"。
如果您写:
$order_status='Dispatched';
if($order_status='Accepted'){ // this sets the value
echo "order_status=$order_status"; // this displays the new value
}else{
echo "order_status=$order_status"; // this doesn't get a chance to happen
}
您会看到:
order_status=Accepted
这是因为if语句的行为就像声明,而是比较。为了使您的if语句比较该变量与值,您可以使用 ==
(" type juggling"之后的宽松比较,又称为true)或 ===
(严格的比较,又称"同一")。
对于您的任务,您可以使用此片段,该片段在单个PHP代码块中使用内联条件。
代码:(演示)
echo "<button type="submit" name="submitAccept" class="btn btn-primary"",($order_status=='Accepted'?' disabled':''),">Accept<button>";
echo "n";
echo "<button type="submit" name="submitSend" class="btn btn-primary"",($order_status=='Dispatched'?' disabled':''),">Send<button>";
echo "n";
echo "<button type="submit" name="submitCancel" class="btn btn-danger"",($order_status=='Cancelled'?' disabled':'')," onclick="if(!confirm('Are you sure you want to cancel order?')){return false;}">Cancel<button>";
无烦恼的HTML输出:
<button type="submit" name="submitAccept" class="btn btn-primary" disabled>Accept<button>
<button type="submit" name="submitSend" class="btn btn-primary">Send<button>
<button type="submit" name="submitCancel" class="btn btn-danger" onclick="if(!confirm('Are you sure you want to cancel order?')){return false;}">Cancel<button>
额外的笔记:
- 您在代码中的
?>
之后有一个额外的"
:?>">Accept </button>
- 我将
Sent
更改为我的摘要中的Send
以改进英语