2017-08-28 15 views
-1

私は以下のPHPスクリプトを使用して新しい一時トランザクションデータをMySQLに追加しようとしています。PHPスクリプトMySQLに同じIDを追加し続ける

if ($mod == "penjualan" AND $act == "add") { 
    //check data from table barang detail where id from the form 
    $cekBarang = mysqli_query($conn, "SELECT * FROM tbbarangdetail 
          WHERE idBarangDetail = '$_GET[id]'") or die(mysqli_error($conn)); 
    $assoc = mysqli_fetch_assoc($cekBarang); 

    if ($assoc != NULL) { 
     $disc = 0; 
     //check discount 
     if(!empty($_GET['disc']) AND is_numeric($_GET['disc'])) { 
      $disc = $_GET['disc']; 
     } 
     //get hargaPerKg and hargaPerBarang 
     $a = mysqli_query($conn, "SELECT hargaPerKg, hargaPerBarang FROM tbbarang where idBarang = '$assoc[idBarang]'"); 
     $b = mysqli_fetch_assoc($a); 
     //get jumlah Kg from detail barang 
     $jumlahKg = $assoc['jumlahKg']; 
     //set id transaksi detail automatically 
     $idTransaksiDetailtmp = noTransaksiDetail(); 
     date_default_timezone_set('Asia/Kuala_Lumpur'); 
     $tgl = date('Y-m-d'); 
     $timestmp = date('Y-m-d H:i'); 
     //check data from table transaksi detail tmp 
     $cekDetBarang = mysqli_query($conn, "SELECT * FROM tbtransaksidetail_tmp 
            WHERE idBarangDetail = '$_GET[id]' 
            AND createdBy = '$_SESSION[loginUser]'") or die(mysqli_error($conn)); 
     $sqlDB = mysqli_fetch_assoc($cekDetBarang); 

これは、それは私が(noTransaksiDetailを使用するMySQLの

if($sqlDB == TRUE) { 
      if (empty($_GET['jumlahKgYgInginDibeli'])) { 
       $jumlahKgYgDibeli = $sqlDB['jumlahKgYgDibeli']; 
       if ($jumlahKgYgDibeli > $assoc['jumlahKg']) { 
        mysqli_query($conn, "UPDATE tbtransaksidetail_tmp SET jumlahKgYgDibeli = jumlahKgYgDibeli + '$_GET[jumlahKgYgInginDibeli]' WHERE idBarangDetail = '$_GET[id]' AND createdBy = '$_SESSION[loginUser]'") or die(mysqli_error($conn)); 
       } else { 
        flash('example_message', '<p>Jumlah Kg yang Ingin Dibeli tidak Boleh Melebihi Jumlah Max Kg Barang.</p>', 'w3-red'); 
       } 
      } elseif (!empty($_GET['jumlahKgYgInginDibeli'])) { 
       $jumlahKgYgInginDibeli = $_GET['jumlahKgYgInginDibeli']; 
       $jumlahKgYgDibeli = $sqlDB['jumlahKgYgDibeli'] + $jumlahKgYgInginDibeli; 
       echo $jumlahKgYgDibeli; 
       echo $assoc['jumlahKg']; 
       if ($jumlahKgYgDibeli < $assoc['jumlahKg']) { 
        mysqli_query($conn, "UPDATE tbtransaksidetail_tmp SET jumlahKgYgDibeli = jumlahKgYgDibeli + '$_GET[jumlahKgYgInginDibeli]' WHERE idBarangDetail = '$_GET[id]' AND createdBy = '$_SESSION[loginUser]'") or die(mysqli_error($conn)); 
       } else { 
        flash('example_message', '<p>Jumlah Kg yang Ingin Dibeli tidak Boleh Melebihi Jumlah Max Kg Barang.</p>', 'w3-red'); 
       } 
      } 
     } 
     else 
     { 
      if (!empty($_GET['jumlahKgYgInginDibeli'])) { 
       if($_GET['jumlahKgYgInginDibeli'] != $assoc['KgPerBarang']) { 
        mysqli_query($conn, "INSERT INTO tbtransaksidetail_tmp (idTransaksiDetailtmp, 
                   idBarangDetail, 
                   jumlahKgYgDibeli, 
                   hargaPerKg, 
                   diskon, 
                   createdBy, 
                   dateCreated, 
                   timestmp) 
                 VALUES('$idTransaksiDetailtmp', 
                   '$_GET[id]', 
                   '$_GET[jumlahKgYgInginDibeli]', 
                   '$b[hargaPerKg]', 
                   '$disc', 
                   '$_SESSION[loginUser]', 
                   '$tgl', 
                   '$timestmp')") or die(mysqli_error($conn)); 
       } elseif ($_GET['jumlahKgYgInginDibeli'] == $assoc['KgPerBarang']) { 
        mysqli_query($conn, "INSERT INTO tbtransaksidetail_tmp (idTransaksiDetailtmp, 
                   idBarangDetail, 
                   jumlahKgYgDibeli, 
                   hargaPerBarang, 
                   diskon, 
                   createdBy, 
                   dateCreated, 
                   timestmp) 
                 VALUES('$idTransaksiDetailtmp', 
                   '$_GET[id]', 
                   '$_GET[jumlahKgYgInginDibeli]', 
                   '$b[hargaPerBarang]', 
                   '$disc', 
                   '$_SESSION[loginUser]', 
                   '$tgl', 
                   '$timestmp')") or die(mysqli_error($conn)); 
       } 

      } else { 
       if ($assoc['jumlahKg'] == $assoc['KgPerBarang']) { 
        mysqli_query($conn, "INSERT INTO tbtransaksidetail_tmp (idTransaksiDetailtmp, 
                   idBarangDetail, 
                   jumlahKgYgDibeli, 
                   hargaPerBarang, 
                   diskon, 
                   createdBy, 
                   dateCreated, 
                   timestmp) 
                 VALUES('$idTransaksiDetailtmp', 
                   '$_GET[id]', 
                   '$assoc[jumlahKg]', 
                   '$b[hargaPerBarang]', 
                   '$disc', 
                   '$_SESSION[loginUser]', 
                   '$tgl', 
                   '$timestmp')") or die(mysqli_error($conn)); 
       } elseif ($assoc['jumlahKg'] != $assoc['KgPerBarang']) { 
        mysqli_query($conn, "INSERT INTO tbtransaksidetail_tmp (idTransaksiDetailtmp, 
                   idBarangDetail, 
                   jumlahKgYgDibeli, 
                   hargaPerKg, 
                   diskon, 
                   createdBy, 
                   dateCreated, 
                   timestmp) 
                 VALUES('$idTransaksiDetailtmp', 
                   '$_GET[id]', 
                   '$assoc[jumlahKg]', 
                   '$b[hargaPerKg]', 
                   '$disc', 
                   '$_SESSION[loginUser]', 
                   '$tgl', 
                   '$timestmp')") or die(mysqli_error($conn)); 

       } 
      } 
     } 
     header("location:../../../med.php?mod=penjualan"); 

    } 
    else 
    { 
     echo"Tidak ada barang!"; 
    } 

} 

に新しいデータを挿入するコードの一部です)私はこのコードを使用機能:

function noTransaksiDetail() 
{ 
    global $conn; 
    $sql = mysqli_query($conn, "SELECT MAX(RIGHT(idTransaksiDetail,5)) AS notrans FROM tbtransaksidetail WHERE dateCreated = '".date('Y-m-d')."'"); 
    $m = mysqli_fetch_assoc($sql); 

    $no = 0; 
    if($m['notrans'] <> NULL) 
    { 
     $kd = number_format($m['notrans'],0) + 1; 
     if(strlen($kd) == 1) 
     { 
      $no = "BDTD".date('dmy')."0000".$kd; 
     } 
     elseif (strlen($kd) == 2) { 
      $no = "BDTD".date('dmy')."000".$kd; 
     } 
     elseif (strlen($kd) == 3) { 
      $no = "BDTD".date('dmy')."00".$kd; 
     } 
     elseif (strlen($kd) == 4) { 
      $no = "BDTD".date('dmy')."0".$kd; 
     } 
     else { 
      $no = "BDTD".date('dmy').$kd; 
     } 
    } 
    else 
    { 
     $no = "BDTD".date('dmy')."00001"; 
    } 

    return $no; 
} 

できる誰かしてください助けて?どうもありがとうございます

誰かお手伝いできますか?どうもありがとう

+0

かなり大きなコードブロックに貼り付けます。いくつかのコメントを編集してみるか、少し小さくして読みやすくしてください。 –

+0

大丈夫です。少し待ってください – Indra

+3

*必須のSQLインジェクションコメントを挿入してください* – cwallenpoole

答えて

0

あり、いくつかの問題がここにある、と私はSQLのベストプラクティスの上に行くには時間がありませんが、バグはそれが$timestmp = date('Y-m-d H:i');にタイプミスによって引き起こされているように私はあなたが$timestmp = date('Y-m-d');

を意味だと思い見えていますあなたの関数で

は、あなたがdate('Y-m-d');

いずれかの方法でタイムスタンプを探している、私はあなたがあなたの問題が発生している場所な疑いSELECT MAX(RIGHT(idTransaksiDetail,5)) AS notransπ…からの戻り値をチェックしたいです。

+0

大丈夫すぐに確認します。私を助けてくれてありがとう。 :) – Indra

+0

戻り値を選択するとうまくいくようです。それはちょうど私が "追加"ボタンをクリックしたとき、それは私に同じIDを送信し続けます。つまり、同じIDが既に存在するかどうかをチェックしないか、新しいIDでページが送信されないためですか? – Indra

+0

これは、 'idTransaksiDetail'が毎回同じ値に設定されていることを意味します。これは、SQLコマンドがNULLを返すことを意味します。他の原因はありません。 – cwallenpoole

関連する問題