Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL] Tworzenie kilku wiadomosci w jedna, tak jak w gmail
!*!
post
Post #1





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Nie mam pomysłu jak mógłbym wykonać "scalenie" kilku wiadomości w jedną...

Obecnie odczytuję wiadomości z bazy na zasadzie:


Kod
stefan
stefan
stefan
ola
ola
stefan
zuzia


Chciałbym to jakoś pogrupować, gmail robi to tak:

Kod
stefan (3)
ola (2)
stefan
zuzia


Mógłby ktoś dać jakieś światło jak można uzyskać taki efekt?


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 14)
AxZx
post
Post #2





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 55
Dołączył: 1.03.2005
Skąd: śląsk

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


  1. SELECT count(nadawca), nadawca.... GROUP BY nadawca


--------------------
aplikacje internetowe | Symfony
Go to the top of the page
+Quote Post
!*!
post
Post #3





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Właśnie mam z tym problem, obecnie zapytanie wygląda tak:

  1. <?php
  2. $zap= "SELECT m.*,u.id,u.login FROM `mail` AS m, `userdata` AS u WHERE m.odbiorca = $userid AND m.nadawca=u.id ORDER BY m.id_mail DESC LIMIT ".(($s-1)*$iloscrekordow).", $iloscrekordow";
  3. ?>


dodaję GROUP BY :

  1. <?php
  2. $zap= "SELECT m.*,u.id,u.login FROM `mail` AS m, `userdata` AS u WHERE m.odbiorca = $userid AND m.nadawca=u.id GROUP BY u.login ORDER BY m.id_mail DESC LIMIT ".(($s-1)*$iloscrekordow).", $iloscrekordow";
  3. ?>


Jednak mam wrażenie że nie tak to powinno być...


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
erix
post
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




A gdzie masz count? Jeśli chcesz policzyć wszystkie wiadomości, to nie dorzucaj LIMIT.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
!*!
post
Post #5





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Limit to sposób na stronicowanie.


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
erix
post
Post #6





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




No ja rozumiem, że na stronicowanie, ale w ten sposób nie policzysz wszystkich wiadomości. winksmiley.jpg

Policzy Ci tylko ilość wiadomości w tych kategoriach na bieżącej stronie, a nie o to chyba Ci chodzi.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
piotrooo89
post
Post #7


Newsman


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




nie masz liczenia za pomocą COUNT, jak już było wspomniane. dodaj je.


--------------------
Go to the top of the page
+Quote Post
!*!
post
Post #8





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


ok, dodałem jendak teraz w ogóle nie uzyskuje rekordów...
  1. <?php
  2. $zap= "SELECT m.*,u.id,u.login COUNT m.id_mail FROM `mail` AS m, `userdata` AS u WHERE m.odbiorca = $userid AND m.nadawca=u.id GROUP BY login ORDER BY data_wyslania DESC LIMIT ".(($s-1)*$iloscrekordow).", $iloscrekordow";
  3. ?>


kurde ale sobie to skomplikowałem... Przepiszę to od poczatku w elu obadania błędu...

Ten post edytował !*! 20.03.2009, 21:36:09


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
erix
post
Post #9





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




A czytałeś, co to jest count w MySQL? Podstawy. tongue.gif


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
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




patrzyłeś w ogóle do manuala? chyba nie... COUNT


--------------------
Go to the top of the page
+Quote Post
melkorm
post
Post #11





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

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


najpierw musisz zliczyć ilosć mail'i dla każdego uzytkownika bez LIMIT'ów , i pobrać tylko id uzytkownika(czy tam login, po tym po czym grupujesz) i stworzyć tabliće w postaci :
Kod
$tablica[login] = $ilosc;


nastepne zapytanie to tylko pobranie z distinct i limitem, i przy wyświetlaniu dajesz :

  1. <?php
  2. echo " jakas nazwa {$tablica[$login]}";
  3. ?>


coś w tym stylu .... .

Ten post edytował melkorm 20.03.2009, 21:42:26


--------------------
Go to the top of the page
+Quote Post
AxZx
post
Post #12





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 55
Dołączył: 1.03.2005
Skąd: śląsk

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


[ot]
mamy tutaj przykład na to, że forum zabija kreatywność.
zamiast poszperać trochę, poczytać o możliwościach DBMS to od razu pisze się na forum tłumacząc, że jest się początkującym.
i to nie tylko chodzi o tego użytkownika bo już dawno to zaobserwowałem.
!*!
fajna ksywa:P


--------------------
aplikacje internetowe | Symfony
Go to the top of the page
+Quote Post
melkorm
post
Post #13





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

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


[ot]
Dlatego staram się wyjasniać w miarę swojej wiedzy , a nie pisać gotowców - zawsze czegoś ja moge się nauczyć (jeżeli ktoś poda inną mozliwość, lub poprawi moje błędy) , a także użytkownik sam pisząc kod i łapiąc idee smile.gif
[/ot]


--------------------
Go to the top of the page
+Quote Post
!*!
post
Post #14





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


przyznam że nie rozumiem ...

zliczenie:

  1. <?php
  2. $zapytajsql = "SELECT COUNT(*) as ilewiadomosci FROM mail WHERE odbiorca = $userid ";
  3. $result = mysql_query($zapytajsql);
  4. $wynik = mysql_fetch_assoc($result);
  5. ?>


$wynik['ilewiadomosci']; - daje Nam przykladowo 104 wiadomości

  1. <?php
  2. $zap= "SELECT m.*,u.id,u.login, COUNT(m.nadawca) FROM `mail` AS m, `userdata` AS u WHERE m.odbiorca = $userid AND m.nadawca=u.id GROUP BY m.nadawca ORDER BY m.data_wyslania DESC LIMIT ".(($s-1)*$iloscrekordow).", $iloscrekordow";
  3. $quer = mysql_query($zap);
  4. ?>


wyświetla mi 5 osób od których były wiadomości... Ok, ale jak to zrobić aby uzyskać taki efekt jaki opisałem w pierwszym poście?

Ten post edytował !*! 21.03.2009, 01:35:44


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
erix
post
Post #15





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Wywal LIMIT, gdyż obecnie ograniczasz zliczanie do rekordów wg bieżącej strony.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post

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 - 10:22