![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 84 Pomógł: 0 Dołączył: 26.07.2019 Ostrzeżenie: (0%) ![]() ![]() |
Wyciągam z bazy poniższym zapytaniem użytkowników, którzy mają dane usługi. Czasem się zdarza że dany użytkownik ma kilka usług. Następnie robię pętle, w której finalnie wysyłana jest wiadomość do każdego z użytkowników jakie ma usługi. Poniższy kod ma jedną wadę ponieważ jeżeli użytkownik ma np. 3 usługi to otrzyma 3 e-maile z każdą usługą. Próbowałem zmienić zapytanie SQL dodając DISTINCT, następnie w pętli for zrobiłem foreach i teraz dany użytkownik faktycznie otrzymuje w jednym e-mailu informacje o wszystkich swoich usługach.
Problem pojawia się kiedy np. w bazie jest dwóch użytkowników to każdy z nich otrzyma informacje o wszystkich usługach, nie koniecznie o swoich więc nie wiem jak w pętli foreach przypisać usługi do danego użytkownika.
Ten post edytował ufo1990 27.03.2022, 08:42:48 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Zamiast kombinować z GROUP_CONCAT, stwórz zapytanie wybierające email oraz nazwę usługi.
Następnie w PDO jest opcja trybu pobierania o nazwie PDO::FETCH_GROUP, będziesz miał pogrupowane nazwy usług per email. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 403 Pomógł: 72 Dołączył: 15.07.2014 Ostrzeżenie: (0%) ![]() ![]() |
A jak to masz połączone w bazie? UserId <> ServiceId? To przecież możesz pogrupować to po UserId i dostaniesz listę ServicesIds.
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 84 Pomógł: 0 Dołączył: 26.07.2019 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#5
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
w kodzie co pokazales nigdzie nie masz warunku > 0 wiec o co ci chodzi?
To co napisali poprzednicy to wszystko jest ok. Cos kombinujesz za bardzo |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 84 Pomógł: 0 Dołączył: 26.07.2019 Ostrzeżenie: (0%) ![]() ![]() |
ok, faktycznie za mało informacji więc jeszcze raz mam zapytanie, w którym dodałem grupowanie
Następnie w pętli mam $service_prices_explode = explode(',',$row['service_prices']); i chce zrobić warunek if($service_prices_explode>) echo $row['name']; ale jest problem ponieważ echo $row['service_prices']; nie zwróci całego ciągu udzielonego przecinkami. Ten post edytował ufo1990 28.03.2022, 11:15:47 |
|
|
![]()
Post
#7
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Ale chaotycznie to opisujesz wszystko
Co to jest if($service_prices_explode>) echo $row['name']; ? Co to ma robic? |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 84 Pomógł: 0 Dołączył: 26.07.2019 Ostrzeżenie: (0%) ![]() ![]() |
W dużym skrócie: Z bazy wyciągam userów którzy mają określone usługi do których jest przypisana jakaś kwota, następnie chce wyświetlić tylko tych użytkowników których jedna z usług ma wartość większą niż 0.
|
|
|
![]()
Post
#9
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Po to jest HAVING
..... GROUP BY p.id HAVING SUM(s.service_price) > 0 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 84 Pomógł: 0 Dołączył: 26.07.2019 Ostrzeżenie: (0%) ![]() ![]() |
Jakie to proste (IMG:style_emoticons/default/facepalmxd.gif) Cały czas się skupiałem żeby obrobić to w php a wystarczyło tylko zapytanie zmodyfikować. Dzięki za pomoc.
|
|
|
![]()
Post
#11
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Nastepnym razem proponuje od razu tez opisac co tak naprawde chcesz osiagnac, a nie opisujesz droge ktora ci sie wydaje ze jest wlasciwa. Zaoszczedzisz sobie i nam duzo czasu
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 19:35 |