Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> PHP I MYSQL - Wysyłanie e-maila, Wysyłanie emaila do odpowiednich osób - z bazy danych
Karmazyner
post
Post #1





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 15.04.2022

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


Witam serdecznie.

Dziękuje za odwiedzenie mojego tematu.
Od wczoraj siedzę sobie nad kodem który ostatecznie miałby wysyłać E-maile do dopasowanych do siebie osób pod kątem zainteresowań oraz innych parametrów.
Ogólnie bazę danych już zbudowałem, zapytania również i dostaje efekt jaki mnie satysfakcjonuje czyli w odpowiedzi dostaje osoby które do siebie pasują.
Zaprezentuje tutaj w skrócie jak wygląda okrojona baza oraz zapytanie wyświetlające użytkowników którzy są do siebie dopasowani:
DBFIDDLE LINK

Następnie w celu podglądu stosuje zapytanie na mojej stronie które wygląda mniej więcej tak:
PHP + HTML:
  1. <?php
  2. include_once 'connection.php';
  3. $result = mysqli_query($conn,"select
  4. m.id, m.imie, m.email,
  5. k.id, k.imie, k.email
  6. from
  7. wybory c
  8. join wybory s
  9. on c.wybierajacy = s.wybor
  10. left join uzytkownicy m on m.id = c.wybierajacy
  11. left join uzytkownicy k on k.id = c.wybor
  12. where s.wybierajacy = c.wybor
  13. and m.plec = 'M'
  14. and k.plec = 'K');
  15. ?>
  16.  
  17. <?php
  18. if (mysqli_num_rows($result) > 0) {
  19. ?>
  20.  
  21. <table class='table table-bordered table-striped'>
  22. <tr>
  23. <td>ID</td>
  24. <td>Imię</td>
  25. <td>Email</td>
  26. <td></td>
  27. <td>ID</td>
  28. <td>Imię</td>
  29. <td>Email</td>
  30. </tr>
  31.  
  32. <?php
  33. $i=0;
  34. while($row = mysqli_fetch_array($result)) {
  35. ?>
  36.  
  37. <tr>
  38. <td><?php echo $row["0"]; ?></td>
  39. <td><?php echo $row["1"]; ?></td>
  40. <td><?php echo $row["2"]; ?></td>
  41. <td></td>
  42. <td><?php echo $row["id"]; ?></td>
  43. <td><?php echo $row["imie"]; ?></td>
  44. <td><?php echo $row["email"]; ?></td>
  45. <tr>
  46.  


Na co w odpowiedzi dostaje:
Cytat
idㅤㅤㅤimieㅤㅤㅤㅤemailㅤㅤㅤㅤㅤㅤㅤidㅤㅤimieㅤㅤㅤㅤemail
203ㅤAdam WㅤadamW@gmail.comㅤ101ㅤKasia BㅤkasiaB@gmail.com
204ㅤPiotr KㅤㅤpiotrK@gmail.comㅤㅤ101ㅤKasia BㅤkasiaB@gmail.com
204ㅤPiotr KㅤㅤpiotrK@gmail.comㅤㅤ102ㅤOla SㅤㅤolaS@gmail.com


I teraz kwestia mojego problemu.
Jest ktoś w stanie pokazać przykład jak po przyciśnięciu przycisku mogę wysłać email "na krzyż?" bez wysyłania podwójnych emaili do tej samej osoby?
Jakich e-maili oczekuje?

Pierwszy email:
Cytat
Od kogo: Mojemail@gmail.com
Do kogo: adamW@gmail.com
Temat: Masz dopasowanie!
Body:
Gratuluje Adam W, dopasowaliśmy Cie z:
Kasia B (kasiaB@gmail.com)

I w tym nie widzę problemu... Ale problem pojawia się przy wysyłce emaila do Kasia B, która ma już dwa dopasowania czyli: Adam W oraz Piotr K.

Cytat
Od kogo: Mojemail@gmail.com
Do kogo: kasiaB@gmail.com
Temat: Masz dopasowanie!
Body:
Gratuluje Kasia B, dopasowaliśmy Cie z:
Adam W (adamW@gmail.com)
Piotr K (piotrK@gmail.com)


I idac dalej wiadomość do Piotra K będzie będzie zawierała w body dwie osoby bo ma dwa dopasowania, zarówno z Kasia B oraz Ola S ( jedna wiadomość z dwoma dopasowanymi osobami ) a już Ola S w body będzie miała tylko jedną osobę którą jest Piotr W.

Jest ktoś w stanie pokazać taki uniwersalny kod napisany w php który będzie wysyłał e-maile tak jak opisałem to powyżej?
Przepraszam, ale lepiej nie potrafiłem tego opisać, jeśli coś jest niezrozumiałe proszę pytać.
Pozdrawiam! (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




No ale po co masz to dodawac do tabelki? Tabelka jak generowales tak generuj. Ja ci podalem kod na przygotowanie danych do wysylki maila bo o to przeciez pytales
Go to the top of the page
+Quote Post
Karmazyner
post
Post #3





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 15.04.2022

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


Cytat(nospor @ 15.04.2022, 14:46:27 ) *
No ale po co masz to dodawac do tabelki? Tabelka jak generowales tak generuj. Ja ci podalem kod na przygotowanie danych do wysylki maila bo o to przeciez pytales


Masz racje, jest to niepotrzebne. Pomyślałem iż tak będzie lepiej, ale jak spojrzałem dokładniej na tą tabelkę to zauważyłem iż będzie to ciężkie do zrobienia. (IMG:style_emoticons/default/smile.gif)

Skonstruowałem prostą wysyłkę emaila - ręczną, która działa, ponieważ w e-mailu dostaje:
Cytat
Temat: Cześć Adam W oto dopasowania które dla Ciebie przygotowaliśmy:
Treść: Dopasowaliśmy Cię z następującymi osobami: Kasia B. Skontaktuj się: kasiab@gmail.com


Tylko jak to teraz zautomatyzować abym nie musiał ręcznie wpisywać każdego ID osoby oraz parametrów?
Oraz tak aby w przypadku jak powyżej wysyłało tylko jedną osobę jako dopasowania, ale również jeśli występuje więcej to więcej tych osób w treści.
Ponieważ to co jest poniżej dodawałem z ręki na podstawie print_r

  1. <?php
  2. include_once 'connection.php';
  3. $result = mysqli_query($conn,"select
  4. m.id m_id, m.imie m_imie, m.email m_email,
  5. k.id k_id, k.imie k_imie, k.email k_email
  6. from
  7. wybory c
  8. join wybory s
  9. on c.wybierajacy = s.wybor
  10. left join uzytkownicy m on m.id = c.wybierajacy
  11. left join uzytkownicy k on k.id = c.wybor
  12. where s.wybierajacy = c.wybor
  13. and m.plec = 'M'
  14. and k.plec = 'K'");
  15. ?>
  16.  
  17.  
  18. <?php
  19. $males = [];
  20. $females = [];
  21. while($row = mysqli_fetch_array($result)) {
  22.  
  23. // tu dla mezczyzn dodajesz kobiety
  24. if (!isset($males[$row['m_id']])) {
  25. $males[$row['m_id']] = ['name' => $row['m_imie'], 'email' => $row['m_email'], 'females' => []];
  26. }
  27. $males[$row['m_id']]['females'][] = ['id' => $row['k_id'], 'name' => $row['k_imie'], 'email' => $row['k_email']];
  28.  
  29. //tu dla kobiet dodajesz mezczyzn
  30. if (!isset($females[$row['k_id']])) {
  31. $females[$row['k_id']] = ['name' => $row['k_imie'], 'email' => $row['k_email'], 'males' => []];
  32. }
  33. $females[$row['k_id']]['males'][] = ['id' => $row['m_id'], 'name' => $row['m_imie'], 'email' => $row['m_email']];
  34.  
  35. }
  36.  
  37. print_r($males);
  38. print_r($females);
  39. ?>
  40.  
  41.  
  42. <?php
  43. $to = $males[203]['email'];
  44. $subject = "Cześć {$males[203]['name']} oto dopasowania które dla Ciebie przygotowaliśmy:";
  45. $message = "Dopasowaliśmy Cię z następującymi osobami: {$females[101]['name']}. Skontaktuj się: {$females[101]['email']}";
  46. $headers = array(
  47. 'From' => 'dasda@gmail.com',
  48. 'Reply-To' => 'dasda@gmail.com'
  49.  
  50. );
  51.  
  52. mail($to, $subject, $message, $headers);
  53. ?>
Go to the top of the page
+Quote Post

Posty w temacie


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: 17.10.2025 - 15:01