2012-06-15 3 views
1

통화 형식으로 내 텍스트 상자 유형을 만들려고했습니다. 나는 그것을했지만 데이터베이스에 값을 삽입하면 값이 변경됩니다. 10000을 입력하면 10,000이 변경됩니다. (지금까지는 그렇게 좋았습니다.)하지만 그 값을 데이터베이스에 삽입하면 값은 10으로 바뀝니다. 정말 혼란 스럽습니다.자바 스크립트 텍스트 상자 돈 입력

내 스크립트는 다음과 같습니다. 나는 PHP, MySQL을 사용하고, 필드 타입은 여기 범인 아닌 자바 스크립트 생각하지 않는다 float

<?php include('header.php'); ?> 
<?php 
    if(isset($_POST['simpan'])) 
    { 
     $nama   = htmlentities(addslashes($_POST['nama'])); 
     $sim_wajib  = $_POST['sim_wajib']; 
     $sim_pokok  = $_POST['sim_pokok']; 
     $sim_sukarela = $_POST['sim_sukarela']; 
     $sim_wpinjam = $_POST['sim_wpinjam']; 
     $shu   = $_POST['shu']; 
     $total   = $sim_wpinjam + $shu; 

     if($nama != '' && $sim_wajib != '' && $sim_pokok != '' && $sim_sukarela != '' && $sim_wpinjam != '' && $shu != '') 
     { 
      $sql  = "INSERT INTO simpanan_tbl"; 
      $sql .= "(nama, sim_wajib, sim_pokok, sim_sukarela, sim_wajibpinjam, shu, jumlah)"; 
      $sql .= "VALUES('$nama','$sim_wajib','$sim_pokok','$sim_sukarela','$sim_wpinjam','$shu','$total')"; 
      $query = mysql_query($sql) or die(mysql_error()); 
      echo '<script type="text/javascript">alert("Data telah masuk!");document.location="manage_simpanan.php";</script>'; 
     } 
     else 
     { 
      echo '<script type="text/javascript">alert("Kolom tidak boleh ada yang kosong!");</script>'; 
     } 
    } 
?> 
<div id="rounded_add"> 
    <script type="text/javascript"> 
     function numberFormat(nr) 
     { 
      //remove the existing 
      var regex = /,/g; 
      nr  = nr.replace(regex,''); 

      //split it into 2 parts 
      var x = nr.split(','); 
      var p1 = x[0]; 
      var p2 = x.length > 1 ? ',' + x[1] : ''; 
      //match group of 3 numbers (0-9) and add ',' between them 
      regex = /(\d+)(\d{3})/; 
      while(regex.test(p1)) 
      { 
       p1 = p1.replace(regex, '$1' + ',' + '$2'); 
      } 
      //join the 2 parts and return the formatted number 
      return p1 + p2; 
     } 
    </script> 
    <form method="post" name="form1"> 
     <table id="add_simpan" class="add"> 
      <tr> 
       <td>No Anggota</td> 
      </tr> 
      <tr> 
       <td><input type="text" id="" name="" class="textbox"></td> 
      </tr> 
      <tr> 
       <td>Nama</td> 
      </tr> 
      <tr> 
       <td><input type="text" id="nama" name="nama" class="textbox_left"></td> 
      </tr> 
      <tr> 
       <td>Simpanan Wajib</td> 
      </tr> 
      <tr> 
       <td><input type="text" id="sim_wajib" name="sim_wajib" class="textbox"></td> 
      </tr> 
      <tr> 
       <td>Simpanan Pokok</td> 
      </tr> 
      <tr> 
       <td><input type="text" id="sim_pokok" name="sim_pokok" class="textbox"></td> 
      </tr> 
      <tr> 
       <td>Simpanan Suka Rela</td> 
      </tr> 
      <tr> 
       <td><input type="text" id="sim_sukarela" name="sim_sukarela" class="textbox"></td> 
      </tr> 
      <tr> 
       <td>Simpanan Wajib Pinjam</td> 
      </tr> 
      <tr> 
       <td><input type="text" id="sim_wpinjam" name="sim_wpinjam" class="textbox" onkeyup="this.value = numberFormat(this.value);"></td> 
      </tr> 
      <tr> 
       <td>SHU</td> 
      </tr> 
      <tr> 
       <td><input type="text" id="shu" name="shu" class="textbox" onkeyup="this.value = numberFormat(this.value);"></td> 
      </tr> 
      <tr> 
       <td><input type="submit" value="Simpan" id="simpan" name="simpan" class="button blues"></td> 
      </tr> 
     </table> 
    </form> 
