2017-08-29 81 views
1

$order_status接受只有包含接受的按鈕被禁用。並且如果$order_status調度了發送了禁用按鈕。如果$order_status取消禁用的按鈕是取消。我是新來的PHP我不會理解它。如何禁用1按鈕,但保持其他人啓用

包含文本按鈕接受被禁用 - 即使$order_status接受派出取消。爲什麼它總是被禁用?

下面

是代碼:

<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> 
+2

我們將需要看到一些代碼有幫助的變化。簽出:https://stackoverflow.com/help/how-to-ask –

+0

對不起,我忘了這就是代碼 – Blank

+0

@Blank,你需要 – Adam

回答

0

這是一個好習慣來分隔您的問題。先用你的HTML和儘可能少的PHP開始越好:

<button 
    type="submit" 
    name="submitAccept" 
    class="btn btn-primary" 
    <?php if ($submitAcceptDisabled): ?> disabled <?php endif ?>"> 
    Accept 
</button> 

這同樣適用於你的其他按鈕,只需添加一個標誌,並保持你的看法簡單。對於您的PHP邏輯,讓我們來調查您的場景:

  1. 當order_status被接受時,只有接受按鈕被禁用。

    $submitAcceptDisabled = $order_status === 'Accepted'; 
    
  2. 並且如果order_status被調度,則發送禁用按鈕。

    $submitSentDisabled = $order_status === 'Dispatched'; 
    
  3. 而且如果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; 
    } 
}); 
+0

<?php \t $ submitAcceptDisabled = $ order_status ==='Accepted'; ?> |這是我現在的代碼。傷心地說。它啓用接受按鈕。但是,當我刪除endif它回到禁用所有接受按鈕。謝謝! – Blank

+0

你的代碼和我的例子不一樣,您使用: '$ submitAcceptDisabled = $ order_status ==='接受'; ' 如果您不保存單獨的_flags_(如$ submitAcceptDisabled),這將使您的視圖更清晰,您應該只使用:'$ order_status ==='Accepted'' – meavo

0

在條件語句的唯一等號是不是「Comparison Operator」,它是一個「Assignment Operator」。

如果你寫:

$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語句將變量與值進行比較,可以使用==(鬆散比較,在「類型雜耍」之後又稱爲true)或===(嚴格比較,又名「相同」)。

對於您的任務,您可以使用此代碼段在單個php代碼塊中使用內聯條件。

代碼:(Demo

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>
  • 我改變SentSend在我的片段,以提高英語