2010-10-01 2 views
0

Pour commencer, je devrais clarifier le titre, afin que vous compreniez vraiment ce que j'essaie de faire.Écrire des valeurs spécifiques à une base de données X fois?

Je travaille sur un script shopping-cart-ish, mais c'est un peu différent car tous les produits (presque toujours) seront achetés à chaque fois. Par conséquent, je crois qu'il est préférable de lister tous les éléments avec une table, puis laisser le client choisir la quantité de chaque produit qu'ils veulent.

Il regarderait quelque chose comme ceci:

-- Name ------------------------- Amount -- 
-- A random product ------------- 15 ------ 
-- Another random product ------- 2 ------- 
-- And a third one --- ---------- 19 ------ 
-- ------------------------------ --------- 
-- ------------------------------ SUBMIT -- 

Le problème est, je ne sais pas comment écrire dans la base de données. Ou plus spécifique, je ne sais pas comment soumettre les données d'une manière que j'obtiens tous les produits choisis, aussi bien que le montant de chacun dans un tableau. Je pourrais ajouter plus de produits à la base de données plus tard, donc je ne peux pas le coder en dur.

Je ne peux pas poster deux valeurs dans une entrée, ce qui est trop mauvais. Si je pouvais le faire, je pourrais poster l'ID et le montant comme deux valeurs différentes.

Des idées comment faire ceci?

Répondre

0

concaténer le productID et la quantité avec un tube "|" il serait

productId = 14

Quantité = 3

valeur insérée = 14 | 3

puis après votre db Fetch, vous pouvez exploser les données par le "|" et avez part1 = 14 et part2 = 3

+0

je pensais de cette aswell, mais ce ne serait pas l'air vraiment bien. Et je devrais demander aux utilisateurs de mettre l'ID du produit en premier etc, heh. D'autres idées? – Nike

+0

-1. solution alambiquée (et cassable) au problème – Wrikken

1

Lorsque vous créez vos champs de saisie, utilisez un tableau pour le nom, avec l'ID du produit comme clé.

Par exemple (où $product_id est l'ID du produit que le montant correspond à):

<input type="text" name="amounts[<?=$product_id?>]"> 

Puis en PHP, une fois le formulaire affiché, $_POST['amounts'] sera un tableau, où les clés sont les ID de produit, et les valeurs sont les montants réels. Vous n'avez pas besoin de faire quelque chose de spécial pour que cela arrive; Par défaut, PHP reconnaîtra que les données GET/POST contenant [] doivent être transformées en tableau.

alors vous pouvez juste itérer sur ce tableau pour mettre à jour la base de données:

foreach ($_POST['amounts'] as $product_id => $amount) 
{ 
    if (!empty($amount)) // was a value given for this amount? 
    { 
    // build your insert query here 
    } 
} 
+0

Merci beaucoup! Je suis trop fatigué pour l'implémenter maintenant, je vais me coucher maintenant. Mais je vais essayer demain et commenter. – Nike

+0

+1, le moyen le plus facile (php-) d'obtenir les données sans manipulation de chaîne encombrante. – Wrikken

+0

Vous avez travaillé comme un charme, merci pour l'aide. :) – Nike

Questions connexes