2011-10-05 15 views
0

MySQL 쿼리 결과를 표시하는 PHP 페이지가 있습니다. 각 행에 체크 박스를 추가합니다. 선택한 행은 제출시 다른 테이블에 삽입됩니다.선택된 체크 박스의 값을 계산하십시오.

내 응용 프로그램은 전송 계획 플랫폼입니다. 선택한 행의 총 가중치를 실시간으로 표시하는 방법을 찾고 있는데, 페이지 맨 위에있는 상자는 선택한 행의 현재 합계를 표시합니다.

아무도 내 기존 페이지에이 기능을 추가하는 방법에 대해 안내 할 수 있습니까?

내 코드는 현재 아래와 같습니다

<?php 
    mysql_connect("localhost", "username", "password")or die("cannot connect");  
    mysql_select_db("databasename")or die("cannot select DB"); 
    $sql="SELECT `crtd dept`,`customer`,`case no`,`gross mass` from despgoods_alldetails where transporttypename= 'localpmb'"; 
    $result=mysql_query($sql); 
    $count=mysql_num_rows($result); 
?> 
<table border=1> 
    <tr> 
     <td> 
      <form name="form1" method="post"> 
       <table> 
        <tr> 
         <td>#</td> 
         <td>Dispatch Area</td>      
         <td>Customer</td> 
         <td>Case Number</td> 
         <td>Weight</td> 
        </tr> 
<?php 
    while($rows=mysql_fetch_array($result)){ 
?> 
        <tr> 
         <td><input type="checkbox" name=check[] value="<?php echo $rows['case no']; ?>"></td> 
         <td><?php echo $rows['crtd dept']; ?></td> 
         <td><?php echo $rows['customer']; ?></td> 
         <td><?php echo $rows['case no']; ?></td> 
         <td><?php echo $rows['gross mass']; ?></td> 
        </tr>         

<?php 
    } 
?> 
        <tr> 
         <td colspan=3><input name="Next" type="submit" id="Next" value="Next"></td> 
        </tr> 
        <?php 



          $check=$_POST['check']; 

         if($_REQUEST['Next']=='Next'){ 
{ 
          $sql="INSERT INTO loaddetails (dispatcharea,Customer, casenumber, weight,LOCStatus) 
          SELECT `crtd dept`,Customer,`case no`,`gross mass`,'in Load Creation' 
          FROM despgoods_alldetails WHERE `Case No` = '$val'"; 

          foreach($check as $key=>$value) 
          { 
          $sql="INSERT INTO loaddetails (dispatcharea,Customer, casenumber, weight,LOCStatus) 
          SELECT `crtd dept`,Customer,`case no`,`gross mass`,'in Load Creation' 
          FROM despgoods_alldetails WHERE `Case No` = '$value'"; 
          $final=mysql_query($sql); 
          if($final) 
          { 
          echo "<meta http-equiv=\"refresh\" content=\"0;URL=planlocalpmbstep2.php\">"; 
          }           } 
           } 
           } 
        // Check if delete button active, start this 



// if successful redirect to php.php 

mysql_close(); 
?> 
</table> 
</form> 
</td> 
</tr> 
</table> 

위의 코드의 출력은 다음과 같습니다 enter image description here

+1

구체적인 질문은 무엇입니까? 만약 당신이 실시간으로 필요하다면, JavaScript로이 작업이 끝났다고 말할 것입니다. – hakre

답변

0

다른 사람들이 말했듯이, 자바 스크립트에서는 클라이언트 측에 있기 때문에이 작업을 수행해야합니다. 이 페이지에서 jQuery 또는 Prototype과 같은 라이브러리를 사용하지 않는다고 가정합니다.이 모든 것이 수행 중이라면 그 중 하나를 사용하는 것은 과도한 부담이 될 것입니다.

<div>Total: <span id="total">0</span></div> 

당신이 정말로 그러나 알아야 할 정보의 비트가 각 확인란에 해당하는 무게 :

먼저 전체를 포함하는 HTML 요소를 추가 할 수 있습니다. 가장 간단한 방법은 checkbox 요소 자체에 저장하는 것입니다. data-weight이라는 속성을 추가하십시오. 예 :

<input type="checkbox" name="check[]" value="12" data-weight="1234" /> 

