2011-12-31 53 views
0

我有複選框,其中包含名稱狀態。這就是我如何做它:將複選框條目插入數據庫

$_SESSION['statuses'] = mysql_real_escape_string($_POST['statuses']); 

當我插入它是如何我做它:

$insert = "INSERT INTO submitted (statuses) 
    VALUES ('".$_SESSION['statuses']."')"; 

    $query = mysql_query($insert) or die ("Error: ".mysql_error()); 

問題是什麼,檢查被插入到數據庫中,讓我怎麼插入選中的條目?

NEW/UPDATE:

這是複選框形式的樣子:

    <input type="checkbox" name="statuses" value="something"> 
     <input type="checkbox" name="statuses" value="something"> 
     <input type="checkbox" name="statuses" value="something"> 
     <input type="checkbox" name="statuses" value="something"> 
     <input type="checkbox" name="statuses" value="something"> 
     <input type="checkbox" name="statuses" value="something"> 
+0

想法?什麼是'$ _POST ['狀態']'?這是一對一的價值嗎? – 2011-12-31 03:16:45

+0

這是來自5頁的表格,所以我使用會話。 $ _POST [ '狀態'];用於複選框。 – AAA 2011-12-31 03:17:45

+0

所以它是一個嚮導的一部分。是'name =「statuses []」'你試圖插入的值實際上是一個字符串還是其他類型的值(數組等)? – 2011-12-31 03:20:14

回答

5

也許這個問題可能在於在標記了你的形式寫的。下面是和示例:

<form action="checkbox-form.php" method="post"> 
Select your options<br /> 
<input type="checkbox" name="options[]" value="A" />A<br /> 
<input type="checkbox" name="options[]" value="B" />B<br /> 
<input type="checkbox" name="options[]" value="C" />C<br /> 
<input type="submit" name="formSubmit" value="Submit" /> 
</form> 

注意options設置爲options[]。這允許所有選中選項的數組出現在POST超級變量中。

如果你這樣做:

var_dump($_POST['options']); 

您應該然後得到一個包含所有的檢查值的數組。

然後,你可以這樣做:

foreach($_POST['options'] as &$option){ 
    mysql_real_escape_string($option); 
} 

然後插入到數據庫:

$insert = "INSERT INTO submitted (statuses)  
    VALUES ('". implode(",", $_POST['options']) ."')";  

    $query = mysql_query($insert) or die ("Error: ".mysql_error()); 

更新: 在窗體上的每一頁,你應該有類似逃避值並保存它到會議。然後這會將每個頁面的值保存到用戶會話中:

//Page 1 
foreach($_POST['options'] as $option){ 
    $_SESSION['options'][] = mysql_real_escape_string($option); 
} 

//page 2 
$_SESSION['SOME_OTHER_VALUE_FROM_TEXT_BOX'] = mysql_real_escape_string($_POST['SOME_OTHER_VALUE_FROM_TEXT_BOX'); 

//Final page: 
//Everything is now stored in SESSION, so you can use them there: 
//For example, display the value of options: 
var_dump($_SESSION['options']); //etc 

//So here, you would just run your sql queries to insert the appropriate data into your databse. 
+0

好的,當我使用var_dump時,這些值顯示在下一頁上。任何防止帽子向用戶顯示的方式。 – AAA 2011-12-31 03:33:24

+0

'var_dump'輸出值供您查看。這用於調試目的。只需刪除var_dump行,你應該沒問題。 – F21 2011-12-31 03:38:44

+0

確定一個問題,如果我選擇所有選項有回合20然後它給了我一個語法檢查錯誤,但我找不到任何錯誤.. – AAA 2011-12-31 03:53:24

1

這是插入數據庫時​​用於複選框的內容。

function validateCheckBox($name) { 
    if (isset($_POST[$name]) && !empty($_POST[$name]) && $_POST[$name] === 'on') { 
     return 1; 
    }else{ 
     return 0; 
    } 
} 
-1

沒有,如果你只是輸入這件事,或者你根本不知道它的存在

$_SESSION['SOME_OTHER_VALUE_FROM_TEXT_BOX'] = mysql_real_escape_string($_PSOT['SOME_OTHER_VALUE_FROM_TEXT_BOX'); 

應該爲什麼你使用`SESSION`變量要做到這一點是

$_SESSION['SOME_OTHER_VALUE_FROM_TEXT_BOX'] = mysql_real_escape_string($_POST['SOME_OTHER_VALUE_FROM_TEXT_BOX'); 
+0

它在問題中是正確的,在F21的答案是不正確的。評論這個答案,而不是發佈新的答案將是正確的方法。 – Lauri 2012-10-28 13:27:56

相關問題