</div><!-- END OF ROUNDED_ADD --> 
<?php include('footer.php'); ?> 
+1

저장하려는 통화의 데이터베이스에있는 데이터 유형은 무엇입니까? 그것이 일종의 숫자이고, 10,000을 삽입하려고하면, 그것은 당신에게 일어난 것처럼 보이는 것처럼 definitelly는 10으로 손질 될 것입니다. 그러나 더 많은 정보없이 - 어떤 데이터베이스, 어떤 필드 유형, 우리는 당신을 도울 수 없을 것입니다. 그리고 btw, js 여기 많이 도움이되지 않습니다. 데이터베이스를 쿼리하는 데 사용하는 코드를 게시하십시오. (어떤 언어?) – Nikola

+0

내 데이터베이스 mysql, 필드 형식 float thanks :) – messerchainey

답변

0

이 입력되면 텍스트 상자에 회계 스타일 서식이 적용됩니다. 각 텍스트 상자 옆에 원시 숫자 값이 숨겨진 필드가있는 것이 좋습니다. 당신은 쉽게 "nr = nr.replace (regex, '');"뒤에 js 함수에 몇 줄을 추가 할 수 있습니다. 섹션을 사용하여 제거한 값을 숨겨진 필드에 복사하십시오. 이렇게하려면 각 텍스트 상자의 이름을 지정하고 올바른 숨겨진 입력에 저장할 수 있도록 numberFormat 함수에 이름을 전달해야합니다. 그런 다음 양식이 제출되면 열린 텍스트 상자가 아닌 숨겨진 필드의 값을 저장하십시오.

또는 제출 단추를 사용하여 모든 텍스트 필드를 스윕하고 서식을 제거한 다음 해당 기능을 양식의 일부로 제출할 수 있습니다.

덧붙여서, 부동 소수점으로 10,000을 삽입하면 10으로 줄어 듭니다. 소수점으로 쉼표를 사용하지 않는다면 (프랑스어가 그렇다고 생각합니까?) 잘못된 데이터를 저장하고있는 것입니다.

+0

많이 고마워요 : D 그런 식으로 생각하는 것을 잊어 버렸습니다 ... 나는 그것을 시도 할 것입니다. – messerchainey

0

입니다. 위의 코드는 숫자에 쉼표 만 삽입하는 것입니다. 필드가 플로트 될 데이터베이스에 삽입 할 때 자동으로 값을 float 또는 integer로 변환하고 나머지 값을 제거합니다. DB 용 삽입 코드를 게시 할 수 있으면 문제도 쉽게 해결할 수 있습니다.

+0

내가 쓴 것을 알기를 바랍니다. 의견에 똑같은 내용이 포함되어 있으며 귀하의 대답은 결코 "답변"으로 인정되지 않으므로 SOCOM에 대한 의견은 – Nikola

+0

@nikola oh입니다. 미안, 그걸 보지 못 했어. – Hari

0

그냥 팁.

데이터베이스에 통화 형식을 저장하지 마십시오. 숫자 (int, float) 만 항상 저장되므로 필요한 경우 쉽게 수학 처리를 수행 할 수 있습니다.

통화 형식의 경우 표시 용도로만 사용하십시오.

관련 문제