• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jak poprawnie uzyc funkcji wewnątrz if do wysyłania wiadomości

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
197 wizyt
pytanie zadane 14 grudnia 2015 w PHP przez kaminiak23 Użytkownik (640 p.)

Jestem początkujący.
Szukam w bazie userów i do nich wysyłam wiadomość. Normalnie wiadomość ustawiłbym jako zmienną ale w wiadomości potrzebuję wczytać dane w zależności od usera więc jak gdyby musi ona być w pętli. To działa ale wiadomość jest długa, w pętli mam kilka if i po wklejeniu wiadomości w każdy if jest to bardzo długi pliki i chyba niepotrzebnie powtarzam kod ale nie umiem inaczej.
Próbowałem z funkcjami ale nie udaje mi się - dociera wiadomość bez treści.

Najlepiej będzie widać to na przykładzie kodu:

function message ()
{
	$message = 'Abonament kończy się: '.$dataKonca;
}

foreach (...) 
{
	message();
	// - jak zrobić aby tu dodała się zawartość funkcji i została ona pobrana do funkcji mail?
	// potrzebuję w zmiennych w treści wiadomości podać wartości z bazy
	mail($email, $temat, $message, $headers); // wysłanie wiadomosci
}

Mogę jakoś tę treść wiadomości umieścić w funkcji i wywołać jak tak jak tu ?

1 odpowiedź

0 głosów
odpowiedź 14 grudnia 2015 przez efiku Szeryf (75,160 p.)
edycja 14 grudnia 2015 przez efiku

1. Poczytać w manualu o funkcjach i argumentach 

Na przykład: 
2. Napisać sobie funkcję która będzie się zajmować pobieraniem danych użytkowników , tutaj maila i daty abonamentu zwróci kolekcję użytkowników.

3 Napisać sobie funkcję która będzie zajmować się obliczaniem różnicy między aktualną datą a tamtą w bazie ( DateTime klasa lub Carbon ) i będzie zwracać string z pozostałymi dniami.

4.  Skorzystać z biblioteki http://swiftmailer.org/ do wysyłania maili a nie mail().

komentarz 14 grudnia 2015 przez efiku Szeryf (75,160 p.)

2. 

<?php
 
function getUsersData( \PDO $pdo) {
    $query =  $pdo->query( "SELECT name,mail FROM users" ); 
    return  $query->fetchAll( PDO::FETCH_OBJ ) ;
}

function calculateDate( $date ) {

  $currentDate = new DateTime();
  $diff = $currentDate->diff( new DateTime($date) ) ;
 return $diff;
}

$users = getUsersData($connection);

foreach( $users as $user ){
    
    $dateEnd = calculateDate( $user->date );
   
   $message =  sprintf("Twoj abonamnet konczy sie za %s dni" , $dateEnd->format("%d"));
    // mailer 
   
}

PS: sprawdzaj sobie czy diff nie zwrócił czasem invert ;)

https://3v4l.org/ajLm2

komentarz 14 grudnia 2015 przez kaminiak23 Użytkownik (640 p.)
Dzięki za odpowiedzi ale wydaje mi się, że chyba nie do końca one są na moje pytanie. Najpewniej dokładnie przeczytaliście czego potrzebuję ale z tego co czytam to chyba nie (nie denerwujcie się jeśli jest inaczej).

Jako początkujący może robię to nie do końca poprawnie jednak to mi działa jak trzeba tylko nie umiem zrobić tak jak opisałem. Umiem powyciągać wszystkie potrzebne mi wartości tylko nie wiem czy można w funkcji zrobić zmienną z treścią i później w if umieścić taką funkcję w taki sposób aby zmienna ta była dostępna w tym if i aby ta właśnie zmienna została użyta do funkcji mail();

dzięki za inne wskazówki, poczytam o tym.
komentarz 14 grudnia 2015 przez efiku Szeryf (75,160 p.)

Odpowiedź jest rozwiązaniem na Twoje pytanie :P Normalny gotowiec :P
 

Jako początkujący może robię to nie do końca poprawnie jednak to mi działa jak trzeba tylko nie umiem zrobić tak jak opisałem. Umiem powyciągać wszystkie potrzebne mi wartości tylko nie wiem czy można w funkcji zrobić zmienną z treścią i później w if umieścić taką funkcję w taki sposób aby zmienna ta była dostępna w tym if i aby ta właśnie zmienna została użyta do funkcji mail();

 

Dlatego 1 link kieruje do manuala, abyś poczytał o argumentach funkcji i zwracaniu wartości.

<?php

function wiadomosc( $datakonca ){
   return "Abonament konczy sie .. " . $datakonca ;
}

if( costam) {
     $data = "20-12-2015";
    mail ( cos, cos , cos , wiadomosc($data) );
}

 

komentarz 14 grudnia 2015 przez efiku Szeryf (75,160 p.)

Jako początkujący może robię to nie do końca poprawnie jednak to mi działa jak trzeba tylko nie umiem zrobić tak jak opisałem. 

Jeżeli nie masz testów, to nie możesz mówić, że działa jak trzeba :P

komentarz 14 grudnia 2015 przez kaminiak23 Użytkownik (640 p.)
Dziękuję, juz sprawdzam to.
niestety ten manual nigdy mi nie pomaga, chyba zrozumienie z angielskiego jest za słabe.
komentarz 14 grudnia 2015 przez kaminiak23 Użytkownik (640 p.)
Jak nie mam jak mam :D, cały czas testuje co dociera i jak to działa :)

Podobne pytania

0 głosów
2 odpowiedzi 973 wizyt
pytanie zadane 17 grudnia 2015 w C i C++ przez Arowsky Początkujący (260 p.)
0 głosów
1 odpowiedź 183 wizyt
0 głosów
0 odpowiedzi 218 wizyt
pytanie zadane 3 września 2018 w C i C++ przez KaRoLiNakk Nowicjusz (160 p.)

93,187 zapytań

142,203 odpowiedzi

322,023 komentarzy

62,513 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 2581p. - dia-Chann
  2. 2537p. - Łukasz Piwowar
  3. 2528p. - Łukasz Eckert
  4. 2514p. - CC PL
  5. 2445p. - Łukasz Siedlecki
  6. 2443p. - rucin93
  7. 2252p. - Tomasz Bielak
  8. 2201p. - Michal Drewniak
  9. 2156p. - Marcin Putra
  10. 2152p. - Adrian Wieprzkowicz
  11. 2105p. - Mikbac
  12. 1941p. - Anonim 3619784
  13. 1733p. - rafalszastok
  14. 1480p. - Michał Telesz
  15. 1469p. - ssynowiec
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...