2013-06-18 2 views
0

예 확인란 질문 중 하나입니다. 내 질문을 짧고 이해하기 쉽게 유지하려고 노력하고 있습니다. 약 25 개의 체크 박스가있는 폼을 3 개의 그룹으로 나누었습니다. 각 그룹은 체크 된 각 상자마다 다른 지점을 제공합니다. Group1 = 5 포인트/체크 | 그룹 2 = 8 포인트/체크 | Group3 = 12 점/수표. 내가하고 싶은 것은 제출시 수표의 수를 세고 총점에 모든 것을 더하는 것입니다. 단순한? 새 상자는 언제든지 확인할 수 있습니다. 즉, 총 점수가 올라갈 수 있으며, 확인란을 선택 취소 할 수 없으므로 총 점수를 줄일 수 없습니다. 총 점수는 데이터베이스 테이블에 저장됩니다. 이것은 지금 당장 얻은 것입니다.별로 문제는 아니지만 제 문제에 새로운 시각이 필요합니다. 방정식은 내 머리 속에서 쉽게 보이지만, 나는 그것을 종이에 넣을 수는 없다.데이터베이스의 확인란 증가 값

  ....5points 
        <label for="first_name">first point</label> 
        <input type="checkbox" name="five[]" value="1" <?php if(isset($_POST['five'])) echo 'checked="checked"'; ?> /> 

        <label for="first_name">sec point</label> 
        <input type="checkbox" name="five[]" value="1" <?php if(isset($_POST['five'])) echo 'checked="checked"'; ?> /> 

        <label for="first_name">n point</label> 
        <input type="checkbox" name="five[]" value="1" <?php if(isset($_POST['five'])) echo 'checked="checked"'; ?> /> 
................8points 
        <label for="first_name">first point</label> 
        <input type="checkbox" name="eight[]" value="1" <?php if(isset($_POST['eight'])) echo 'checked="checked"'; ?> /> 

        <label for="first_name">sec point</label> 
        <input type="checkbox" name="eight[]" value="1" <?php if(isset($_POST['eight'])) echo 'checked="checked"'; ?> /> 
....12points and so on 

또한 는 isset의 =으로 점검으로 상자를 절약 임 코드를 확인.

$a =0; 
$b =0; 
$total; 
if(isset($_POST['submitted'])) 
{ 
if (isset($_POST['five'])) { 
    foreach ($_POST['five'] as $five) { 
     $a + 5; 
    } 
if (isset($_POST['eight'])) { 
    foreach ($_POST['eight'] as $eight) { 
     $b + 8; 
    } 
    $total=$total+$a+$b; 
} 

그러나 물론이 트릭을하지 않습니다

, 그것은 단지 또한 내 총은을 추가하지 않으 나에게 5,555,555 및 888888. 등 에코 결과를 제공합니다 이 총 점수의 내 추한 추가되었습니다 같은 점수를 두 번 지금하는 것 같습니다. 누군가이 뇌 맛보기를 나에게 똑바로 도울 수 있습니까?

답변

2

변경 $ a를 + 5, $ A + 8 :

$a += 5; 
$a += 8; 

또는 전체 계산도 똑똑,이 같은 수 있습니다 :

또한
if(isset($_POST['submitted'])) { 
    $fives = isset($_POST['five']) ? $_POST['five'] : array(); 
    $eights = isset($_POST['eight']) ? $_POST['eight'] : array(); 
    $twelves = isset($_POST['twelve']) ? $_POST['twelve'] : array(); 

    $total = 5 * count($fives) + 8 * count($eights) + 12 * count(twelves); 
} 

, 당신의 HTML은 propbly 모든 검사 제출되면 확인란. 당신은 아마 원하는, 당신의 foreach 루프 내부

  ....5points 
        <label for="first_name">first point</label> 
        <input type="checkbox" name="five[0]" value="1" <?php if(isset($_POST['five'][0])) echo 'checked="checked" disabled="true"'; ?> /> 

        <label for="first_name">sec point</label> 
        <input type="checkbox" name="five[1]" value="1" <?php if(isset($_POST['five'][1])) echo 'checked="checked" disabled="true"'; ?> /> 

        <label for="first_name">n point</label> 
        <input type="checkbox" name="five[2]" value="1" <?php if(isset($_POST['five'][2])) echo 'checked="checked" disabled="true"'; ?> /> 
................8points 
        <label for="first_name">first point</label> 
        <input type="checkbox" name="eight[0]" value="1" <?php if(isset($_POST['eight'][0])) echo 'checked="checked" disabled="true"'; ?> /> 

        <label for="first_name">sec point</label> 
        <input type="checkbox" name="eight[1]" value="1" <?php if(isset($_POST['eight'][1])) echo 'checked="checked" disabled="true"'; ?> /> 
....12points and so on 
+0

허 아래, 나는 모든 수를 사용하여 생각하지 않았다으로 $a + 5;$b + 8;을 대체합니다. 좋은 해결책. –

+0

대단하군요! 하지만 12 포인트 체크 박스를 선택하지 않으면 값이 정의되지 않습니까? 그리고 또 다른 질문은 페이지를 다시로드 한 후에도 확인란을 선택하고 사용할 수 없습니까? @ Ziarno – Rocksteady

+0

예. 지금 다시로드 한 후 확인하고 사용 중지해야합니다. 예를 들어 '5'확인란을 선택하지 않으면이 배열은 비어 있고 5 * count ($ _ POST [ 'five']) = 0 – Ziarno

0

당신은 단지 $ a를 + 5, $ B + 8을하고 다음 경우 문, 이름을 변경하고 포인트 substracted하지 않으려면 비활성화 속성을 추가 $ a를 + = 5, $의 B + = 8

2
당신은 당신의 PHP 코드를 변경해야합니다

를 작성, 여기 예제 :

+= 운영자가이 경우 변수, $total 소요
$total = 0; 
if(isset($_POST['submitted'])) { 
    if (isset($_POST['five'])) { 
     foreach ($_POST['five'] as $five) { 
      $total += 5; 
     } 
    } 
    if (isset($_POST['eight'])) { 
     foreach ($_POST['eight'] as $eight) { 
      $total += 8; 
     } 
    } 
} 

, 오른쪽에 오는 것이 무엇이든지간에 그것에 덧붙입니다. 그래서 $total += 8;$total = $total + 8;

0

과 같은 일이

$a += 5; 
$b += 8;