2010-12-04 8 views
1

Je suis en train de créer un assistant de formulaire et j'ai besoin de conseils sur la manière la plus efficace d'aborder la validation de nombreuses données entrantes provenant de plusieurs formulaires. Mon approche originale consistait à exécuter les données entrantes via une fonction de validation qui vérifiait les valeurs propres à cette forme et s'assurait que les champs obligatoires étaient présents, les noms/valeurs d'entrée corrects sont fournis pour certains formulaires, les e-mails sont valides pour certains champs, des entiers pour d'autres etc. mais mon code a commencé à sembler hors de contrôle. Je me demande si je devrais utiliser une base de données pour ce genre de chose, car j'ai une grande variété de données utilisateur qui arrivent dans mon application.Validation de données par lots en PHP

Fondamentalement, un utilisateur peut sélectionner trois chemins différents, et chaque chemin a un minimum de 3 étapes et un maximum de 6 étapes, selon le chemin choisi.

Je peux vraiment structurer cela de quelque façon que ce soit, tant que cela a du sens. Je suis ouvert aux solutions PHP natives ou à la connexion à une base de données.

Je suis extrêmement reconnaissant pour toutes les suggestions.

+0

C'est un peu subjectif. Si la performance est un problème, restez loin de la base de données. ** Hors de contrôle? **, vous devez reconsidérer comment les choses se font sur votre application existante – ajreal

+0

Je ne suis pas sûr exactement ce que vous voulez dire avec ce commentaire. –

Répondre

1

Si je comprends bien votre problème provient de la grande variété de les données que vous devez fournir, et que vérifier dans chaque élément d'entrée qui est traité? Une manière serait de configurer vos fonctions de validation pour chaque type de validation (par ex. Texte requis, numéro, téléphone, email, etc.) et de spécifier dans les éléments de formulaire eux-mêmes dans le HTML quoi vérifier dans chacun, l'analyse sur la soumission. Vous devrez utiliser le champ name de <input> car à part le value c'est la seule autre chose soumise avec un formulaire.

Disons que vous avez un champ phonenumber requis. Vous pouvez l'écrire en HTML en tant que tel:

<input type="text" name="officephone[required_phonenumber]" value=""> 

Ensuite, vous devez analyser correctement dans le script de soumission où il serait $_POST['officephone']['required_phonenumber'], et sur la base que vous savez ce que validateurs à courir sur sa valeur .

Ceci est une sorte de manière grossière qui pourrait suffire si vous devez autoriser la dénomination libre des entrées par l'utilisateur. Votre assistant de formulaire ajoutera simplement les balises de validation appropriées au nom en fonction des besoins de l'utilisateur. Sur une note plus générique sur la soumission de formulaire, comme sur tout ce que l'utilisateur final peut soumettre manuellement sur POST, sachez que les noms d'entrée peuvent être falsifiés pour obtenir une validation différente ou pas validée du tout en changeant le validateur Mots clés.

Idéalement, vous n'autoriserez que des entrées spécifiquement nommées (avec éventuellement un identifiant unique qui leur est suffixé), et la dénomination comportera la validation appropriée.Par exemple, votre assistant de formulaire peut nommer des entrées en tant que tel:

<input type="text" name="phone_1" value=""> 

et votre processeur formulaire saura que tout ce qui commence par « téléphone » devrait être validé en tant que numéro de téléphone, puis utilisé en conséquence. De cette façon, vous n'avez pas besoin de montrer comment vous validez les données dans votre code HTML.

+0

Merci pour votre réponse. Je suis familier avec cette méthode, mais comme vous l'avez mentionné, ce n'est pas infaillible. Le plus gros problème que j'ai est la quantité de données fournies par l'utilisateur. Je sais comment valider un flux d'informations quand il s'agit d'un nom, email, numéro de téléphone etc., mais l'utilisateur a la possibilité de soumettre ~ 30 options différentes , et ils ne sont pas nécessairement faciles à regrouper - certains ont une limite char, d'autres sont requis, d'autres ne sont autorisés à avoir une valeur booléenne, etc. J'ai besoin d'une solution qui fonctionne sur une plus grande échelle –

+0

Vous aurez Pour les regrouper le mieux possible, puis trouver un moyen d'indiquer les validateurs à appliquer à chaque entrée, soit par des balises dans les éléments HTML comme ci-dessus, soit par un habile nommage des éléments. Dans tous les cas, votre processeur de formulaires doit connaître les données entrantes, soit en devinant les données elles-mêmes, soit en utilisant les conseils que vous fournirez. Je ne suis pas sûr de savoir comment je peux aider autre chose. – Fanis

+0

J'apprécie votre contribution, je vais probablement utiliser votre conseil et aller avec un tableau dans le code HTML. Merci –

0

Je posterai une réponse, j'espère que cela aiderait;

<?php 

if(isset($_POST)) { 
    foreach ($_POST as $key => $val) { 
    if ($val == "") { 
     echo "u no leave null main"; 
    } else if ($key == "name" && $val == "restricted_value") { 
     echo "you are not permited"; 
    } 
    } 
} 
?> 

avec cela, vous pouvez vérifier chaque valeur, puis, exécutez la requête ... je sais pas combien il aide

+0

J'apprécie l'effort, mais mon scénario est beaucoup plus complexe que vos comptes de réponse fournis pour –