Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [MySQL][PHP]Count użytkowników należnych do danej grupy
honytowk
post
Post #1





Grupa: Zarejestrowani
Postów: 90
Pomógł: 3
Dołączył: 11.09.2008
Skąd: Gliwice

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


Witam chciałbym zliczyć rekordy z tabeli całość wygląda tak:



chce żeby policzyło mi użytkowników którzy są np w grupie 3
należność użytkowników do grup jest zapisywana w tabeli "ep_users" -> pole "grupy"
Go to the top of the page
+Quote Post
Mephistofeles
post
Post #2





Grupa: Zarejestrowani
Postów: 1 182
Pomógł: 115
Dołączył: 4.03.2009
Skąd: Myszków

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


Nie lepiej tą tabelę rozbić na 2? Jedną users, a drugą user-group?
Go to the top of the page
+Quote Post
honytowk
post
Post #3





Grupa: Zarejestrowani
Postów: 90
Pomógł: 3
Dołączył: 11.09.2008
Skąd: Gliwice

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


nie da rady bo bym musiał wszystko zmieniać, i wszystkich użytkowników przepisywać
Go to the top of the page
+Quote Post
darko
post
Post #4





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Funkcja substring_index powinna pomóc.

Ten post edytował darko 30.12.2009, 20:06:48


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
honytowk
post
Post #5





Grupa: Zarejestrowani
Postów: 90
Pomógł: 3
Dołączył: 11.09.2008
Skąd: Gliwice

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


zapytanie:

  1. $grupys = dbquery("SELECT count(user_id) FROM ".$db_prefix."users WHERE grupy='$grupa'");


wyswieltam rekordy:

  1. ".dbresult($grupys, 0)."


zrobiłem to tak, nie działa, i jak tu użyć tego "substring_index "

Ten post edytował honytowk 30.12.2009, 22:23:51
Go to the top of the page
+Quote Post
sadistic_son
post
Post #6





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

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


To powinno być zrobione na 3 tabelach bo zachodzi relacja wiele-do-wielu. Ale skoro juz sie uparles ze ma tak zostac to uzyj LIKE %.
  1. $grupys = dbquery("SELECT count(user_id) FROM ".$db_prefix."users WHERE grupy LIKE '%".$grupa."%'");
Jednakze to zadziała tylko jesli masz max 9 grup. Bo np. grupe 23 rozpozna jak 2 i 3.


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
honytowk
post
Post #7





Grupa: Zarejestrowani
Postów: 90
Pomógł: 3
Dołączył: 11.09.2008
Skąd: Gliwice

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


dzieki ale odpada, potrzebuje czegoś lepszego

mam cos takiego do sprawdzania czy jestem w grupie moze sie przyda:
  1. $temp = explode('.', $string_grup);
  2.  
  3. $key = array_search( $grupa, $temp );


Ten post edytował honytowk 30.12.2009, 23:12:04
Go to the top of the page
+Quote Post
sadistic_son
post
Post #8





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

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


No to w takim razie mozesz uzyc nastepujacego rozwiazania.
  1. $i=0;
  2. $query="SELECT user_id , grupy FROM ".$db_prefix."users";
  3. $result=mysql_query($query);
  4. while($row=mysql_fetch_array($result,MYSQL_NUM)){
  5. $gr=explode(".",$row[1]);
  6. foreach($gr as $g){
  7. if($g==$grupy){
  8. $i++;
  9. }
  10. }
  11. }
zmienna $i jest ilością userów z danej grupy. Ale jest to mega-nieoptymalne rozwiazanie!

EDIT:
Twoją podpowiedz mozna uzyc. Zamiast petli foreach moznaby zastosowac array_search. Ale wynik w sumie ten sam bedzie.

Ten post edytował sadistic_son 30.12.2009, 23:42:04


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
honytowk
post
Post #9





Grupa: Zarejestrowani
Postów: 90
Pomógł: 3
Dołączył: 11.09.2008
Skąd: Gliwice

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


nie działa
Go to the top of the page
+Quote Post
sadistic_son
post
Post #10





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

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


Ale co nie działa?! Błąd wywala?! Jaki błąd?! Nic się nie dzieje?! Pokazuje że jest zero wyników?! CO NIE DZIAŁA?!


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
honytowk
post
Post #11





Grupa: Zarejestrowani
Postów: 90
Pomógł: 3
Dołączył: 11.09.2008
Skąd: Gliwice

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


