2014-09-29 82 views
2

我一直在尋找有趣的可能解決方案,沒有人清楚地告訴我。返回一個複選框的狀態,如果未選中,返回0

我所擁有的是一系列存儲用戶首選項的複選框,因此當頁面填充時,我需要知道複選框的狀態,以便顯示首選項。另外我注意到,如果未選中複選框,HTML不會返回值,如果未選中,則需要存儲0。那麼完成這件事的好方法是什麼?我只使用HTML和PHP

我已經看到了一些解決方案,並有一些問題。首先,代碼

<form action="TradingRules.php" method="post"> 
<h2><legend>Entry Rules</legend></h2> 
<p><label> <input type="checkbox" name="30minRule" value="1" <?php if(isset($_POST["30minRule"]))  {  echo 'checked="checked" '; } ?>>30 Min Rule</label></p> 
    <p><label> <input type="checkbox" name="buyOnPocketPivot" value="1">Buy on Pocket Pivot</label></p> 
    <p><label> <input type="checkbox" name="buyEODonPPday" value="1">Buy EOD on PP Day</label></p> 
    <p><label> <input type="checkbox" name="buyOn10WeekLineTest" value="1">Buy on 10 week line Test (within 3%)</label></p> 
    <p><label> <input type="checkbox" name="okBelow400k" value="1">Ok below 400k Average</label></p> 
    <p><label> <input type="checkbox" name="buyIfOthersAreBreakingOut" value="1">Buy if other are breaking out</label></p> 
    <p><label> <input type="checkbox" name="buyIfStockHasUnusualStrength" value="1">Buy if stock has unusual strength</label></p> 
    <p><label> <input type="checkbox" name="buyOnNon-breakoutVolume" value="1">Buy on non-breakout Volume</label></p> 
    <p><label> <input type="checkbox" name="buyOnGap" value="1">Buy on Gap</label></p> 
    <p><label> <input type="checkbox" name="enableGapRules" value="1">Enable Gap Rules</label></p> 
    <p><label> <input type="checkbox" name="buy<1WeekBeforeEarnings" value="1">Buy < 1 week before earning</label></p> 
    <p><label> <input type="checkbox" name="buyOn3WeeksTight" value="1">Buy on 3 weeks tight</label></p> 
    <p><label> <input type="checkbox" name="buyOnHTF" value="1">Buy on HTF</label></p> 
    <p><label> <input type="checkbox" name="buyOnPullbackToPivot" value="1">Buy on pullback to pivot </label></p> 
    <p><input type="submit" /></p> 
    </form> 

問題:

1)你在哪裏把隱藏的按鈕?我有<p>標籤,因爲我希望他們在另一個之上,所以我把它們全部放在<p>標籤中?那麼像這樣的工作?

<p><label> <input type="hidden" name="30minRule" value="0"> 
      <input type="checkbox" name="30minRule" value="1" <?php if(isset($_POST["30minRule"])) { echo 'checked="checked" '; } ?>>30 Min Rule</label></p> 
    <p><label> <input type="hidden" name="buyOnPocketPivot" value="0"> 
      <input type="checkbox" name="buyOnPocketPivot" value="1">Buy on Pocket Pivot</label></p> 

2)來自於數據庫的複選框狀態得到信息回的話題,我的形式鏈接到我的PHP腳本那將是足以讓這些價值?他們都去往和來自同一地點,還是我需要別的東西?

在此先感謝您的幫助!

+0

1)是的,它的工作原理。它們是隱藏的,所以它不關心它們在哪裏。只要他們在形式。 2)如果你知道哪些值在你的「表格」中,你也知道哪一個沒有被提交正確?爲什麼你想通過未經檢查的輸入框? – 2014-09-29 18:39:40

+0

這些用於存儲規則,因此如果用戶取消選中一個方框並且沒有任何內容發送給數據庫,那麼它將繼續執行該規則。那很糟。 – illcrx 2014-09-29 18:46:56

+0

在你的php部分,你應該擁有所有可能的值作爲鍵和數值應該是0的數組,而不是使用_POST變量的值填充同一數組。 #1您可以隱藏表單標籤之間的任何位置。在#2問題,如果你問是否可以從'TradingRules.php'獲取和更新數據庫,確定你可以。開始腳本檢查是否設置$ _POST ['30minRule']做更新數據庫,同樣的名稱=「30minRule」在隱藏的輸入和複選框可能不是你想要做的。 – BojanT 2014-09-29 18:48:07

回答

0

當你以PHP的價格收到這個值時,只需將缺少的任何東西變成0即可.函數很簡單。

$post_form = array_merge(array(
    '30minRule' => 0, 
    'buyOnPocketPivot' => 0 // etc 
), $_POST);