2009-01-23 9 views
0

J'essaye actuellement de valider un côté de serveur de formulaire, la façon dont cela fonctionne est toutes les données sont placées dans et tableau, avec le champ de formulaire comme clé et les données de champ comme valeur, cependant je dois vérifier que les clés ont une valeur associée à l'autre, je veux que la soumission s'arrête et que l'utilisateur doive éditer les détails et puis re-soumettre, est-ce qu'il y a une vérification rapide que je peux exécuter plutôt que séparer le tableau et vérifier avant est mis dans le tableau avec un commutateur ou perd des déclarations if?Validez chaque élément d'un tableau?

Répondre

0

Une option consiste à faire un peu des deux. Avoir un tableau séparé d'options de champ avec le nom du champ en tant que clé.

$fieldTypes = array('nameFirst' => 'name', 
        'nameLast' => 'name', 
        'phone'  => 'phone', 
        'email'  => 'email'); 
foreach($input as $key => $value) { 
    switch($fieldTypes[$key]) { 
     case 'name': 
      //run $value against name validation 
      break; 
     case 'phone': 
      //run $value against phone validation 
      break; 
     case 'email': 
      //run $value against email validation 
      break; 
     default: 
      //code here for unknown type 
    } 
} 

Maintenant, qui pourrait être utilisé dans un certain nombre de façons, et facilement élargi pour inclure des choses comme si le champ est nécessaire ou non, ou même des messages d'erreur. En transformant le tableau $fieldTypes en un tableau multidimensionnel ou un tableau d'objets contenant les données. De cette façon, si vous décidez d'ajouter un champ, cela n'impliquera probablement pas beaucoup de changement dans le code de validation.

0

Que diriez-vous quelque chose comme

<?php 
$arrayFilled = true; 
foreach($array as $key=>$value) { 
    $arrayFilled = trim($value) == '' ? false : $arrayFilled; 
    if($arrayFilled === false) { break; } 
} 
if($arrayFilled === false) { 
    echo "missing data"; 
} 
else { 
    echo "filled array"; 
} 

vous pouvez vérifier plus que juste une chaîne vide, mais je vais laisser vous

+0

Pourriez-vous tabuler vos lignes? – Sampson

+0

Meh! n'a pas appuyé sur l'espace assez de fois ... – Anthony

+0

@Anthony - Merci, homme :) Code plus propre = lecteurs plus heureux. – Sampson

1

Sico87,

Plus de qu'autrement vous ne veut pas tester tous les champs simultanément. Par exemple, vous pouvez avoir un champ de contact qui contient une option d'entrée de numéro de téléphone qui n'est pas obligatoire, et le rejet de la soumission pour cette raison serait problématique.

Dans de nombreux cas, il est plus facile de tester vos champs individuellement afin de pouvoir accorder à chacun une attention particulière. Vous devez accorder une attention particulière aux adresses e-mail et accorder une attention particulière aux anniversaires.

Traiter tous les égaux pourrait causer de très graves problèmes à long terme.

1
function fieldEmpty($value) { 
    return trim($value) == ''; 
} 

if (count(array_filter($array, 'fieldEmpty'))) { 
    die('bad'); 
} 
Questions connexes