Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: REGEXP - wyrażenie regularne
Forum PHP.pl > Forum > Bazy danych > MySQL
areli
czy może ktoś mi pomóc napisać odpowiednie wyrażenie regularne? no chyba, że można zrobić to jakoś lepiej

mam w bazie danych kontrahentów i jedna kolumna, to AvailableContractors czyli kontrahenci udostępnieni... opcjonalnie jest puste, a za każdym razem gdy dany kontrahent zostaje udostępniony konkretnemu użytkownikowi, dopisuje się jego ID + 'hasz' jako znak oddzielający, tj.
12#1#61#

w jaki sposób wyszukać danego kontrahenta?

  1. '.$db->nameQuote("contractors.AvailableContractors").' REGEXP '.$db->quote($IDUser).'


taki zapis oczywiście nie jest właściwy, bo $IDUser=1 jest zgodny z #21#1#17 itd.

można tak:

  1. '.$db->nameQuote("contractors.AvailableContractors").' REGEXP '.$db->quote("(\#)($IDUser)(\#)").'


ale pierwszy zapis nigdy nie zawiera z lewej strony znaku hasz, bo przy udostępnianiu musiałbym najpierw sprawdzać czy w bazie istnieje jakikolwiek zapis i jeśli nie, to dodać user'a z 2 znakami hasz... zbędna zabawa... wolałbym rozwiązać to wyrażeniami, tj. z lewej hasz lub NIC, z prawej hasz.

próbowałem tak: (\#?) - ale to znaczy hasz lub nie, ale jeśli nie hasz to również może być inny znak, np. #21#1#17 itd.

---------- czy to takie trudne, że nikt na forum nie wie? :/ ----------
mortus
Może tak:
  1. $db->quote("(".$IDUser.")\#");
areli
no właśnie tak nie dział, bo jeśli IDUser = 1, to będzie poprawne również to:

56464561#
271#
41#

itd.

rozwiązałem to tak:

  1. OR
  2. (
  3. '.$db->nameQuote("contractors.AvailableContractors").' REGEXP '.$db->quote("(\#)($IDUser)(\#)").'
  4. OR
  5. '.$db->nameQuote("contractors.AvailableContractors").' REGEXP '.$db->quote("^($IDUser)(\#)").'
  6. )
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.