2011-06-15 30 views
1

這是一個讓我難倒的人。在沒有空值的情況下將POST數組存儲在mysql中?

我將$ _POST數組存儲在mysql數據庫中。我正在使用JavaScript動態創建我的表單上的輸入字段,但如果輸入字段爲空,仍然會被插入到數據庫中(顯然)。

無論如何要通過POST數組並過濾這些空值嗎?

編輯:

使用WordPress的,但同樣的想法:

<?php 
foreach($_POST['eirepanel_inline_ads_options_name'] as $post_eirepanel_inline_ads_options_name): 
    if(empty($post_eirepanel_inline_ads_options_name)): 
     echo 'empty'; 
    else: 
     update_option('eirepanel_inline_ads_options', $_POST); 
     $eirepanel_inline_ads_options = get_option('eirepanel_inline_ads_options'); 
    endif; 
endforeach; 
?> 
+0

你如何處理提交按鈕值?你認爲什麼是空值?空串? 0? – hakre 2011-06-15 12:18:40

+0

提交值有一個布爾值。一個空值將是一個空字符串 – 2011-06-15 12:22:35

+0

嗯,提交按鈕上顯示的文字是什麼? – hakre 2011-06-15 12:24:33

回答

0

在數據庫中插入任何東西之前檢查的$ _POST值

if($_POST['email'] == "") { ... 
0

你可以這樣做即:

foreach ($_POST as $key => $value) 
{ 
    if (empty($value)) 
    { 
     unset($_POST[$key]); 
    } 
} 
1

有幾個。但是,請注意不總是發送值的控件。如果未勾選,您不一定會獲得複選框的值。

由於您使用Javascript,你怎麼樣存儲形式JSON:

<?php 
$formVars = array(); 
foreach ($_POST as $key=>$value){ 
    if ($value != ''){ 
     $formVars[$key] = $value; 
    } 
} 

$form = json_encode($formVars);//Store this in DB 
0

你可以只做一個空的檢查就可以了。

免責聲明 這是一個簡單的例子。不檢查$value是否是一個數組(例如複選框或文件輸入)。僅適用於輸入。

$data = array(); 
foreach ($_POST as $key => $value) { 
    if (empty($value)) continue; 
    $data[$key] = $value; 
} 
//save $data to DB 
0
function filter_post($value) 
{ 
    if ($value !='') 
    { 
    return $value; 
    } 

} 
$new_array=array_filter($_POST,'filter_post'); 
+0

謝謝,看起來很有前途,但我不害怕 – 2011-06-15 12:59:10

1

你說,你只需要那些不是一個空字符串$ _POST數組的元素:

$nonEmpty = array_filter($_POST, function($value) {return $value!=='';}); 

你寫你動態添加字段。我不知道你是否使用PHP notation for arrays in form fields。如果這樣的話,處理這些額外類型的數據會有一些不同。

相關問題