2014-02-08 93 views
1

我想通過使用複選框在登記表單期間,通過一個條目插入一個對象數組mySQL數據庫。插入複選框數組一次到MySQL查詢使用PHP

此時該條目僅顯示爲「數組」,並且數組中沒有條目。

我嘗試了一個for循環,但它將整個條目插入數據庫多次而不是複選框條目。

有關如何解決此問題的任何想法?

<table border="0" cellpadding="3" cellspacing="1"> 
           <tr> 
            <form id="callAjaxForm"> 
             <div data-role="fieldcontain"> 
             <td width="150">Name:</td> 
             <td width="300"><input type="text" name="inputName" value="" /> </td> 
           </tr> 
           <tr> 
            <td width="150">Username:</td> 
            <td width="300"><input type="text" name="inputUsername" value="" /></td> 
           </tr> 
           <tr> 
            <td width="150">Password:</td> 
            <td width="300"><input type="password" name="inputPassword" value="" /></td> 
           </tr> 
           <tr> 
            <td width="150">Date of Birth:</td> 
            <td width="300"><input type="date" name="inputDOB" value="" /></td> 
           </tr> 
           <tr> 
            <td width="150">Core Competencies:</td> 
            <td width="300"> 
             <input type="checkbox" name="coreComp[]" value="1" />Honesty<br /> 
             <input type="checkbox" name="coreComp[]" value="2" />Loyalty<br /> 
             <input type="checkbox" name="coreComp[]" value="3" />Trust<br /> 
             <input type="checkbox" name="coreComp[]" value="4" />Empathy<br /> 
             <input type="checkbox" name="coreComp[]" value="5" />Respect</td> 
           </tr> 
           <tr> 
            <td colspan="2"> 
             <button data-theme="b" id="submit" type="submit">Submit</button> 
            </td> 
            </tr> 
           <tr> 
            <td colspan="2"> 
             <h3 id="notification"></h3> 
             </td> 
           </tr> 
           </div> 
           </form> 
          </table> 

PHP代碼

<?php 
include 'includes/Connect.php'; 

$name = $_POST['inputName']; 
$username = $_POST['inputUsername']; 
$password = $_POST['inputPassword']; 
$dob = $_POST['inputDOB']; 
$aCC = $_POST['coreComp']; 

$encrypt_password=md5($password); 

if(empty($aCC)) 
{ 
    echo("Please pick at least one"); 
} 
else 
{ 
    mysql_query("INSERT INTO Profile (`Name`,`Username`,`Password`,`D.O.B`,`CC`) VALUES('$name','$username','$encrypt_password','$dob','$aCC')") or die(mysql_error()); 
    mysql_close(); 

    echo("You have successfully registered!"); 
} 
?> 
+0

你的複選框coreComp是一個數組,所以是的,如果你嘗試直接插入,這是行不通的。你想如何爲每個選定的項目或全部插入一行? –

+0

這是一個數組(至少當他們中的至少一個被選中時...)。你想如何存儲它,都在同一列?如果是這樣,你需要序列化數組或類似的,但這使得搜索痛苦。 – jeroen

回答

0

使用內爆並爆炸。

$aCC = implode(';' , $_POST['coreComp']); 
$aCC will contain all values glued together with a ';' in between them. 

有了這個,你可以將它存儲在數據庫中。當您從數據庫檢索數據時,請確保使用爆炸。

http://nl1.php.net/manual/en/function.explode.php

+0

非常感謝。工作過一種享受。 – Phughes

+0

如果你不介意,你能設置這個答案,如果這對你有幫助嗎? – Rimble

0

無法存儲陣列,您可以用逗號Concat的和在PHP中使用破滅()函數將其插入到該領域。 Check here

另一種方法是將核心競爭力與值保持在單獨的表格中,並使用複選框中的唯一ID填充相同的複選框,這樣您就可以將字段中的ID存儲爲以逗號分隔的字段。

希望這會有所幫助。