Warning: explode() [function.explode: Empty delimiter in /home/honytowk/public_html/grupy/grupy.php on line 60

Warning: Invalid argument supplied for foreach() in /home/honytowk/public_html/grupy/grupy.php on line 61

Warning: explode() [function.explode: Empty delimiter in /home/honytowk/public_html/grupy/grupy.php on line 60

Warning: Invalid argument supplied for foreach() in /home/honytowk/public_html/grupy/grupy.php on line 61

wywala takie błędy


Ten post edytował honytowk 30.12.2009, 23:26:10
Go to the top of the page
+Quote Post
sadistic_son
post
Post #12





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

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


Co wpisujesz podając grupę? Wpisujesz '.3' czy '3.' czy '3'?

Ten post edytował sadistic_son 30.12.2009, 23:28:21


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
darko
post
Post #13





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


nie powinno być odwrotnie: $gr=explode(".", $row[1]); ?


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
Wicepsik
post
Post #14





Grupa: Zarejestrowani
Postów: 1 575
Pomógł: 299
Dołączył: 26.03.2009

Ostrzeżenie: (20%)
X----


Szybszym rozwiązaniem będzie przeprojektowanie bazy. Ale sądząc po postach założyciela tematu, żadnego wkładu własnego.


--------------------
Go to the top of the page
+Quote Post
sadistic_son
post
Post #15





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

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


Racja darkoexclamation.gif!! Drobna pomylka, juz poprawilem.
Wicepsik - byłoby szybszym, lepszym, optymalniejszym, zajmujacym mniej powierchni dyskowej, bardziej poprawnym od strony bazodanowej itp. itd. No ale skoro ma tak zostac to wola tworcy bazy.

Ten post edytował sadistic_son 30.12.2009, 23:34:42


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
honytowk
post
Post #16





Grupa: Zarejestrowani
Postów: 90
Pomógł: 3
Dołączył: 11.09.2008
Skąd: Gliwice

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


Cytat(sadistic_son @ 30.12.2009, 21:27:54 ) *
Co wpisujesz podając grupę? Wpisujesz '.3' czy '3.' czy '3'?


wpisuje 3
(zmienna: $grupa)
Go to the top of the page
+Quote Post
sadistic_son
post
Post #17





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

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


I po zmianie konstrukcji explode nadal wywala te same bledy? A istnieje przypadek ze w bazie w polu grupa nie ma nic wpisane? Albo ze nie ma kropki? Jesli tak to popraw eplode na to:
  1. $gr='.'.explode(".", $row[1]);


Ten post edytował sadistic_son 30.12.2009, 23:52:23


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
honytowk
post
Post #18





Grupa: Zarejestrowani
Postów: 90
Pomógł: 3
Dołączył: 11.09.2008
Skąd: Gliwice

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


  1. $i=0;
  2. $query="SELECT user_id , grupy FROM ".$db_prefix."users";
  3. $result=mysql_query($query);
  4. while($row=mysql_fetch_array($result,MYSQL_NUM)){
  5. $gr=explode(".",$row[1]);
  6. foreach($gr as $g){
  7. if($g==$grupy){
  8. $i++;
  9. }
  10. }

wstawiam to, i
zmienna $i do pola gdzie ma mi sie wyswietlac
to zamiast uzytkownikow zapisanych podaje mi ilosc uzytkownikow w calej bazie

ok dziala, zamiast zmiennej $grupy powinna byc zmienna $grupa

jeszcze jedno pytanie:

Jak wyświetlić wyniki?

(chce zrobić liste użytkowników należących do grupy)

Ten post edytował honytowk 31.12.2009, 00:08:44
Go to the top of the page
+Quote Post
darko
post
Post #19





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Z tego co widzę z kodu podanego przez sadistic_son to $row[0] przechowuje id użytkownika.


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
honytowk
post
Post #20





Grupa: Zarejestrowani
Postów: 90
Pomógł: 3
Dołączył: 11.09.2008
Skąd: Gliwice

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


  1. $query="SELECT user_id , grupy FROM ".$db_prefix."users";
  2. $result=mysql_query($query);
  3. while($row=mysql_fetch_array($result,MYSQL_NUM)){
  4. echo"".$row[1]."";
  5. }


wyswietla mi wynik

" .2.3.2 "

a row[0]
wyswietla wynik

" 1234 "

analizujac okazało sie ze .2.3.2 to wyniki grup z tabeli users

a powinny byc id użytkowników należących do danej grupy

Ten post edytował honytowk 31.12.2009, 00:24:44
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 19.08.2025 - 09:04