3

如何在一个字段中存储多个 SQL 条目?例如,在现场电话中,我想让用户输入更多电话,例如私人电话、家庭电话、商务电话等。

关于如何创建 trat 表单以及如何在 sql 中存储数据的任何问题?

我想我可以使用 php 中的 serialize() 函数来存储它们,但是如何制作表单并收集这些信息?

Form:

Home Phone: 321321333
Other: 333213213
Add Another

此外,我想让他们可以编辑姓名字段,因此如果用户想要使用家庭电话而不是家庭电话或寻呼机而不是其他。

有什么帮助吗?请?

4

3 回答 3

3

不会在单个字段中存储多个值。您需要一个允许多个电话号码的规范化结构。1:n 的关系在这里是合适的。

用户(用户 ID PK)
userPhone (userId FK, phoneType, phoneNumber (userId, phoneType PK))
于 2013-03-13T03:34:35.427 回答
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'] );

您可以使用 PHPserialize函数在 MySQL 中存储数组和对象

于 2013-03-13T03:37:34.080 回答
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(放入页面的head标签):

<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()它,你就有一个这样的数组,在名称和值之间交替:'home tel'、'(324)444-4356'、'work tel'、'(444)546-5678' 等。这是未经测试的,告诉我如果失败了。

于 2013-03-13T04:02:18.370 回答