2016-03-24 21 views
-1

私は多くの$ _POST変数を持っていて、それらをデータベースに挿入したいと思います。

です。しかし、ユーザーがフォームに記入しない場合は、デフォルト値 "NA"を設定する必要があります。

この私のコード:

$tgl_real = $_POST['TGL_REAL']; 
$rid  = $_POST['RID']; 
$mesin  = $_POST['MESIN']; 
$shift  = $_POST['SHIFT']; 
$produk  = $_POST['PRODUK']; 
$tanggal = $_POST['HT']; 
$no_aduk = $_POST['NO_ADUK']; 
$sho  = $_POST['SHO']; 
$tb1  = $_POST['TB1']; 
$gr1  = $_POST['GR1']; 
$tb2  = $_POST['TB2']; 
$gr2  = $_POST['GR2']; 
$tb3  = $_POST['TB3']; 
$gr3  = $_POST['GR3']; 
$tb4  = $_POST['TB4']; 
$gr4  = $_POST['GR4']; 
$tb5  = $_POST['TB5']; 
$gr5  = $_POST['GR5']; 
$spr_besar = $_POST['SPR_BESAR']; 
$spr_kecil = $_POST['SPR_KECIL']; 
$br1  = $_POST['BR1']; 
$br2  = $_POST['BR2']; 
$br3  = $_POST['BR3']; 
$tebal1  = $_POST['TEBAL1']; 
$tebal2  = $_POST['TEBAL2']; 
$tebal3  = $_POST['TEBAL3']; 
$panjang = $_POST['PANJANG']; 
$lebar  = $_POST['LEBAR']; 
$diameter = $_POST['DIAMETER']; 
$kc   = $_POST['KC']; 
$kkc  = $_POST['KKC']; 
$kerataaan_poles = $_POST['KERATAAN_POLES']; 

    $sql = "INSERT INTO adonan SET `RID` = '$rid', 
           `MESIN` = '$mesin', 
            `SHIFT` = '$shift', 
            `HARI_TGL` = '$tanggal', 
            `TGL_REAL` = '$tgl_real', 
            `PRODUK` = '$produk', 
             `NO_ADUK` = '$no_aduk', 
             `KERATAAN_SHO` = '$sho', 
             `TEBAL_SHEET_GR1` = '$tb1', 
             `KECAPATAN_KAIN_GR1` = '$gr1', 
              `TEBAL_SHEET_GR2` = '$tb2', 
              `KECAPATAN_KAIN_GR2` = '$gr2', 
              `TEBAL_SHEET_GR3` = '$tb3', 
              `KECAPATAN_KAIN_GR3` = '$gr3', 
               `TEBAL_SHEET_GR4` = '$tb4', 
               `KECAPATAN_KAIN_GR4` = '$gr4', 
               `TEBAL_SHEET_GR5` = '$tb5', 
               `KECAPATAN_KAIN_GR5` = '$gr5', 
                `SPEED_ROLL_BESAR_WC` = '$spr_besar', 
                `SPEED_ROLL_KECIL_WC` = '$spr_kecil', 
                `BERAT1_ADONAN` = '$br1', 
                `BERAT2_ADONAN` = '$br2', 
                 `BERAT3_ADONAN` = '$br3', 
                 `KETEBALAN1_ADONAN` = '$tebal1', 
                 `KETEBALAN2_ADONAN` = '$tebal2', 
                 `KETEBALAN3_ADONAN` = '$tebal3', 
                  `PANJANG_ADONAN` = '$panjang', 
                  `LEBAR_ADONAN` = '$lebar', 
                  `DIAMATER_ADONAN` = '$diameter', 
                  `MOLDER_SPEED` = '$kc', 
                  `KONVEYOR_SPEED` = '$kkc', 
                   `KERATAAN_POLES` = '$kerataaan_poles', 
                   `PROSENTASE_POLES` = '$prosentase_poles', 
                   `KERATAAN_GULA` = '$kerataaan_gula', 
                   `PROSENTASI_GULA` = '$kerataaan_gula'"; 

$ _POSTは、ファイルからデータをgetingが、どのようにユーザーが満たしていないとき、私は私のデータベースにデフォルト(「NA」)値 を設定しないされていること価値。

のNb:

ユーザーが記入していない場合、私は私のmysqlデータベースにデフォルトのNAを設定しようとしましたが、それはうまくいきませんでした、私の列フィールドは、まだ

