2012-07-31 111 views
0

請告訴我下面code.Error 警告的問題:()複選框值在MySQL數據庫

if(isset($_POST['submit'])) 
     { 
     foreach($_POST['team[]'] as $value) 
     { 
     $insert=mysql_query("INSERT INTO team('team') VALUES ('$value')"); 
     } 
     if($insert) 
     { 
     echo "dONE"; 
     } 
     } 
<form method="post" action="check.php"> 
<input type="checkbox" name="team[]" value="AG"> Argentina 
<input type="checkbox" name="team[]" value="GE"> Germany 
<input type="checkbox" name="team[]" value="BR"> Brazil 
<input type="submit" name="submit" value="submit"> 
</form> 
+0

我認爲你應該使用'的foreach($ _ POST [「團隊」]作爲$ value)' – Marco 2012-07-31 15:32:15

回答

2

的foreach爲無效的論點提供與嘗試:

foreach($_POST['team'] as $value) 
+0

沒有解決。同名錯誤 – 2012-07-31 15:29:01

+1

你確定嗎?你有沒有嘗試過?只需在我的本地主機上測試它,它就可以工作。 – j0k 2012-07-31 15:31:26

+0

爲foreach提供的參數無效() – 2012-07-31 15:32:50

1

不要指team[]。而是使用

if (isset($_POST['team'])) { 
    foreach($_POST['team'] as $value) { ... } 
} 
+0

not solved.Same error – 2012-07-31 15:30:10

+0

foreach提供的參數無效() – 2012-07-31 15:32:39

+0

@FAIQNASEEM是$ _POST ['team'] set? – Matt 2012-07-31 15:32:51

0

,當你在輸入做name=something[],PHP將創建一個數組給你,讓你只需要做

foreach($_POST['team'] as $value)

而且像name=team[member][]可以通過在PHP像迭代所以

foreach($_POST['team']['member'] as $value)

因此,它是分組輸入以及處理多個動態輸入很容易

+0

爲foreach提供的參數無效() – 2012-07-31 15:32:30

+0

我已經將字段類型設置爲varchar 30),這是否正確? – 2012-07-31 15:40:23

0

嘗試以下操作:

$teams = $_POST['team']; 
$submitted = $_POST['submit']; 

if(isset($submitted) && is_array($teams)) { 

    foreach($teams as $team) { 
      /* Escapes special characters in a string for use in an SQL statement */ 
      $team = mysql_real_escape_string($team) 
      $insert = mysql_query("INSERT INTO team('team') VALUES ('$team')"); 
    } 

    if($insert) { 
      echo "dONE"; 
    } 
} else { 
    echo "Either Form Not Submitted or Teams is Not Array"; 
} 
+0

爲foreach提供的參數無效() – 2012-07-31 15:32:25

+0

我已經將字段類型設置爲varchar(30),這是否正確? – 2012-07-31 15:39:28

+0

如果您仍然收到「提供的foreach()無效參數」,請嘗試我的修訂答案。 – 2012-07-31 15:43:09

1

當您將收到來自$ _ POST變量的球隊,這將是每一個複選框的數組。的

因此,而不是使用team[]你應該使用

foreach($_POST['team'] as $value) 

此外,你應該知道,如果沒有複選框被選中,主要團隊也就不存在了,所以一定要確保你的foreach做if (isset($_POST['team']))

此外,您在每次循環時都會覆蓋插入。

你可能想要做這樣的事情:

if(isset($_POST['submit'])) 
{ 
    if (isset($_POST['team'])) 
    { 
     $insert = true; 

     foreach($_POST['team'] as $value) 
     { 
      // we add security with mysql_real_escape_string 
      $value = mysql_real_escape_string($value); 
      $result = mysql_query("INSERT INTO team('team') VALUES ('$value')"); 

      if (!$result) 
      { 
       $insert = false; 
       break; 
      } 
     } 

     if($insert) 
     { 
      echo "dONE"; 
     } 
    } 
} 

你可能要檢查mysql_real_escape_string到secrurity添加到您的代碼

+0

我已經設置字段類型爲varchar(30),這是正確的? – 2012-07-31 15:39:54

+0

@FAIQNASEEM根據你想要存入數據庫的數據,這是足夠的。 – Hipny 2012-07-31 15:40:53