2013-03-13 66 views
3

如何在一個字段中的SQL中存儲多個條目? 例如在現場手機我想讓用戶輸入更多的手機,如私人,家庭,企業等SQL中的多個條目?

任何hellp上我如何創建trat表單和如何在sql中存儲數據?

我想我可以在PHP中使用serialize()函數來存儲它們,但是如何製作表單並收集該信息?

Form: 

Home Phone: 321321333 
Other: 333213213 
Add Another 

此外,我想使他們可以編輯姓名字段,所以如果用戶想要把家庭電話,而不是家庭電話或傳呼機,而不是其他的。

任何幫助?請?

回答

1

用戶serialize()數組和對象,就像你說的。但是,對於工作添加另一個按鈕,你需要JavaScript。這是一種形式:

<form action="action.php" method="post"> 
    <div id="phoneNumbers"> 
     <input type="text" value="home phone">: <input type="text" name="0-value" value="(xxx)xxx-xxxx"> 
    </div> 
    <button onclick="addAnother();">Add Another Phone Number</button> 
    <input type="submit> 
</form> 

這裏是JavaScript(把你的網頁的頭標記):

<script type="text/javascript"> 
    var nums=0; 
    function addAnother(){ 

     document.getElementById('phoneNumbers').innerHTML+='<input type="text" name="'+++nums+'-name">: <input type="text" name="'+nums+'-value">'; 

    } 
</script> 

下面是action.php的:

<?php 
$arrayOfNums=array(); 
foreach($_POST as $curVal){ 
    array_push($arrayOfNums,$curVal); 
} 
$serializedArray=serialize($arrayOfNums); 
#now do whatever code you have to add serializedArray to your database. It is a string, so this is easy. 
?> 

現在你有一個序列化數組。只是unserialize()它,你有這樣一個數組,在名稱和值之間交替:'家庭電話','(324)444-4356','工作電話','(444)546-5678'等。這是未經測試的,告訴我它是否失敗。

+0

任何關於如何在PHP中做到這一點的建議,如果除了手機之外,該頁面上有更多的東西。那麼我怎麼能設置控制器上if($ this-> request->是('post')來做數組序列化只有當手機值保存? – 2013-03-13 19:03:51

3

不要在一個字段中存儲多個值。你需要一個規範化的結構,這將允許多個電話號碼。 1:n關係在這裏是適當的。

user (userId PK) 
userPhone (userId FK, phoneType, phoneNumber (userId, phoneType PK))
+0

任何幫助,我該怎麼做? – 2013-03-13 03:35:31

+1

@Miskone我會建議你閱讀[這個問題](http://stackoverflow.com/questions/75105/what-datatype-should-be-used-for-storing-phone-numbers-in-sql-server-2005 )。雖然它談到SQL Server,但它仍然適用於此。 – Kermit 2013-03-13 03:37:58

2

您可以使用json_encode()json_decode()用於保存和訪問數據。

用於保存。

$phone_number = array("Home Phone" => "321321333", "Other" => "333213213"); 
$encoded = json_encode($phone_number); 

爲了訪問。

$result = mysqli_fetch_assoc($sql); 
$decoded = json_decode($result['phone_number_mysql_fields']); 

您可以使用PHP serialize功能存儲在MySQL

+0

爲什麼不只是serialize()而不是json_encode?序列化是PHP原生的,json來自javascript – Markasoftware 2013-03-13 03:38:19

+0

你將如何去尋找一個電話號碼? – Kermit 2013-03-13 03:39:41

+0

@Markasoftware我也編輯了答案,並提到序列化。 – 2013-03-13 03:39:45