2012-03-29 1 views
1

J'ai besoin de conseils avant de commencer. Mes compétences en PHP ont seulement 3 mois, donc j'apprends comme je vais.PHP Order Capture Portal

Je dois créer un écran de capture d'ordre qui capture les informations dans une base de données.

Le bon de commande peut contenir jusqu'à 150 lignes qui doivent toutes être capturées.

Je peux créer la forme assez facile mais je me demande quelle est la meilleure façon d'écrire ceci à la base de données.

sur la présentation, je peux obtenir les valeurs de formulaire en utilisant la méthode post et les écrire à MySQL avec:

INSERT INTO example 
    (example_id, name, value, other_value) 
VALUES 
    (100, 'Name 1', 'Value 1', 'Other 1'), 
    (101, 'Name 2', 'Value 2', 'Other 2'), 
    (102, 'Name 3', 'Value 3', 'Other 3'), 
    (103, 'Name 4', 'Value 4', 'Other 4'); 

Y at-il une méthode plus rationaliser de faire ceci ou dois-je répéter le code pour 150 lignes?

Répondre

1

Du point de vue de la facilité d'utilisation, vous voudrez peut-être revoir la conception de votre formulaire. Si l'utilisateur remplit 149 lignes du formulaire de commande et frappe accidentellement le bouton de retour, ils vont avoir une très mauvaise journée. Vous devriez peut-être envisager de capturer une seule ligne à la fois, ou de permettre à l'utilisateur de télécharger un fichier (feuille de calcul, CSV, etc.) contenant toutes les entrées.

Si vous ne pouvez pas modifier la conception du formulaire, vous devez traiter les lignes dans une boucle. La boucle peut ressembler à ceci:

for ($i = 1; $i <=150; $i++) { 
    $name = $_POST['name' . $i]; 
    $value = $_POST['value1' . $i]; 
    // capture the rest of the field values 
    $query = "INSERT INTO (...) VALUES ($name, $value, ...)"; 
    mysql_query($query); 
} 

Alternativement, vous pouvez ajouter le résultat de chaque boucle à une grande requête, et l'exécuter après avoir capturé les 150 lignes.

Par souci de concision, j'ai laissé quelques détails que vous devez ajouter:

  • échapper à vos entrées pour vous assurer que votre utilisateur ne corrompt pas la base de données
  • Pensez à utiliser AOP ou autre chose que mysql_ * pour faciliter l'utilisation de votre base de données.
  • Assurez-vous de ne pas capturer et d'insérer des valeurs vides si une ligne est laissée vide.