对于从该表单中存储数据感到困惑

3
我一直在练习mysql,但遇到了一个无法解决的问题。我正在制作一个大型表单,将能够将用户信息存储到数据库中。使用mysql和php,我已经成功地创建并存储了来自简单表单字段(例如名称、国家、年龄、兴趣等)的数据。
我的数据库中有一个名为“users”的表,其中包含约15个列,用于不同的数据,例如名称、国家、年龄等等。
现在,我已将此表单字段添加到我的表单中,并困惑于如何存储该字段中的数据。
这是我的表单图片....
如果我创建一个列“emp_name”,那么我应该如何为每个用户存储5个字段中的1-4个值?
即使我创建一个不同的表格(例如“emp_history”),我也不知道如何为每个用户存储来自该表单的数据。

我认为你正在寻找一对多的关系? - shapeshifter
3个回答

1
你的表单应该像这样:

<form name="xyz" method="post"> <table> <tr> <td>Emp name</td><td>country</td><td>position</td> </tr> <tr> <td> <input type="text" name="data[emp_name][]" value="" /> <input type="text" name="data[country][]" value="" /> <input type="text" name="data[position][]" value="" /> </td> </tr> <tr> <td> <input type="text" name="data[emp_name][]" value="" /> <input type="text" name="data[country][]" value="" /> <input type="text" name="data[position][]" value="" /> </td> </tr> <tr> <td> <input type="text" name="data[emp_name][]" value="" /> <input type="text" name="data[country][]" value="" /> <input type="text" name="data[position][]" value="" /> </td> </tr> </table>

when you post the form, you will get the value in php file like this:

$arr = $_POST['data']; $cnt = count($arr['emp_name']);

for($i=0; $i<$cnt; $i++) {
    $name = $arr['emp_name'][$i];   
    $country = $arr['country'][$i];   
    $position = $arr['position'][$i];   
    // insert sql
    $sql = insert into emp_table(name, country, position) values('".$name."', '".$country."', '".$position."'); }

好像对于像我这样的初学者来说有些困难...但是,skparwal兄弟,你有示例脚本吗?或者你能推荐一个表单处理器脚本,让我可以学习代码吗? - fahim74
非常简单,您只需要以数组形式创建文本元素。例如:<input type="text" name="data[]" /> - skparwal
那么它是否只能在一个列中存储1-4个数据,例如“emp_name”,在数据库行中会是什么样子呢?我有点困惑...或者你可以推荐任何详细的指南或文章来更深入地了解这种情况... - fahim74
php简易教程教授简单的输入和更新查询,但上述表格说明了每个独立用户将有单独的就业历史记录,这些记录将通过行1-4提交,雇主名称(全部4个)将放在名为"emp_name"的一列中。抱歉看起来有点复杂和混乱... :{ - fahim74
另一个例子 - skparwal
显示剩余2条评论

0
首先创建一个数据库表:
create table emp_table {
    id int(10) auto_increment primary key,
    emp_name varchar(100),
    country varchar(50),
    position varchar(50)
}

现在创建一个包含以下代码的PHP文件:

<h2>Insert new records</h2>
<form name="emp" method="post">
<table border="1">
<tr>
    <td>Employee name</td>
    <td>Country</td>
    <td>Position</td>
</tr>
<tr>
    <td><input type="text" name="data[emp_name][]" value="" /></td>
    <td><input type="text" name="data[country][]" value="" /></td>
    <td><input type="text" name="data[position][]" value="" /></td>
</tr>
<tr>
    <td><input type="text" name="data[emp_name][]" value="" /></td>
    <td><input type="text" name="data[country][]" value="" /></td>
    <td><input type="text" name="data[position][]" value="" /></td>
</tr>
<tr>
    <td><input type="text" name="data[emp_name][]" value="" /></td>
    <td><input type="text" name="data[country][]" value="" /></td>
    <td><input type="text" name="data[position][]" value="" /></td>
</tr>
<tr>
    <td><input type="text" name="data[emp_name][]" value="" /></td>
    <td><input type="text" name="data[country][]" value="" /></td>
    <td><input type="text" name="data[position][]" value="" /></td>
</tr>
</table>
</form>

<?php
mysql_connect('localhost', 'dbuser', 'dbpassword');
mysql_select_db('db_name');

if(isset($_POST['data'])) {
    $cnt = $_POST['data']['emp_name'];

    for($i=0; $i<$cnt; $i++) {
        $name = $arr['emp_name'][$i];   
        $country = $arr['country'][$i];   
        $position = $arr['position'][$i];   
        // insert sql
        $sql = "insert into emp_table(name, country, position) values('".$name."', '".$country."', '".$position."')";
        mysql_query($sql);  
    }
}

?>
<br/><br/>
<h2>Existing Records</h2>
<table border="1">
<tr>
    <td>Employee name</td>
    <td>Country</td>
    <td>Position</td>
</tr>
<?php
$str = '';
$objQuery = mysql_query('select * from emp_table');
while($result = mysql_fetch_array($objQuery))  
{
    $str .= '<tr>';
    $str .= '<td>'.$result['emp_name'].'</td><td>'.$result['country'].'</td><td>'.$result['position'].'</td>';
    $str .= '</tr>';
}
echo $str;
?>
</table>

现在运行您的应用程序。您可以在同一页上看到结果(带有现有记录)


1
非常感谢您详细的回答。您上次提交的代码几乎解决了问题,但是当我添加了表单操作和提交按钮到您的代码时,它会存储空值... - fahim74

0

创建两个表

tbl_more_detail(在此处存储所有信息1-4)

id(PK)
emp_id
emp_name
emp_country
emp_position
emp_from
emp_to

tbl_emp_detail(在此处引用上述ID,将具有4行不同的detail_id)

id(PK)
emp_id
detail_id(FK参考tbl_more_detail.id)

注意:为了防止重复输入,在(emp_id,detail_id)上创建唯一键索引


谢谢回答。雇主名称、国家、职位等文本字段的名称和ID会相同吗? - fahim74
将所有数据保存在 more_info 表中,并在该表中添加 emp_id - xkeshav

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接