Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL]Wyciaganie rekordow z bazy gdzie w komorce znajduje sie zmienna z tablicy(array)
neo1986kk
post
Post #1





Grupa: Zarejestrowani
Postów: 561
Pomógł: 3
Dołączył: 2.02.2009

Ostrzeżenie: (0%)
-----


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ć


  1. $zmienna = 6

  1. SELECT * FROM tabela WHERE zmienne LIKE %,$zmienna%


czy ja dobrze kombinuje?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 17)
piotrooo89
post
Post #2


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




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).
Go to the top of the page
+Quote Post
NEO.pl
post
Post #3





Grupa: Zarejestrowani
Postów: 71
Pomógł: 5
Dołączył: 26.01.2011

Ostrzeżenie: (40%)
XX---


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?
Go to the top of the page
+Quote Post
neo1986kk
post
Post #4





Grupa: Zarejestrowani
Postów: 561
Pomógł: 3
Dołączył: 2.02.2009

Ostrzeżenie: (0%)
-----


dlatego ze nie chcę aby powtarzaly mi się rekordy w bazie to ma być system powiadomień...


dokladnie to

ID | POWIADOMIENIE | KOGO POWIADAMIAC
Go to the top of the page
+Quote Post
piotrooo89
post
Post #5


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




może powiedz dokładnie co chcesz zrobić, bo to nie zmienia faktu, że masz słabo baze zaprojektowaną.
Go to the top of the page
+Quote Post
NEO.pl
post
Post #6





Grupa: Zarejestrowani
Postów: 71
Pomógł: 5
Dołączył: 26.01.2011

Ostrzeżenie: (40%)
XX---


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?
Go to the top of the page
+Quote Post
neo1986kk
post
Post #7





Grupa: Zarejestrowani
Postów: 561
Pomógł: 3
Dołączył: 2.02.2009

Ostrzeżenie: (0%)
-----


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
(IMG:style_emoticons/default/cool.gif) $powiadamiaj = 1,2,3,4,5


2. $powiadomienie = twoj znajomy xxx dodal zdjecie.
3. zapisuje do bazy powiadomienie

  1. INSERT INTO tabela (`id`,`powiadomienie`, `kogopowiadamiac`,`ktododal`) VALUES ('','$powiadomienie','$powiadamiaj','$mojeid')
Go to the top of the page
+Quote Post
piotrooo89
post
Post #8


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




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.
Go to the top of the page
+Quote Post
neo1986kk
post
Post #9





Grupa: Zarejestrowani
Postów: 561
Pomógł: 3
Dołączył: 2.02.2009

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
piotrooo89
post
Post #10


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




jak odpowiednio nadasz indeksy na kolumny to będzie to dużo bardziej wydajne niż szukanie tego za pomocą LIKE.
Go to the top of the page
+Quote Post
neo1986kk
post
Post #11





Grupa: Zarejestrowani
Postów: 561
Pomógł: 3
Dołączył: 2.02.2009

Ostrzeżenie: (0%)
-----


aha, to wlasnie chcialem uslyszec, dzieki:)
Go to the top of the page
+Quote Post
vermis
post
Post #12





Grupa: Zarejestrowani
Postów: 279
Pomógł: 56
Dołączył: 3.06.2010
Skąd: Tarnowskie Góry

Ostrzeżenie: (0%)
-----


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.

Ten post edytował vermis 25.03.2011, 15:33:58
Go to the top of the page
+Quote Post
neo1986kk
post
Post #13





Grupa: Zarejestrowani
Postów: 561
Pomógł: 3
Dołączył: 2.02.2009

Ostrzeżenie: (0%)
-----


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 :

  1.  
  2. $select=mysql_query("select powiadomienie from table where id='1'");
  3. while($row=mysql_fetch_array($select)
  4. {
  5. echo $row[0];
  6. }


czy lepiej w tabeli zpisać w INT typ powiadomienia

id , typ
1 1

  1.  
  2. $select=mysql_query("select typ from table where id='1'");
  3. $row=mysql_fetch_array($select);
  4. $typ=$row[0];
  5.  
  6. switch($typ)
  7. {
  8. case 1:
  9. $powiadomienie='uzytkownik dodal zdjecie';
  10. break;
  11. }



czy moze jeszcze 3 tablicę gdzie będę trzymał w stringach opisy do typów powiadomień?
Go to the top of the page
+Quote Post
vermis
post
Post #14





Grupa: Zarejestrowani
Postów: 279
Pomógł: 56
Dołączył: 3.06.2010
Skąd: Tarnowskie Góry

Ostrzeżenie: (0%)
-----


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ć?
Go to the top of the page
+Quote Post
piotrooo89
post
Post #15


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




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.
Go to the top of the page
+Quote Post
neo1986kk
post
Post #16





Grupa: Zarejestrowani
Postów: 561
Pomógł: 3
Dołączył: 2.02.2009

Ostrzeżenie: (0%)
-----


no właśnie sęk w tym że bardzo będzie około 20 różnych typów powiadomień
Go to the top of the page
+Quote Post
piotrooo89
post
Post #17


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




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ść.
Go to the top of the page
+Quote Post
neo1986kk
post
Post #18





Grupa: Zarejestrowani
Postów: 561
Pomógł: 3
Dołączył: 2.02.2009

Ostrzeżenie: (0%)
-----


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

Ten post edytował neo1986kk 25.03.2011, 16:05:55
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 23:38