/ / Comment convertir les formats de téléphone, fax, code postal pour une entrée de base de données - php, jquery, sql, maskedinput

Comment convertir les formats de téléphone, fax, code postal pour l'entrée de base de données - php, jquery, sql, maskedinput

J'ai masqué des entrées pour le téléphone, le fax et le code postal. Le téléphone et le fax sont au format (999) 999-9999 et le code postal au format 99999-9999. Lorsque je soumets la page, la base de données attend un format différent. Lorsque je mets à jour la base de données, il me suffit de transmettre les valeurs numériques. Je dois convertir les formats avant de les transmettre à un INSERT SQL. Comment puis-je convertir le format affiché sur la page au format requis par la base de données?

La base de données attend les formats Téléphone et Fax tels que: 1234567890
et format de code postal comme: 123456789 (bien qu’il ne soit pas nécessaire que ce soit tous les 9 chiffres car la plupart des gens entrent des codes postaux avec seulement les 5 premiers chiffres)

Bien que les nombres ne soient pas convertis correctement, voici un jsFiddle http://jsfiddle.net/HMG28/

J'ai ajouté un bouton sur le jsFiddle qui vientajoute les résultats dans un div. Sur ma page réelle, le bouton Soumettre affiche les valeurs pour qu'elles puissent être consultées et transmises dans mon instruction INSERT. Je ne suis pas sûr de savoir si je devrais comprendre cela et que la conversion utilise jQuery ou dans ma section PHP. (PHP est ce que je pense être la bonne façon, mais je ne sais pas comment.)

Voici un extrait du code dans jsFiddle:

<label>Phone: </label><input type="text" id="phone" placeholder="(555) 555-5555" />
<label>Fax: </label><input type="text" id="fax" placeholder="(555) 555-5555" />
<label>Zip Code: </label><input type="text" id="zipcode" placeholder="Zip Code" />

$("#phone").mask("(999) 999-9999");
$("#fax").mask("(999) 999-9999");
$("#zipcode").mask("99999-9999");

Soit dit en passant, j’ai des noms sur les entrées pour que je puisse POST les valeurs, je ne l’ai pas ajouté dans cet exemple.

S'il vous plaît laissez-moi savoir s'il y a des informations supplémentaires nécessaires.

Réponses:

1 pour la réponse № 1

Les entrées masquées le rendent agréable pour la validation et l'interface utilisateur. mais les caractères "méta" dans la chaîne peuvent être facilement supprimés (votre base de données ressemble à ce dont elle a besoin). avec cela dit, deux variations:

PHP (méthode préférée, moindre possibilité d'interaction utilisateur):

// perform the cleanse server-side
$param = preg_replace("/([^d])/", "", $param);

JavaScript:

// perform the cleanse client-side
param = param.replace(/([^d])/g,"");

De toute façon, il vous restera 1234567890 pour un (123) 456-7890 numéro de téléphone et 123456789 pour un 12345-6789 Zip *: français. Vous voudrez peut-être aussi (après avoir enlevé les autres caractères) exécuter un test pour vous assurer que la longueur est égale à 10 et 9/5 pour un téléphone et un zip, respectivement. par exemple.

// NOTE: i"m not checking `$_POST` but you should...
$phone = preg_replace("/([^d])/", "", $_POST["phone"]);
$fax   = preg_replace("/([^d])/", "", $_POST["fax"]);
$zip   = preg_replace("/([^d])/", "", $_POST["zip"]);

if (strlen($phone) == 10
&& strlen($fax) == 10
&& (strlen($fax) == 5 || strlen($fax) == 9)){
// proceed with inserting the three values in to the databasse;
// they are now clean and are of the proper lengths.
}

Violon mis à jour