Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL/PHP] ignorowane znaki
Forum PHP.pl > Forum > PHP
proklin
Witam

Chcę zrobić wyświetlanie użytkowników należących do danych grup na swojej stronie.

Problem tkwi w tym że w tabeli z userami jest komurka w której zawarte są id grup w której jest dany użytkownik

Np. jeśli jest w dwuch grupach .1 i .2 to w komurce jest zapisane tak .1.2

I jeśli jest 

Kod
$result = dbquery("SELECT * FROM ".$db_prefix."users".$orderby." WHERE user_groups = .1  ORDER BY user_groups DESC, user_name LIMIT $rowstart,20");


po wpisaniu odpowiedniego kodu wyświetla mi tylko użytkowników będących w jednej grupie, jesli ktoś jest w 2 np. tak jak napisałem wcześniej ma zawartość komurki .1.2 to już nie jest wyświetlany.

Myślałęm żeby zrobić coś żeby ignorował znaki przed i po .1 ale nie mogę nigdzie tego znalec ani samemu napisac, słyszałem że można połączyć to ze skrpytem java ale na javie się kompletnie nie znam.

więc postanowiłem poprosić o pomoć na forum może akurat komuś się uda pomóc



(strona jest na Extreme fusion)

Z góry THX
wookieb
Jezeli wstawisz dane do bazy w takiej postaci .1.2 tzn ze jest to tekst i w zapytaniu ujmij go w "" albo w ''
proklin
jesli robie tak

Kod
$result = dbquery("SELECT * FROM ".$db_prefix."users".$orderby." WHERE user_groups = '.1'  ORDER BY user_groups DESC, user_name LIMIT $rowstart,20");


to nie wyświetla się nic



Nie wiem może źle się zrozumieliśmy ja chcę wyświetlić użytkowników mających w user_groups gdzieś między znakami .1  (może być samo 1)

Czasami znaki są przed .1 czasami za a czasami przed i za...
wookieb
  1. pole REGEXP '\.1[^0-9]'

Przy dużej ilości userów nie bedzei to optymalne i wtedy stosuje sie oddzielna tabele
o takich np polach
id,id_user,id_grupy i dodajesz tam kolejny rekordy. 1 przynaleznosc do grupy to jeden rekord.
kefirek
To zobacz moze tak
  1. <?php
  2. $result = dbquery("SELECT * FROM ".$db_prefix."users".$orderby." WHERE user_groups REGEXP('^.1$|.1.|.1$')  ORDER BY user_groups DESC, user_name LIMIT $rowstart,20");
  3. ?>


Albo
  1. <?php
  2. $id=1;
  3. $result = dbquery("SELECT * FROM ".$db_prefix."users".$orderby." WHERE user_groups REGEXP('^.({$id})$|.({$id}).|.({$id})$')  ORDER BY user_groups DESC, user_name LIMIT $rowstart,20");
  4. ?>
proklin
Ok działa dzięki za szybką odpowiedź



(nie zapominam o "pomógł" tongue.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.