/ / Jak konwertować formaty telefonu, faksu, kodu pocztowego do wprowadzania danych - php, jquery, sql, maskedinput

Jak konwertować formaty telefonu, faksu, kodu pocztowego dla wpisu do bazy danych - php, jquery, sql, maskedinput

Mam zamaskowane dane dla telefonu, faksu i kodu pocztowego. Telefon i faks są sformatowane jak (999) 999-9999, a kod pocztowy jest sformatowany jak 99999-9999. Kiedy przesyłam stronę, baza danych oczekuje innego formatu. Kiedy aktualizuję bazę danych, muszę tylko podać wartości liczbowe. Muszę przekonwertować formaty przed przekazaniem ich do SQL INSERT. Jak przejść do konwersji formatu wyświetlanego na stronie na format wymagany przez bazę danych?

Baza danych oczekuje formatów telefonu i faksu, takich jak: 1234567890
i kod pocztowy, taki jak: 123456789 (chociaż nie musi to być wszystkie 9 cyfr, ponieważ większość osób wprowadza kody pocztowe tylko z pierwszymi 5 cyframi)

Chociaż nie konwertuje liczb poprawnie, oto jsFiddle http://jsfiddle.net/HMG28/

Dodałem przycisk do jsFiddle, który właśniedołącza wyniki do div. Na mojej prawdziwej stronie, która jest przyciskiem Prześlij, który publikuje wartości, aby można było uzyskać do nich dostęp i przekazać je w mojej instrukcji INSERT. Nie jestem pewien, czy powinienem to złapać, a konwersja korzysta z jQuery lub w mojej sekcji PHP. (PHP jest moim zdaniem właściwym sposobem, po prostu nie wiem jak)

Oto fragment kodu w 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");

Na marginesie, mam nazwy na wejściach, więc mogę POST wartości, po prostu nie dodałem go w tym przykładzie.

Daj mi znać, jeśli będą potrzebne dodatkowe informacje.

Odpowiedzi:

1 dla odpowiedzi № 1

Zamaskowane dane wejściowe ułatwiają sprawdzanie poprawności i interfejs użytkownika. ale znaki „meta” w ciągu można łatwo usunąć (tak wygląda baza danych). powiedziawszy to, dwie odmiany:

PHP (preferowana metoda, najmniejsza możliwość interakcji użytkownika):

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

JavaScript:

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

Tak czy inaczej zostaniesz 1234567890 dla (123) 456-7890 numer telefonu i 123456789 dla 12345-6789 zamek błyskawiczny. Możesz także (po usunięciu innych znaków) przeprowadzić test, aby upewnić się, że długość wynosi odpowiednio 10 i 9/5 dla telefonu i zamka. na przykład

// 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.
}

Fiddle Zaktualizowano