![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 237 Pomógł: 1 Dołączył: 15.10.2004 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Mam taki problem, otóż pobieram z jednej tabeli bazy danych MySQL rekord, który przykładowo wygląda tak:
"11 , 14" Potem pobieram z drugiej tabeli konkretne id np 1 czy 11 I chce sprawdzić czy to konkretne id zawiera się w tym 'grupowym'
No, ale wówczas skrypt 'myśli', że zarówno 1 jak i 11 się zawiera, choć tylko ten drugi jest. Pytanie moje, jak to rozwiązać? |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 726 Pomógł: 129 Dołączył: 10.01.2008 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Tego pierwszego stringa exploduj i potem w pętli foreach przesiej.
-------------------- Pomogłem? Kliknij przycisk Pomógł pod pomocnym Ci postem.
http://maxik.me/ |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 237 Pomógł: 1 Dołączył: 15.10.2004 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Tego pierwszego stringa exploduj i potem w pętli foreach przesiej. Zrobiłem jak pisałeś i zaznacza się tylko jedno id, a w bazie danych ma cos takiego "1 , 6"
|
|
|
-aa- |
![]()
Post
#4
|
Goście ![]() |
CODE // $id_uzytkwnikow2 zawiera 0=>11, 1=>14 // $id_uzytkownik = 11 foreach($id_uzytkownikow as $id) { if($id_uzytkownik == $id) echo $id; } chyba o to chodziło? |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 237 Pomógł: 1 Dołączył: 15.10.2004 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
CODE // $id_uzytkwnikow2 zawiera 0=>11, 1=>14 // $id_uzytkownik = 11 foreach($id_uzytkownikow as $id) { if($id_uzytkownik == $id) echo $id; } chyba o to chodziło? Nie bo:
Teraz zaznaczony jest tylko ten użytkownik, który ma id 1 a powinien być także zaznaczony ten, który ma id 6 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 104 Pomógł: 3 Dołączył: 22.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
Bardzo to komplikujecie napisz dokladnie co jest w tablicach i jak o to pytasz mysql'a.
Na 100% da sie to sprowadzic do zaptania mysql ktore zwroci 1 row z danymi ktore chcesz przyrownac do czegos. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 237 Pomógł: 1 Dołączył: 15.10.2004 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Bardzo to komplikujecie napisz dokladnie co jest w tablicach i jak o to pytasz mysql'a. Na 100% da sie to sprowadzic do zaptania mysql ktore zwroci 1 row z danymi ktore chcesz przyrownac do czegos. Prosze dłuższy fragment kodu
W tablicu po explodowaniu mam: $id_uzytkwnikow2['0'] = "1" $id_uzytkwnikow2['1'] = "6" |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 104 Pomógł: 3 Dołączył: 22.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
Zapytanie zwroci ci wszystkich przypisanych do 'nazwa_skrypt' razem z ich danymi z tablicy user'ow dopisz tylko pola.
Teraz tylko dobry WHERE i mysql da ci to co chcesz. Jak jest duzo join'ow warto ustawic sobie jakies VIEW.
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 237 Pomógł: 1 Dołączył: 15.10.2004 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
celebos nie zrozumiałeś do końca
W tabeli z uprawnieniami mam: "1 , 6" gdzie 1 to id i 6 to id
Mam już to z nazwą skryptu |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 104 Pomógł: 3 Dołączył: 22.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
Nie rozumiem masz identyfikatory uzytkownikow w jednym polu w tablicy uprawnienia ? $row[rezultat1]='1,5,43,543,123' ?!
Bez sensu odebrales sobie wszystkie opcje jakie daje Ci baza danych wlasnie do takich zlaczen. Juz chyba lepiej robic 10 wpisow z tym samym userem a innym skryptem nizeli w ten sposob normalizowac baze i nie miec mozliwosci dac joina. Nie wyszukasz w stringu "6" bo jak napisales wywali ci np "16" jako rezultat. Mozesz dodac na poczatek i koniec kazdego ciagu w 'grupowych' indentyfikatorach "," (sam przecinek). Wtedy bedziesz mial 'separator' do swoich wartosci i mozesz prawidlowo przyronac W ten sposob trzeba bedzie wyszukiwac przy pomocy like w polu co nie jest zbyt wydajnei zalecane. if strlen($x)==1 { $y=",".$x.","; select..... where id_costam like '%$y%'; } Ten post edytował calebos 14.08.2008, 13:00:40 |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 237 Pomógł: 1 Dołączył: 15.10.2004 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Powiedz jak byś mi to radził zrobić. Wytłumacz, jak możesz, jak najbardziej dokładnie.
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 104 Pomógł: 3 Dołączył: 22.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
Nie napisales czy tworzysz to dopiero czy jest juz tam z milion wpisow.
Tach fachowo to Cos kolo 3 postaci normalnej byloby chyba utworzenie grup z przywilejami aby zawieraly wszystkie mozliwe kombinacje. Ale jesli to zastosoanie nie na jakies ogromne obciazenia to wystarczy cos takiego id1.skrypt ------ id.skryptu.JAN.NOWAK id2.skrypt ------ id.skryptu.JAN NOWAK Postac normalna potem napisze bo musze leciec. Rozumiem ze jest jakas okreslona ilosc skryptow? |
|
|
-m- |
![]()
Post
#13
|
Goście ![]() |
if strlen($x)==1 { $y=",".$x.","; select..... where id_costam like '%$y%'; } jest inna mozliwość bez dodawania , przed i po zmiennej np. CODE SELECT FIND_IN_SET('4', '1,2,44,444,4') zwróci 5 czyli pozycję ściśle dopasowanejwartości a CODE SELECT FIND_IN_SET('4', '1,2,44,444') zwróci 0. Czyli możnaby napisac 'SELECT FIND_IN_SET($x, nazwa_pola) FROM .......... WHERE ..............' |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 104 Pomógł: 3 Dołączył: 22.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
Co nadal nie rozwiazuje do konca sprawy.
Zamiast prostego JOIN'a masz dwa selecty do tego z przeszukiwaniem wewnatrz pola. Trzeba to przerobic na 3 tablice albo powtarzac wpisy w tablicy users. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 02:20 |