Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]While bez powtórzeń tych samych wartości
tinware
post
Post #1





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 23.08.2009
Skąd: Wołomin

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


Witajcie.

Do każdego elementu na stronie użytkownicy piszą komentarze i po zapisaniu chce wyslac powiadomienie ze przy elemencie ktory ktos juz komentowal pojawil sie nowy komentarz. W tym celu losuje ID użytkownikow, ktorzy komentowali dany element...

Cytat
1000003
1000003
1000002
1000003
1000002
1000003
1000003
1000003


Problem pojawia się, kiedy ktoś komentował więcej niż jeden raz, bo podczas losowania pojawia się na liście więcej niż jeden raz, czyli to samo powiadomienie zostanie mu wyslane tyle razy, ile razy komentował dany element... Chodzi mi o to, żeby wylosowało te ID bez powtórzeń.

Oto mój kod:
  1. $lista_kom = mysql_query ("SELECT * FROM Comments WHERE dzial='Photos' and dzial_id='42' and osoba!='1000001' ORDER by id;");
  2. $ile_lista_kom = mysql_num_rows($lista_kom);
  3.  
  4. while ($rekord = mysql_fetch_assoc ($lista_kom))
  5. {
  6. echo " ".$rekord['osoba']." <br>";
  7. }

W zapytaniu narazie nan podpięte wszystko na "sztywno".
dzial to rodzaj elementu
dzial_id to wybrane zdjecie
osoba! to kazdy wylosowany uzytkownik oprocz wlasnego ID (po co powiadamiać samego siebie:P)

Mam problem, bo nie w pętli sobie z tym poradziłem:

  1. $result = mysql_query("SELECT COUNT(*) AS ile, GROUP_CONCAT(DISTINCT osoba ORDER BY osoba SEPARATOR ', ') AS osoby
  2. FROM Comments WHERE dzial='Photos' and dzial_id='42'");
  3.  
  4.  
  5. if ($result)
  6. {
  7. $row = mysql_fetch_assoc($result);
  8.  
  9. if (strlen($row['osoby']) > 0)
  10. {
  11. echo '' . htmlspecialchars($row['osoby']) . '';
  12. }
  13.  
  14. }


Ale to niestety musi być w pętli do rozesłania wiadomości, i niewiem jak się za to zabrać.

Rodacy, pomożecie smile.gif ?

Ten post edytował tinware 29.12.2011, 08:20:23
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
Shili
post
Post #2





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

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


Wybierz tylko id osoby po SELECT i użyj słowa klucza DISTINCT
Go to the top of the page
+Quote Post
tinware
post
Post #3





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 23.08.2009
Skąd: Wołomin

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


Coś takiego ?
  1. $lista_kom = mysql_query ("SELECT osoba GROUP_CONCAT(DISTINCT osoba ORDER BY osoba) FROM Comments WHERE dzial='Photos' and dzial_id='42' and osoba!='1000001' ORDER by id;");


I otrzymałem wynik:
  1. Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\Program Files\EasyPHP-5.3.8.1\www\djplate2012\kombinacje.php on line 32
  2.  
  3. Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\Program Files\EasyPHP-5.3.8.1\www\djplate2012\kombinacje.php on line 34
Go to the top of the page
+Quote Post
Sephirus
post
Post #4





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


ojojoj

  1. $lista_kom = mysql_query ("SELECT DISTINCT id FROM Comments WHERE dzial='Photos' and dzial_id='42' and osoba!='1000001' ORDER by id;");
  2. $ile_lista_kom = mysql_num_rows($lista_kom);
  3.  
  4. while ($rekord = mysql_fetch_assoc ($lista_kom))
  5. {
  6. echo " ".$rekord['osoba']." <br>";
  7. }


wink.gif to wystarczy

DISTINCT wstawione w SELEKCIE przed nazwą kolumny wymusza pobieranie tej kolumny bez powtórzeń po prostu smile.gif


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post
tinware
post
Post #5





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 23.08.2009
Skąd: Wołomin

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


Jeszcze mały błąd być:
Cytat
("SELECT DISTINCT osoba FROM Comments ...


No i dziękuje... podziękowałem już za pomoc smile.gif
a osobiscie jeszcze raz dziękuje.
Pozdrawiam

TOPIC OFF !
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: 21.08.2025 - 21:21