2013-05-08 82 views
-1

如果任何輸入字段爲空,則不要在mysql中插入。有可能(可以接受)某些輸入字段是空白的。在這種情況下,我需要插入非空白字段(值)。但是腳本根本不插入。如果輸入爲空,則不在mysql中插入(pdo)

我可以寫類似

if ((strlen($date_day1) < 1)) { 
$date_day1 = 0; 
} 

但可能是更好的解決方案?如果輸入字段爲空,則插入所有其他字段。空場可能無法插入或inser 0

輸入

<input type="text" name="date_day1" id="date_day1"</td> 
<input type="text" name="amount1" id="amount1"</td> 
<input type="text" name="row_id1" id="row_id1"</td> 

然後阿賈克斯獲得輸入值

$(document).ready(function(){ 
autosave(); 
}); 
function autosave() { 
var t = setTimeout("autosave()", 5000); 
var date_day1 = $("#date_day1").val(); 
var amount1 = $("#amount1").val(); 
var row_id1 = $("#row_id1").val(); 
$.ajax({ 
type: "POST", 
url: "_autosave.php", 
data: "date_day1=" + date_day1 + "&amount1=" + amount1+ "&row_id1=" + row_id1, 
cache: false, 
}); 
} 

那麼PHP GET變量

$date_day1 = $_POST['date_day1']; 
$amount1 = $_POST['amount1']; 
$row_id1 = $_POST['row_id1']; 

,然後嘗試記錄mysql

$stmt_insert = $db->prepare("INSERT INTO 2_1_journal(RecordDay, Amount, RowId) VALUES(:RecordDay,:Amount,:RowId)"); 


$stmt_insert->execute(array(':RecordDay' => $date_day1, ':Amount' => $amount1, ':RowId' => $row_id1, 

));

更新

有了這樣的改變AJAX插入的作品,但是,這並不工作 success: function(){ document.getElementById('is_row_changed1').value = 0;}

$(document).ready(function(){   
autosave(); 
}); 
function autosave() { 
var t = setTimeout("autosave()", 5000); 
var date_day1 = $("#date_day1").val(); 
var amount1 = $("#amount1").val(); 
var row_id1 = $("#row_id1").val(); 

if ($("#is_row_changed1").val() > 0) { 
$.ajax({ 
type: "POST", 
url: "_autosave.php", 
dataType: "json", 
data: {"date_day1" : date_day1, "amount1" : amount1, "row_id1" : row_id1}, 
cache: false, 

success: function(){ 
document.getElementById('is_row_changed1').value = 0; 
} 

}); 

} 
} 
+0

錯字:'$ row_id_1'與'$ row_id1'不一樣。這可能是數據庫拒絕存儲記錄的原因......它沒有ID。 – 2013-05-08 08:44:24

+0

不,沒有row_id_1是我在這裏濛濛的。無處不在row_id1 – user2232696 2013-05-08 08:46:18

+1

向您的代碼中添加'$ db-> setAttribute(PDO :: ATTR_ERRMODE,PDO :: ERRMODE_EXCEPTION);'以查看執行插入語句時是否有錯誤。 – 2013-05-08 08:48:58

回答

1

更改您的AJAX部分,這將工作:

$.ajax({ 
type: "POST", 
url: "_autosave.php", 
dataType: "json", 
data: {"date_day1" : date_day1, "amount1" : amount1, "row_id1" : row_id1}, 
cache: false, 
}); 

希望這會幫助你。

+0

是的,它有幫助,但是這樣做代碼不工作成功:function(){ document.getElementById('is_row_changed1')。value = 0; }。我將修改我的代碼 – user2232696 2013-05-08 08:53:36

+0

@ user2232696 ok,所以從ajax請求中刪除'dataType:「json」代碼。那麼你的's_row_changed1'字段在哪裏。 – 2013-05-08 08:58:13

+0

謝謝,所有作品!你能建議什麼dataType:「json」,(影響)在這裏?爲什麼下面的代碼不適用於dataType:「json」,? – user2232696 2013-05-08 09:03:53

1

添加非空值,試試這個

$date_day1 = (trim($_POST['date_day1'])!="" ? $_POST['date_day1'] : 0); 

在相同的方式,你可以測試其他字段爲空,並添加默認值,並通過這些變量來查詢。