neo1986kk
25.03.2011, 13:40:43
chodzi o to ze mam tableke
id zmienne
1 1,2,3,4,5
2 2,4,6,8
3 3,6,9
i powiedzmy chce pobrać rekrody dla zmiennej 6, czyli będą to te o id 2 i 3.
i wlasnie nie wiem jak to rozbić
$zmienna = 6
SELECT * FROM tabela WHERE zmienne LIKE %,$zmienna%
czy ja dobrze kombinuje?
piotrooo89
25.03.2011, 13:43:51
możesz też za pomocą regexp'ow
http://dev.mysql.com/doc/refman/5.1/en/regexp.html. ale musisz wiać uwagę że zmienna może mieć postać 66 wiec musisz to jakoś ograniczyć (przecinki).
NEO.pl
25.03.2011, 13:51:46
Cytat(neo1986kk @ 25.03.2011, 13:40:43 )

czy ja dobrze kombinuje?
Kombinujesz dobrze, ale baze masz zaprojektowana zle. Dlaczego nie dodasz kazdej wartosci jako oddzielny rekord?
neo1986kk
25.03.2011, 14:04:10
dlatego ze nie chcę aby powtarzaly mi się rekordy w bazie to ma być system powiadomień...
dokladnie to
ID | POWIADOMIENIE | KOGO POWIADAMIAC
piotrooo89
25.03.2011, 14:07:32
może powiedz dokładnie co chcesz zrobić, bo to nie zmienia faktu, że masz słabo baze zaprojektowaną.
NEO.pl
25.03.2011, 15:05:05
Cytat(neo1986kk @ 25.03.2011, 14:04:10 )

dlatego ze nie chcę aby powtarzaly mi się rekordy w bazie to ma być system powiadomień...
dokladnie to
ID | POWIADOMIENIE | KOGO POWIADAMIAC
a w ktorym momencie niby beda Ci sie powtarzaly?
neo1986kk
25.03.2011, 15:07:58
powiadomienia np o tym ze ktos dodal zdjęcie.
id powiadomienie kogopowiadamiac
1. sprawdzam id znajomych uzytkownika
a) zbieram wszystkich znajomych i ukladam ich ID po przecinku

$powiadamiaj = 1,2,3,4,5
2. $powiadomienie = twoj znajomy xxx dodal zdjecie.
3. zapisuje do bazy powiadomienie
INSERT INTO tabela (`id`,`powiadomienie`, `kogopowiadamiac`,`ktododal`) VALUES ('','$powiadomienie','$powiadamiaj','$mojeid')
piotrooo89
25.03.2011, 15:15:46
no to przyda Ci sie tabela symulująca log zdarzeń. wpisujesz do niej akcje jakie zachodzą. czyli ID = 1 powiadomo ID = 2, 3 , 5.
ID | POWIADOM
1 | 2
1 | 3
1 | 5
można zrobić dodatkową kolumnę w której będzie informacja czy takowe powiadomienie zostało odebrane ale to już inna sprawa.
neo1986kk
25.03.2011, 15:21:21
to nie lepiej to wrzucić tak jak ja to zrobiłem tylko zrobić nową tabelę? nie pytam bo się wymądrzam tylko dlatego, że chciałbym, aby to było jak najbardziej optymalne, a napewno Ty znasz się na tym lepiej ode mnie.
piotrooo89
25.03.2011, 15:28:32
jak odpowiednio nadasz indeksy na kolumny to będzie to dużo bardziej wydajne niż szukanie tego za pomocą LIKE.
neo1986kk
25.03.2011, 15:29:48
aha, to wlasnie chcialem uslyszec, dzieki:)
vermis
25.03.2011, 15:32:00
Cytat
to nie lepiej to wrzucić tak jak ja to zrobiłem tylko zrobić nową tabelę? nie pytam bo się wymądrzam tylko dlatego, że chciałbym, aby to było jak najbardziej optymalne, a napewno Ty znasz się na tym lepiej ode mnie.
Z punktu widzenia łatwości obsługi Twoje rozwiązanie jest bardzo nieoptymalne, bo trudno dodać i pobrać listę powiadamianych (powód założenia tematu). Rozwiązanie z dodatkową tabelą jest znacznie lepsze i daje możliwość rozbudowy o dodatkowe opcje, a zapis do stringa pozbawia cię możliwości rozbudowy aplikacji, bez zmiany struktury bazy danych.
neo1986kk
25.03.2011, 15:51:35
no dobra a jeszcze jedno pytanie,
czy lepiej jest zrobic tabele
id, powiadomienie
1 uzytkownik dodal zdjecie
i potem wyciagnac z tabeli powiadamianych id i :
$select=mysql_query("select powiadomienie from table where id='1'"); {
}
czy lepiej w tabeli zpisać w INT typ powiadomienia
id , typ
1 1
$select=mysql_query("select typ from table where id='1'"); $typ=$row[0];
switch($typ)
{
case 1:
$powiadomienie='uzytkownik dodal zdjecie';
break;
}
czy moze jeszcze 3 tablicę gdzie będę trzymał w stringach opisy do typów powiadomień?
vermis
25.03.2011, 15:58:15
Ja rozbudowałbym na tabelę o zdarzenia, dla których wysyłać powiadomienia (true|false) czyli np.
id_uzytkownika|id_powiadamianego|zdjecie|komentarz|nowy wpis itp
1|2|true|false|true
Ale może okazać się że dodatkowa tabla da więcej możliwości, tutaj pytanie jak bardzo chcesz to rozbudować?
piotrooo89
25.03.2011, 15:59:15
ja bym rozwiązał to tak:
t_powiadomienia
id_powiadomienia | opis
1 | opis1
2 | opis2
t_user_powiadomienie
id_user_od | id_user_do | id_powiadomienia
1 | 3 | 2
zakładamy FK na t_user_powiadomienie(id_powiadomienia) => t_powiadomienia
i teraz mamy że user 1 powiadamia usera 3 o opis2.
neo1986kk
25.03.2011, 16:00:26
no właśnie sęk w tym że bardzo będzie około 20 różnych typów powiadomień
piotrooo89
25.03.2011, 16:02:49
dlatego ja zaproponowałem tabele słownikową t_powiadomienie, w niej załadujesz sobie 20 powiadomień i za pomocą ID będziesz sie odwoływał. taka konstrukcje będziesz mógł wykorzystać nie tylko w tym module, ale np innych miejscach w których będziesz musiał używać powiadomień, to zapewni Twojemu systemowi spójność.
neo1986kk
25.03.2011, 16:03:45
Cytat(piotrooo89 @ 25.03.2011, 15:59:15 )

zakładamy FK
tzn?
No tak tylko jest jeszcze jeden problem że te powiadomienia nie będą stałe dlatego że na przykład, ktoś tam dodał komentarz.
uzytkownik $zmienny dodał komentarz: $komentarz do zdjęcia użytkownika $zmienny2
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.