空でありますjqueryのバリデーションを使用するようアドバイスしないでください。ユーザによっては、そうではない場合があります。

データベース列は空文字列( "NA")でなくてはなりません。

私のデータベースタイプのデータは、varchar型

ある

誰もが唯一のPHPまたは他の方法でこれを修正するために私を助けることができますか?

ありがとうございます。

答えて

1

php5ではisset()を使用できます。あなたはまた、POSTデータが空であるかどうか確認するためにempty()を使用することができます

$tgl_real = $_POST['TGL_REAL']?? 'NA'; 

:PHP 7で

$tgl_real = isset($_POST['TGL_REAL'])? $_POST['TGL_REAL']:'NA'; 

は、あなたが、あなたは??使用することができます)(ISSETを必要としません。

if(empty($_POST['TGL_REAL'])){ 
    $tgl_real = 'NA'; 
}else{ 
    $tgl_real = $_POST['TGL_REAL']; 
} 

実際には、あなたは、MySQLでdefault Constraintを設定し、デフォルトの制約を設定することができ、データベーステーブルを作成している間NOT NULL

+0

私はあなたの答えを簡単に選択できるので、 – Uchsun

1

簡単な回避策は、あなたが割り当て

$tgl_real = isset($_POST['TGL_REAL'])? $_POST['TGL_REAL']:"NA"; 
+0

これは唯一の文を使用して、私は多くの変数、任意のアイデアをよりシンプルに持っていますか? – Uchsun

0

あなたはShymanが言ったようにそれを行うが、どこかの関数でラップすることができます(クラス、機能)に条件文で行くことができるだろう - のparamsを取得します設定されていない場合はデフォルト値を割り当てます。

function getParam($name, $default = 'NA') { 
    return isset($_POST[$name]) ? $_POST[$name] : $default; 
} 

$tgl_real = getParam('TGL_REAL'); 
$someNiceInteger = getParam('WHAT_THE_INT', 0); 
0

最初にforeachを実行できます。

foreach ($_POST as $key=>$value){ 
    if ($value==''){ 
     $_POST[$key]='NA'; 
    } 
} 

何かが役に立ちます。

0

を設定するためにチェックすることができます。例えば

CREATE TABLE Orders 
(
O_Id int NOT NULL, 
OrderNo int NOT NULL, 
P_Id int, 
OrderDate date DEFAULT GETDATE() 
) 

は:)それが役に立てば幸い

1

は実際には、ここでの回答のほとんどは脆弱であるか、コピーペーストのかなりが必要です。ここでは、必要なキーだけを使ってその場で変数を作成する方法について説明します。

特に、DBに挿入するときは、代わりに配列の使用を検討する必要があります。

$keys = array(
    'TGL_REAL', 
    'RID', 
    'MESIN', 
    'SHIFT', 
    'PRODUK', 
    'HT', 
    'NO_ADUK', 
    'SHO', 
    'TB1', 
    'GR1', 
    'TB2', 
    'GR2', 
    'TB3', 
    'GR3', 
    'TB4', 
    'GR4', 
    'TB5', 
    'GR5', 
    'SPR_BESAR', 
    'SPR_KECIL', 
    'BR1', 
    'BR2', 
    'BR3', 
    'TEBAL1', 
    'TEBAL2', 
    'TEBAL3', 
    'PANJANG', 
    'LEBAR', 
    'DIAMETER', 
    'KC', 
    'KKC', 
    'KERATAAN_POLES', 
) 

$beforeExtract = array(); 

foreach ($keys as $key) { 
    if (array_key_exists($_POST[$key]) && !empty($_POST[$key])) { 
     $beforeExtract[strtolower($key)] = $_POST[$key]; 
     continue; 
    } 
    $beforeExtract[strtolower($key)] = 'NA'; 
} 

// Make variables from array 
extract($beforeExtract); 
+0

ちょっとうまく動作しますが、少しでも間違っているので、私のデータベースは常に "NA"を埋めます。私はextract($ beforeExtract);の後にクエリーを置く必要がありますか? – Uchsun

+0

これは、クエリを表示するのに役立ちます。 –

+0

クエリーはとてもシンプルで、挿入するだけです。私は編集し、クエリを表示しています。 – Uchsun

関連する問題