Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Jak sprawdzić numer telefonu
redelek
post
Post #1





Grupa: Zarejestrowani
Postów: 658
Pomógł: 37
Dołączył: 4.06.2005
Skąd: Wawa

Ostrzeżenie: (0%)
-----


Witam,

Mam formularz w którym jest pole numer telefonu.
Chcę go tak ustawić, że jeżeli jest pusty wstawia wartość domyślną do bazy. Jeśli coś jest wpisane choć by jeden znak zaczyna sprawdzać czy jest
telefon poprawnie wpisany.

To moja kombinacja

  1. <?php
  2. if (strlen($tel)==0) {
  3. $tel='(022)622-22-22';
  4. }else{
  5. if (strlen($tel)<14 or strlen($tel)>14
  6.  or !eregi("^[0-9()-]+$",$tel)) { $blad++;
  7. echo "<span style=\"color:red;\">Błąd w podawaniu numeru telefonu. Przykład: (022)622-22-22</span><br />";
  8. }
  9.  
  10. }
  11. ?>


Prawie działa, nie sprawdza mi czy są nawiasy i myślniki tylko liczy do 14 cyfr.
Macie może jakiś na to pomysł ?

Pozdrawiam
Redelek


--------------------
Pozdrawiam
Piotrek R
Go to the top of the page
+Quote Post
piotrekkr
post
Post #2





Grupa: Zarejestrowani
Postów: 386
Pomógł: 25
Dołączył: 28.09.2005

Ostrzeżenie: (0%)
-----


  1. <?php
  2. preg_match('/(0[1-9]{2})[0-9]{3}-[0-9]{2}-[0-9]{2}/', $tel);
  3. ?>


Ten post edytował piotrekkr 11.07.2008, 13:07:30
Go to the top of the page
+Quote Post
redelek
post
Post #3





Grupa: Zarejestrowani
Postów: 658
Pomógł: 37
Dołączył: 4.06.2005
Skąd: Wawa

Ostrzeżenie: (0%)
-----


Cytat(piotrekkr @ 11.07.2008, 12:06:59 ) *
  1. <?php
  2. preg_match('/(0[1-9]{2})[0-9]{3}-[0-9]{2}-[0-9]{2}/', $tel);
  3. ?>


Zrobiłem jak pokazałeś
  1. <?php
  2. if (strlen($tel)==0) {
  3. $tel='(022)622-22-22';
  4. }else{
  5. if (strlen($tel)>0
  6.  or preg_match('/(0[1-9]{3})[0-9]{3}-[0-9]{2}-[0-9]{2}/', $tel)) { $blad++;
  7. echo "<span style=\"color:red;\">Błąd w podawaniu numeru telefonu. Przykład: (022)622-22-22</span><br />";
  8. }
  9.  
  10. }
  11. ?>

to w ogóle mnie nie chce puścić i wyświetla błąd cały czas.
Sorki może już za długo nad tym siedzę i już prostych rzeczy nie widzę smile.gif

Ten post edytował redelek 11.07.2008, 13:42:00


--------------------
Pozdrawiam
Piotrek R
Go to the top of the page
+Quote Post
Shili
post
Post #4





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

Ostrzeżenie: (0%)
-----


Kod
preg_match('/\(0[1-9]{2}\)[0-9]{3}-[0-9]{2}-[0-9]{2}/', $tel))
?
Go to the top of the page
+Quote Post
piotrekkr
post
Post #5





Grupa: Zarejestrowani
Postów: 386
Pomógł: 25
Dołączył: 28.09.2005

Ostrzeżenie: (0%)
-----


  1. <?php
  2. if (strlen($tel)==0) {
  3. $tel='(022)622-22-22';
  4. }else if(!preg_match('/(0[1-9]{3})[0-9]{3}-[0-9]{2}-[0-9]{2}/', $tel)) { 
  5. $blad++;
  6. echo "<span style=\"color:red;\">Błąd w podawaniu numeru telefonu. Przykład: (022)622-22-22</span><br />";
  7. }
  8.  
  9. ?>


Ten post edytował piotrekkr 11.07.2008, 13:54:35
Go to the top of the page
+Quote Post
bogdan89
post
Post #6





Grupa: Zarejestrowani
Postów: 320
Pomógł: 36
Dołączył: 28.08.2006
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


ja w ramach tego tematu chciałem dodać tylko, że wygodniej (moim zdaniem) robić takie sprawdzanie w JavaScript przed wysłaniem formularza... bo co jeśli wszystko inne jest wpisane ok, a numer tel. jest zly...? W takim przypadku (jesli tworzona strona ma byc "dla uzytkownika") musisz przechowywac gdzies ta reszte danych, zeby za kazdym razem kiedy sie gdzies nieznacznie ktos pomyli, nie musial wpisywac wszystkich danych od początku... Pomysl o tym i wybierz wygodniejsze rozwiazanie...
Go to the top of the page
+Quote Post
redelek
post
Post #7





Grupa: Zarejestrowani
Postów: 658
Pomógł: 37
Dołączył: 4.06.2005
Skąd: Wawa

Ostrzeżenie: (0%)
-----


Cytat(piotrekkr @ 11.07.2008, 12:49:41 ) *
  1. <?php
  2. if (strlen($tel)==0) {
  3. $tel='(022)622-22-22';
  4. }else if(!preg_match('/(0[1-9]{3})[0-9]{3}-[0-9]{2}-[0-9]{2}/', $tel)) { 
  5. $blad++;
  6. echo "<span style=\"color:red;\">Błąd w podawaniu numeru telefonu. Przykład: (022)622-22-22</span><br />";
  7. }
  8.  
  9. ?>


Za cholerę nie idzie cały czas zwraca mi błąd ten mój oczywiści


--------------------
Pozdrawiam
Piotrek R
Go to the top of the page
+Quote Post
piotrekkr
post
Post #8





Grupa: Zarejestrowani
Postów: 386
Pomógł: 25
Dołączył: 28.09.2005

Ostrzeżenie: (0%)
-----


obcielo '\' znak na forum nie wiem czemu wklej sobie takie cos :
Kod
/\(0[1-9]{3}\)[0-9]{3}-[0-9]{2}-[0-9]{2}/
Go to the top of the page
+Quote Post
redelek
post
Post #9





Grupa: Zarejestrowani
Postów: 658
Pomógł: 37
Dołączył: 4.06.2005
Skąd: Wawa

Ostrzeżenie: (0%)
-----


Cytat(piotrekkr @ 11.07.2008, 12:59:04 ) *
obcielo '\' znak na forum nie wiem czemu wklej sobie takie cos :
Kod
/\(0[1-9]{3}\)[0-9]{3}-[0-9]{2}-[0-9]{2}/



Nadal nie puszcza. Zrobiłem już oddzielny plik bo może w moim skrypcie coś jest pokopane, ale jest to samo

  1. <?php
  2.  
  3. $tel='(022)666-44-47';
  4. if (strlen($tel)>0
  5.  || preg_match("/(0[1-9]{3})[0-9]{3}-[0-9]{2}-[0-9]{2}/",$tel)) { $blad++;
  6. echo "<span style=\"color:red;\">Błąd w podawaniu numeru telefonu. Przykład: (022)622-22-22</span><br />";
  7. }else{
  8.  
  9. echo "GOOOD!!!!";
  10. }
  11.  
  12.  ?>


--------------------
Pozdrawiam
Piotrek R
Go to the top of the page
+Quote Post
Shili
post
Post #10





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

Ostrzeżenie: (0%)
-----


Kurcze, przeanalizowałam od samego początku i masz całkowicie kopnięty warunek.

  1. <?php
  2. if (strlen($tel)>0
  3.  || preg_match("/(0[1-9]{3})[0-9]{3}-[0-9]{2}-[0-9]{2}/",$tel))
  4. ?>

Jeśli długość jest większa od zera lub ciąg pasuje do wyrażenia wyświetlasz błąd!

  1. <?php
  2.  
  3. $tel='(022)666-44-47';
  4. if (strlen($tel)<=|| !preg_match("/(0[1-9]{2})[0-9]{3}-[0-9]{2}-[0-9]{2}/",$tel)) {
  5. $blad++;
  6. echo "<span style=\"color:red;\">Błąd w podawaniu numeru telefonu. Przykład: (022)622-22-22</span><br />";
  7. }
  8. else{
  9. echo "GOOOD!!!!";
  10. }
  11.  
  12.  ?>


@edit
Swoją drogą przy tak sformułowanym wyrażeniu regularnym możesz sobie spokojnie podarować sprawdzanie długości, wyrażenie też to robi winksmiley.jpg

@edit2
Zeżarło mi backslashe

Ten post edytował Shili 11.07.2008, 15:06:10
Go to the top of the page
+Quote Post
redelek
post
Post #11





Grupa: Zarejestrowani
Postów: 658
Pomógł: 37
Dołączył: 4.06.2005
Skąd: Wawa

Ostrzeżenie: (0%)
-----


Cytat(Shili @ 11.07.2008, 13:37:56 ) *
Jeśli długość jest większa od zera lub ciąg pasuje do wyrażenia wyświetlasz błąd!

Odwrotnie też próbowałem i jest taki sam efekt wyświetla się GOOD cały czas nawet jak jest śle

  1. <?php
  2.  
  3. $tel='(022)663-84-47';
  4.  
  5. if (strlen($tel)>|| !preg_match("/(0[1-9]{3})[0-9]{3}-[0-9]{2}-[0-9]{2}/",$tel)) {
  6.  
  7. echo "GOOOD!!!!";
  8.  
  9. }else{
  10. echo "<span style=\"color:red;\">Błąd w podawaniu numeru telefonu. Przykład: (022)622-22-22</span><br />";
  11.  
  12.  
  13. }
  14. ?>


--------------------
Pozdrawiam
Piotrek R
Go to the top of the page
+Quote Post
Shili
post
Post #12





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

Ostrzeżenie: (0%)
-----


Zwróciłeś uwagę na różnice między moim kodem, a Twoim?

Kurcze, trochę logicznego myślenia - przetłumaczę Twój warunek i potem swój:
Kod
if (strlen($tel)>0 || !preg_match("/\(0[1-9]{3}\)[0-9]{3}-[0-9]{2}-[0-9]{2}/",$tel)) {
Jeśli długość jest większa od zera lub wyrażenie nie pasuje do regExpa wyświetl good.

Lub znaczy że przynajmniej jeden z tych warunków jest spełniony - u Ciebie jest, bo długość jest większa od zera i notabene wyrażenie nie pasuje do wzorca.

Kod
  if (strlen($tel)<=0 || !preg_match("/\(0[1-9]{2}\)[0-9]{3}-[0-9]{2}-[0-9]{2}/",$tel)) {
Jeśli długość jest równa zeru (lub mniejsza, z rozpędu mi się napisało) lub wyrażenie nie pasuje do wzorca wyświetl błąd.

Jeśli przynajmniej jedno z tych nie jest spełnione - wyświetlany jest błąd.
Ale nie baw się w te ory, andy i tak dalej, a wyrzuć spokojnie sprawdzanie długości. Niepotrzebne jest. I przeanalizuj przykłady

Ten post edytował Shili 11.07.2008, 15:06:21
Go to the top of the page
+Quote Post
redelek
post
Post #13





Grupa: Zarejestrowani
Postów: 658
Pomógł: 37
Dołączył: 4.06.2005
Skąd: Wawa

Ostrzeżenie: (0%)
-----


Cytat(Shili @ 11.07.2008, 13:57:03 ) *
Zwróciłeś uwagę na różnice między moim kodem, a Twoim?

Kurcze, trochę logicznego myślenia - przetłumaczę Twój warunek i potem swój:
Kod
if (strlen($tel)>0 || !preg_match("/\(0[1-9]{3}\)[0-9]{3}-[0-9]{2}-[0-9]{2}/",$tel)) {
Jeśli długość jest większa od zera lub wyrażenie nie pasuje do regExpa wyświetl good.

Lub znaczy że przynajmniej jeden z tych warunków jest spełniony - u Ciebie jest, bo długość jest większa od zera i notabene wyrażenie nie pasuje do wzorca.

Kod
  if (strlen($tel)<=0 || !preg_match("/(0[1-9]{2})[0-9]{3}-[0-9]{2}-[0-9]{2}/",$tel)) {
Jeśli długość jest równa zeru (lub mniejsza, z rozpędu mi się napisało) lub wyrażenie nie pasuje do wzorca wyświetl błąd.

Jeśli przynajmniej jedno z tych nie jest spełnione - wyświetlany jest błąd.
Ale nie baw się w te ory, andy i tak dalej, a wyrzuć spokojnie sprawdzanie długości. Niepotrzebne jest. I przeanalizuj przykłady


Troszkę nie ( przepraszam ), ale nawet Twój kod nie działa, cały czas wyświetla błąd pomimo podania poprawnego numeru

OOO działa TROSZKĘ POPRAWIŁEM I DZIAŁA. DZIĘKI PANOWIE ZA POMOC I ZA ZAINTERESOWANIE exclamation.gif!!!

Ten post edytował redelek 11.07.2008, 15:10:49


--------------------
Pozdrawiam
Piotrek R
Go to the top of the page
+Quote Post
Shili
post
Post #14





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

Ostrzeżenie: (0%)
-----


U mnie nie wyświetla błędu.

Jeszcze raz
  1. <?php
  2.  
  3. $tel='(022)666-f44-47';
  4. if (!preg_match("/(0[1-9]{2})[0-9]{3}-[0-9]{2}-[0-9]{2}/",$tel)) {
  5. $blad++;
  6. echo "<span style=\"color:red;\">Błąd w podawaniu numeru telefonu. Przykład: (022)622-22-22</span><br />";
  7. }
  8. else{
  9. echo "GOOOD!!!!";
  10. }
  11.  
  12.  ?>

Sprawiłam parę razy u siebie - teraz wyświetli błąd, bo numer jest niepoprawny. Jak usuniesz to f wyświetli good. Przynajmniej na moim serwerze
Go to the top of the page
+Quote Post
redelek
post
Post #15





Grupa: Zarejestrowani
Postów: 658
Pomógł: 37
Dołączył: 4.06.2005
Skąd: Wawa

Ostrzeżenie: (0%)
-----


Cytat(Shili @ 11.07.2008, 14:08:27 ) *
U mnie nie wyświetla błędu.

Jeszcze raz
  1. <?php
  2.  
  3. $tel='(022)666-f44-47';
  4. if (!preg_match("/(0[1-9]{2})[0-9]{3}-[0-9]{2}-[0-9]{2}/",$tel)) {
  5. $blad++;
  6. echo "<span style=\"color:red;\">Błąd w podawaniu numeru telefonu. Przykład: (022)622-22-22</span><br />";
  7. }
  8. else{
  9. echo "GOOOD!!!!";
  10. }
  11.  
  12.  ?>

Sprawiłam parę razy u siebie - teraz wyświetli błąd, bo numer jest niepoprawny. Jak usuniesz to f wyświetli good. Przynajmniej na moim serwerze


Dzięki już działa

  1. <?php
  2. $tel='022)666-44-47';
  3. if (strlen($tel)<=|| preg_match("/(0[1-9]{2})[0-9]{3}-[0-9]{2}-[0-9]{2}/",$tel)) {
  4. //$blad++;
  5. //echo "<span style=\"color:red;\">Błąd w podawaniu numeru telefonu. Przykład: (022)622-22-22</span><br />";
  6. echo "GOOOD!!!!";
  7. }
  8. else{
  9. $blad++;
  10. echo "<span style=\"color:red;\">Błąd w podawaniu numeru telefonu. Przykład: (022)622-22-22</span><br />";
  11. }
  12.  
  13.  ?>

Tak działa jak złoto exclamation.gif!! nie ma jednego minusa i wywala błąd DZIĘKI


--------------------
Pozdrawiam
Piotrek R
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 04:49