2010-04-21 6 views
0

Je suis nouveau sur php et mysql et j'essaie d'apprendre comment stocker les données de tableau suivantes à partir de trois tableaux différents friend[], hair_type[], hair_color[] en utilisant MySQL et PHP un exemple serait bien. MerciComment stocker des données de tableau dans la base de données MySQL en utilisant PHP et MySQL?

Voici le code 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> 

Voici les tables MySQL ci-dessous.

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

Essayez-vous de stocker les options pour chaque sélection, ou les résultats du formulaire, ou les deux? – hookedonwinter

+0

J'essaie de stocker les résultats de l'utilisateur. – Cyn

Répondre

1

Créez une table pour le type de cheveux, la couleur des cheveux et les amis.

Le type de poil et la couleur des cheveux nécessitent chacun une clé primaire de id et un champ name.

Un ami a besoin d'une clé primaire de id et de name, hair_type_id et hair_color_id. Définissez les valeurs pour le type de cheveux et la couleur des cheveux de leur identifiant respectif à partir de la base de données. Lorsque vous soumettez le formulaire, parcourez le tableau $ _POST ['friend'], insérez dans la base de données d'amis le nom de l'ami, l'ID du type de cheveux et l'ID de la couleur des cheveux. N'oubliez pas de désinfecter les entrées. Découvrez mysql_real_escape_string() pour un exemple de cela.

Je peux rendre ceci plus détaillé si vous avez besoin d'aide supplémentaire.

+0

quel est le problème avec ma table? et tu m'as perdu. – Cyn

+0

Je fais l'hypothèse que les amis sont les données qui vous intéressent, avec les types de cheveux et les couleurs de cheveux étant juste des types de listes qui ne changeront pas souvent. Avec ma méthode, vous pouvez avoir ces listes dans leur propre table, facile à ajouter si vous en avez besoin, puis la table des amis reliera chaque nom d'ami à leur couleur et à leur type de cheveux. Si ça a du sens – hookedonwinter

0

en supposant que vous ne pouvez avoir qu'un seul type de cheveux et une couleur de cheveux par l'utilisateur puis vérifiez la pastie pour une réponse simple: http://pastie.org/928039

let visage de ce que vous ne pouvez pas avoir les cheveux wavey et droite en même temps peut tu ? Les couleurs peuvent être différentes dans ce cas, il est un beaucoup à beaucoup si vous avez besoin d'une user_hair_colour table 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; 
0

vous pouvez utiliser la fonction serialise pour stocker le tableau dans la base de données MySQL, et pour récupérer les valeurs, utilisez la fonction Unserialise. PHP serialize function

Questions connexes