2011-04-16 6 views
1

Je fais un formulaire de commande simple avec 5 produits et ils peuvent être sélectionnés avec une case à cocher de l'utilisateur, puis je veux ajouter les produits que les visiteurs vont sélectionner dans la base de données mysql , mais comme vous le savez par exemple INSERT array [] doest travail!Quelle est la meilleure façon d'ajouter un tableau dans Mysql

J'ai fait un fichier FOR avec php mais il n'ajoute que le dernier produit d'un tableau!

Je connais un moyen de sérialiser et de désérialiser le php mais je ne l'aime pas vraiment!

Nous vous remercions de votre aide.

Voici le code:

$firstname = $_POST['firstname']; 
$lastname = $_POST['lastname']; 
$products = $_POST['products']; 
$email = $_POST['email']; 

echo '<h3>Sehr geehrte/er '.$firstname.' '.$lastname.'</h3>'; 


    if(empty($products)) 
    { 
    echo("Keine bestellung."); 
    } 
    else 
    { 
    $N = count($products); 

    echo("Sie haben $N produkte bestellt:<br /> "); 
    for($i=0; $i < $N; $i++) 
    { 
     echo $order = ($products[$i]);  
    } 
    $query = "INSERT INTO salt_orders (products, vorname, nachname, date) 
     VALUES ('$order', '$firstname', '$lastname', NOW())"; 
    $result = mysql_query($query); 
    } 
+2

Normaliser votre base de données .... créer une ligne de commande pour chaque produit –

+0

Voulez-vous insérer les 5 produits dans une rangée de la table 'salt_orders'? Ou en 5 rangs? –

+0

@ypercube Oui en une ligne – TooCooL

Répondre

1

Créer une table séparée qui fait référence à vos produits et leurs détails. Puis créez une autre table pour contenir les éléments de campagne. Lorsqu'un client place et commande, insérez une nouvelle ligne référençant le produit acheté et le numéro de commande auquel il s'applique dans la table des éléments de ligne. Créez un enregistrement dans salt_orders qui contient le numéro de commande.

Ensuite, vous pouvez tout récupérer en les réunissant pour récupérer les détails complets de la commande. L'ajout de plusieurs produits à une cellule à la suite rendra la tâche très difficile pour vous, alors je suggère de normaliser vos données comme indiqué ci-dessus.

Ceci est juste un exemple simple, il peut être beaucoup plus complexe en fonction de ce que vous avez besoin de faire.

1

Vous pouvez l'utiliser pour concaténer les produits dans un domaine:

$order = ""; 
for($i=0; $i < $N; $i++) 
{ 
    echo $order .= $products[$i] . "," ;  
} 
$order = substr($order ,0 ,strlen($order)-1) ; 

Mais vous devriez vraiment envisager la normalisation de votre table de commandes, comme tous les autres ont suggéré.

1

Oui, la normalisation est ce qui vous manque probablement. Lorsque vous avez terminé cela, ajoutez des fonctions à votre base de données qui gèrent l'insertion dans vos tables normalisées. De cette façon, la logique pour les données reste avec les données.

Questions connexes