2009-05-18 1 views
0

J'utilise actuellement PHP, JAVASCRIPT, MYSQL, XHTML, CSS pour développer mon site. Notez que les solutions ne sont pas limitées à ceci mais préférées si possible.Comment puis-je ajouter une sélection inconnue d'articles en stock avec une quantité fournie par l'utilisateur à un panier?

J'ai une grande table MYSQL de widgets et une page qui permet à l'utilisateur de rechercher un widget spécifique. Par exemple, si l'utilisateur tape le nom du modèle d'un widget, la recherche peut renvoyer 20 modèles de widget différents. Chaque modèle de widget est différent, ils ont tous leur propre prix et nom de modèle de widget, etc.

Maintenant vient la partie délicate (pour moi de toute façon), l'utilisateur devrait être en mesure d'entrer une quantité à côté d'un widget désiré champ de texte html.

L'utilisateur doit alors pouvoir appuyer sur un bouton Ajouter au panier qui stocke la quantité et le modèle auquel il est associé.

(Note de conception: Une requête MYSQL est utilisée pour renvoyer une liste des résultats de la recherche et j'utilise PHP pour renvoyer les lignes de widgets trouvées.À chaque itération, j'affiche également le champ de texte où la quantité désirée doit être saisie .).

Mon principal problème est de trouver comment associer le nom du widget dessiné MYSQL à la quantité entrée par l'utilisateur et le stocker dans le panier. Est-ce que quelqu'un pourrait me pointer dans la bonne direction, je ne suis pas sûr de savoir comment aborder cela. Je pensais pouvoir faire écho au modèle de widget dans le champ de texte Id, mais comment puis-je déterminer après publication quel modèle avait une quantité ... Ce n'est probablement pas le meilleur moyen de le faire, même si C'était possible.

Merci

Répondre

4

font les noms de textfield quelque chose comme articles [uniq_module_id]

<input type="text" name="items[10001]"> 
<input type="text" name="items[10002]"> 
<input type="text" name="items[10003]"> 

puis en php

$items = $_POST['items']; 
print_r($items); 

vous obtiendrez

[items] => Array 
    (
     [uniq_module_id] => quantity 
      ... 
    ) 

et un échantillon

$items = (isset($_POST['items'])) ? $_POST['items'] : array(); 
if (is_array($items)) { 
    foreach ($items as $module_id => $quantity) 
    { 
     if (intval($quantity) > 0) { 
      add2cart($module_id, $quantity); 
     } 
    } 
} 
+0

Simple comme ça! :) – KOGI

+0

Alors ... laissez-moi comprendre ... la ligne $ items = $ _POST ['items']; enregistre tous les champs de texte avec les éléments [10001], [10002], 3, etc. et la quantité associée entrée par l'utilisateur? –

+0

yup. $ items sera un tableau avec module_id comme clé et quantité comme valeur. et si le champ de texte était vide, la quantité sera également vide. – arahaya

0

Y a-t-il un bouton ou un lien «ajouter au panier» à chaque widget? Générez un bouton/lien qui envoie les informations nécessaires (quantité et ID de widget) à un add-to-cart.php.

foreach ($rows as $row) { 
    // Print widget info 
    echo '<input type="text" name="quantity" id="widget_' . $row['widgetID'] . '_qty" value="1">'; 
    echo "<button onclick=\"javascript: location.href='add-to-cart.php?widgetId=" . $row['widgetID'] . "&quantity=' + document.getElementById('widget_" . $row['widgetId'] . "_qty').value;\" value=\"Add to cart\" />"; 
} 

Ou quelque chose de semblable. Utiliser Ajax serait peut-être aussi une bonne solution.

+0

Non, je pense que ce serait trop pour avoir un bouton d'ajout à chaque widget. Il semble logique d'avoir 1 ajouter pour la page entière. (Juste vu Star Trek ..:) Merci pour l'entrée –

+0

Assez juste :) Cependant, cette approche est très commune. –

Questions connexes