pawel007
11.10.2007, 16:40:03
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
11.10.2007, 17:04:11
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
11.10.2007, 17:37:05
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
11.10.2007, 17:59:29
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
11.10.2007, 18:03:52
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:
SELECT * FROM users WHERE nip REGEXP '209(.?)00{1}16{1}700'
I to powinno ci zwrócić wiersz.wskazujący użytkownika.
pawel007
11.10.2007, 18:08:51
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.
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.