그런 다음 몇 가지 자바 스크립트를 추가

<script> 
    (function() { 
     var totalEl = document.getElementById('total'), 
      total = 0, 
      checkboxes = document.form1['check[]'], 
      handleClick = function() { 
       total += parseInt(this['data-weight'], 10) * (this.checked ? 1 : -1); 
       totalEl.innerHTML = total; 
      }, 
      i, l 
     ; 
     for (i = 0, l = checkboxes.length; i < l; ++i) { 
      checkboxes[i].onclick = handleClick; 
     } 
    }()); 
</script> 

Aaaannd 여기에 작동하는 데모입니다 당신을 위해! http://jsbin.com/ipeduf

+0

안녕하세요 @ Nickf, 의견을 주셔서 감사합니다, 여기 입력 필드에 당신이 data-weight = "1234"라고 선언합니다. 내 정보는 MySQL 배열에서오고 있으므로 한 줄에이 작업을 수행 할 수 없습니다. MySQL 쿼리의 결과에 따라 어떻게 동적으로 만들 수 있습니까? 감사합니다 – Smudger

+0

@ RyanSmith 물론 당신은 할 수 ..! ">' – nickf

0

을 사용하면 사용자가 페이지마다 새로 고침하고 싶지 않아 가정 선택 항목을 변경하면 브라우저가 아닌 자바 스크립트에서이 작업을 수행해야합니다.

0

자바 스크립트 기능을 사용할 수 있다고 생각합니다.

<INPUT TYPE="checkbox" NAME="switchBox" onclick="myfunction(this)"> 

그런 다음 myFunction이 그런 뭔가 값을 계산한다 :

<script language="javascript"> 
var total; 
myfunction(checkboxId){ 
total = total + checkboxId.value; 
} 
</script> 

이 있음을 통지하십시오 (당신이 제출 버튼을 원하지 않는 경우)를 온 클릭 모든 체크 박스에 속성을 추가 확인되지 않은 예제로 솔루션에 대한 아이디어 만 제공합니다.

+0

감사합니다 이반, 어떤 생각이 MySQL 데이터베이스 쿼리에서 동적 콘텐츠를 어떻게해야합니까? – Smudger

+0

동적로드 된 내용에 대해서도 잘 작동한다고 생각합니다. 사실 개체 자체에 함수를 전달하고 페이지에 쿼리의 값이 채워지면 값 필드에 값이 있어야합니다. 그냥 자바 스크립트 코드를 페이지에 추가하십시오. – Ivan

0

변경 사항을 제출하고 다시로드 할 필요가 없도록 javascript/jQuery를 사용합니다.

내가 뭘 할 것은 :

  1. 은 HTML5 데이터 속성을 사용하여 (... 또는 체크 박스) 테이블 행에 모든 개별 weight 값을 첨부 : 첫 번째 행에 대한 <tr data-weight="1604">을;
  2. 에 체크 박스 값이 변경되면 선택한 체크 박스가있는 모든 행을 반복하여 합계를 가져와 생성합니다. 즉 같은 다음과 같습니다.

    $ ("입력")의 변화 (함수() { var에 total_sum = 0; $ ('입력')입니다 (:) 각 (기능을 '확인'().. { total_sum + = $ (this) .parents ("tr"). 데이터 ("weight"); }); });

  3. 디스플레이 원하는 상자에 합 (서식 권리를 ...받을 수 없습니다).

+0

왜 'data-weight'를' '에 추가하겠습니까? 확인란 자체는 아니겠습니까? 또한 합계를 추적하면 모든 체크 상자를 다시 계산할 필요가 없으며 방금 변경된 값을 더하거나 뺍니다. – nickf

+0

@nickf 물론 최적화 할 수 있습니다. 어떻게 작동하는지 설명하는 것입니다. 나는 다른 것들에 대해서도 그 값을 사용할 것이라고 상상할 수있다. 그래서 나는 그것을 장래의 용도로 행에 붙일 것이다. 그러나이 경우에는 진짜 이유가 없다. – jeroen

+0

안녕하세요, 데이터가 정적 입력 필드가 아닌 MySQL 데이터베이스에서 오는 경우 어떻게해야합니까? 감사. – Smudger

관련 문제