2014-09-29 4 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) 어떤 값이 당신의'form'에 있는지 안다면 어느 것이 올바르게 제출되지 않았는지 또한 알 수 있습니까? 왜 정확히 선택되지 않은 입력 상자를 전달하고 싶습니까? –

+0

이들은 규칙을 저장하는 데 사용되므로 사용자가 상자를 선택 취소하고 DB에 아무 것도 보내지 않으면 규칙이 여전히 적용됩니다. 그 나쁜. – illcrx

+0

PHP 부분에서 _POST 변수의 값으로 동일한 배열을 채우는 것보다 키와 값이 모두 0이어야하는 모든 가능한 값을 갖는 배열을 가져야합니다. # 1 폼 태그 사이에 숨김을 넣을 수 있습니다. # 2 질문에 'TradingRules.php'에서 DB를 가져 와서 업데이트 할 수 있는지 물어 보는 중인지 확인하십시오. 스크립트 체크의 시작 부분에 ie $ _POST [ '30minRule']이 설정되어 있으면 숨겨진 입력과 체크 박스에 같은 이름 = "30minRule"을 가진 DB의 업데이트가 의도 한 것과 다를 수 있습니다. – BojanT

답변

0

PHP에서 값을 받으면, 0으로 빠진 값을 만들면 충분할 것입니다. array_merge 기능으로는 충분합니다.

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