2010-04-21 143 views
0

我是新来的PHP和MySQL,我试图学习如何从三个不同的阵列friend[], hair_type[], hair_color[]使用MySQL和PHP存储以下阵列数据的例子会很好。谢谢如何使用PHP和MySQL在MySQL数据库中存储数组数据?

这里是HTML代码。

<input type="text" name="friend[]" id="friend[]" /> 

<select id="hair_type[]" name="hair_type[]"> 
    <option value="Hair Type" selected="selected">Hair Type</option> 
    <option value="Straight">Straight</option> 
    <option value="Curly">Curly</option> 
    <option value="Wavey">Wavey</option> 
    <option value="Bald">Bald</option> 
</select> 

<select id="hair_color[]" name="hair_color[]"> 
    <option value="Hair Color" selected="selected">Hair Color</option> 
    <option value="Brown">Brown</option> 
    <option value="Black">Black</option> 
    <option value="Red">Red</option> 
    <option value="Blonde">Blonde</option> 
</select> 





<input type="text" name="friend[]" id="friend[]" /> 

<select id="hair_type[]" name="hair_type[]"> 
    <option value="Hair Type" selected="selected">Hair Type</option> 
    <option value="Straight">Straight</option> 
    <option value="Curly">Curly</option> 
    <option value="Wavey">Wavey</option> 
    <option value="Bald">Bald</option> 
</select> 

<select id="hair_color[]" name="hair_color[]"> 
    <option value="Hair Color" selected="selected">Hair Color</option> 
    <option value="Brown">Brown</option> 
    <option value="Black">Black</option> 
    <option value="Red">Red</option> 
    <option value="Blonde">Blonde</option> 
</select> 

下面是MySQL表格。

CREATE TABLE friends_hair (
id INT UNSIGNED NOT NULL AUTO_INCREMENT, 
hair_id INT UNSIGNED NOT NULL, 
user_id INT UNSIGNED NOT NULL, 
PRIMARY KEY (id) 
); 


CREATE TABLE hair_types (
id INT UNSIGNED NOT NULL AUTO_INCREMENT, 
friend TEXT NOT NULL, 
hair_type TEXT NOT NULL, 
hair_color TEXT NOT NULL, 
PRIMARY KEY (id) 
); 
+0

您是否试图存储每个选择的选项,或从窗体的结果,或两者? – hookedonwinter 2010-04-21 15:24:14

+0

我试图存储用户的结果。 – Cyn 2010-04-21 15:25:15

回答

1

为头发类型,头发颜色和朋友创建表格。

发型和发色每个都需要主关键字idname字段。

朋友需要主密钥id,以及name,hair_type_idhair_color_id的字段。

使头发类型和头发的值为数据库中各自的ID。

当您提交表单时,循环访问$ _POST ['friend']数组,向好友数据库中插入好友姓名,头发类型ID和头发颜色ID。

不要忘记清理输入。查看mysql_real_escape_string()的例子。

如果您需要进一步的帮助,我可以做出更详细的说明。

+0

我的桌子有什么问题?你失去了我。 – Cyn 2010-04-21 15:37:37

+0

我假设朋友是您感兴趣的数据,头发类型和头发颜色只是不会经常更改的列表类型。使用我的方法,您可以将这些列表放在自己的表格中,如果需要可以轻松添加列表,然后朋友表格会将每个朋友的姓名与他们的头发颜色和类型相关联。如果这是有道理的 – hookedonwinter 2010-04-21 15:45:01

0

假设你只能有一个头发类型和每个用户一个发色然后检查pastie一个简单的答案:http://pastie.org/928039

让我们面对它,你不能在同一时间有波浪卷发和直发现你可以吗 ?颜色可能会有所不同在这种情况下,这是一个多对多的,所以你需要一个user_hair_colour表user_hair_colour(user_ID的PK,hair_colour_id PK):P

select 
    u.*, 
    hc.name as hair_colour_name, 
    ht.name as hair_type_name 
from 
    users u 
inner join hair_colour hc on u.hair_colour_id = hc.hair_colour_id 
inner join hair_type ht on u.hair_type_id = ht.hair_type_id 
order by 
    u.username; 
相关问题