Skip to content

Instantly share code, notes, and snippets.

@mbougarne
Created April 7, 2020 15:06
Show Gist options
  • Select an option

  • Save mbougarne/c6a166f237b56a0f903da648ad316b51 to your computer and use it in GitHub Desktop.

Select an option

Save mbougarne/c6a166f237b56a0f903da648ad316b51 to your computer and use it in GitHub Desktop.
PHP CRON - باش ترسل إيمايلات لناس لي فاتوا وقت لخلاص

السلام عليكم

أنا حاولت ما أمكن ندري شي حاجة بسيطة باش تفهمي كيفاش ممكن ديريها غا نعطي أمثلة ونت كملي من عندك.

نقولوا مثلا عندك جدول في قاعدة البيانات ديال زبائن بهذ شكل

first_name last_name email paid_at next_payment_at
John Doe contact@mbougarne.me 2020-04-06 14:09:02 2020-04-06 14:09:02

يمكن ليك تجيبي لي ممخلصين في مدة ديال سيمانة من قاعدة لبيانات بحال هاكا

SELECT email, first_name FROM `clients` WHERE next_payment_at < CURDATE() - INTERVAL 1 WEEK

أو يمكن ليك ديريها بل PHP

<?php

$next_payment_date = '2020-02-05 13:33:12'; // من قاعدة البيانات
$start_date = new DateTime(); // الوقت لحالي لي غا تبداي منو لحساب
$deadline_date = date_create($next_payment_date); // أخر أجل باش يخلصو

$calculate_time_and_get_difference = date_diff($end, $start);
# $diff->days; // لأياام حنا فين ممكت تبداي الحساب

دابا على حساب داك شي غا نبداو الحساب ولكن انا غا نستعمل طريقة ديال MYSQL باش نجيبهم من داتا باو ورسل ليهم ديركت

$hostname = 'localhost';
$username = 'username';
$password = 'password';
$database_name = 'database_name';

/**
 * ممكن تستعملي هذ الطريقة 
 */
try {

    $connect = new mysqli($hostname, $username, $password, $database_name);
    
} catch(\Exception $e) {

    die("There is an issue in database connection: " . $e->getMessage());

}

/**
 *  أو ممكن تستعملي هذ الطريقة
 * ستعملي وحدة فيهم
 */

$connect = new mysqli($hostname, $username, $password, $database_name);

if($connect->connect_error)
{
    die("There is an issue in database connection: " . $connect->connect_error);
}

/**
 * بدلي هذي لداك شي لي بغيتي
 * 1 WEEK
 * 1 DAY
 * 1 HOUR
 * 50 MINUTE
 * 2 MONTH
 * ...
 */

$query = "SELECT email, first_name 
            FROM `clients` 
            WHERE next_payment_at < CURDATE() - INTERVAL 1 WEEK";

$result = $connect->query($query);

if(!$result->num_rows)
{
    die("There result is empty " . $result->num_rows);
}

$clients = $result->fetch_assoc();

foreach($clients as $clients)
{
    send_email($client['email'], $client['first_name']);
}


/**
 *  هذي هي فانكشن لي غا رسلو بيها الإيمايلات
 * 
 */

 function send_email($email, $client_name)
 {
    $subject = "خلصنا الله يرحم لوالدين";
    $body = "
        سلام عليكم $client_name

        أولد الناس لجات على خاطرك خلصنا راه مزيرين

        شكرا
    ";

    // PHP 7.2+
    $headers = [
        'MIME' => "MIME-Version: 1.0",
        'Content-type' => "text/html;charset=UTF-8",
        'From' => "your@email.org",
        'X-Mailer' => 'PHP/' . phpversion(),
    ];

    // لا عندك نسخة قديمة من PHP
    // يا لفويقاني يا هذا لي لتحث واحد فيهم
    $headers[] = 'MIME-Version: 1.0';
    $headers[] = 'Content-type: text/html; charset=iso-8859-1';
    $headers[] = 'From: your@email.org';
    $headers[] = 'Cc: copyto@email.org';

    mail($email, $subject, $body, $headers);
 }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment