Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Porównywanie NIP z formularza i tabeli
Forum PHP.pl > Forum > Bazy danych > MySQL
pawel007
Witam!

Tak jak w temacie potrzebuję porównać numer NIP z bazy z tym ktory jest przesyłany z formularza, w celu weryfikacji czy użytkownik znajduje się uż w systemie - jesli tak to błąd jeśli nie to sukces.

Oczywiście nie mam z tym problemu:) Problem natomiast pojawia się w momencie gdy w bazie chcę przetrzymywać NIP w wersji oryginalnej - czyli z kreskami (w różnych układach - czyli tak jak wpisze uzytkownik) i następnie przy rejestracji kolejnego użytkownika chce porownać czy taki NIP nie znajduje się w bazie.

Jak to zrobić?

Próbowałem poprzez skrypt php:
1) pobranie wszystkich nip-ów z bazy do tablicy
2) usunięcie kresek z nipów
3) porownanie każdego elementu z tablicy z nipem z formularza

Próbuje od kilku chwil zbudować zapytanie, które zniweluje powyższy sposób i rozwiąże problem poprzez jedno zapytanie.

Proszę o pomoc w konstrukcji zapytania , jeśli jest to oczywiście rozwiązywalne.
dr_bonzo
1. w bazie zapisujesz nip bez zadnych kresek, spacji itp
2. przyd porownaniem, nip od usera sprowadzasz do postaci samych cyfr
3. i po problemie

no i nie ma problemu zeby zrobic

select na bazie where nip = $nip_bez_kresek
pawel007
Cytat
1. w bazie zapisujesz nip bez zadnych kresek, spacji itp


Własnie tak już zrobiłem, a chce mieć z kreskami i dalej porównywać.
devnul
skoro tak zrobiles to zakładam ze masz jakis konkretny format kreskowania (skoro tak to sprowadzasz nip do tego formatui na tym się sprawa konczy). wystarczy wtedy jak wyzej sprowadzic nip usera do tego samego formatu kreskowania
najtje
Ten sposób który proponuje kolega jest dobry ale jak bardzo chcesz możesz wykonać select'a na podstawie wyrażenia regularnego.
Tutaj http://dev.mysql.com/doc/refman/5.0/en/regexp.html znajdziesz info niestety nie podam Ci gotowej formułki ale jak to Ci się uda to będziesz miał zapytanie postaci:
  1. SELECT * FROM users WHERE nip REGEXP '209(.?)00{1}16{1}700'

I to powinno ci zwrócić wiersz.wskazujący użytkownika.
pawel007
Dzięki devnul - w sumie naprowadzileś mie na rozwiązanie.

Nie potrzebnie kombinowałem z zapytaniem skoro mogę przetrzymywać bez kresek w bazie a w przypadku późniejszego wyświetlania "nakładać" na NIP maskę z kreskami i sprawa rozwiązana.

biggrin.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.