Здравствуйте!
Есть следующая логика:
1. пользователь заполняет данные заказа трансфера -> редиректит на гейт оплаты (stripe ) -> если данные ОК, оплата ОК -> сохраняем все в базу.
2. Если данные сохранились -> выбираем всех водителей с базы -> для каждого водителя генерируем URL по которому водитель может принять заказ -> каждому водителю отправляем email с этим URL
3. "Кто первый тот молодец" - у каждого водителя своя ссылка ($url). Тут мы потом парсим и получаем ID водителя, который сохраняем в driver_id.
$connection = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME);
$connection->set_charset("utf8");
$email_carrier_mode = 'drivers';
if (!$connection) {
die("Connection failed: " . mysqli_connect_error());
// TODO : проверить последнюю оплату и если ошибка, сделать refund - commision - сохранить лог
} else {
// получаем все данные
$departureaddress = $_SESSION['departureaddress'];
...
if (isset(
$_SESSION['order_id'],
...
)) {
// сохраняем
$sql = "INSERT INTO orders ( ' ', ...) VALUES ( ' ', ...)";
$query = mysqli_query($connection,$sql);
if($query){
// если был указан код скидки, код в базе уменьшаем на 1
if(!empty($discount_name)){
$update = "UPDATE discount SET quantity = quantity - 1 WHERE discountname = '$discount_name'";
mysqli_query($connection, $update);
}
$root = ROOT.'/orders';
$file = '/'.$transfer_type.'-'.$order_id.'.html';
if( !file_exists($file)) {
$fp = fopen($root . $file, "w"); // создаем файл
$replace = array( ' ', ... );
$with = array( );
ob_start();
include('html-template-web.html');
$ob = ob_get_clean();
fwrite($fp, str_replace($replace, $with, $ob));
fclose ($fp);
}
// отправляем емайл на почту или водителям
$mail = new PHPMailer();
$mail->isSMTP();
$mail->Host = 'smtp.gmail.com';
$mail->Port = 587;
$mail->SMTPAuth = true;
$mail->SMTPSecure = 'tls';
$mail->Username = '';
$mail->Password = '';
$mail->CharSet = 'utf-8';
if($email_carrier_mode = 'dispatch'){
ob_start();
include("html-template-carrier.php");
$template_carrier = ob_get_contents();
ob_end_clean();
$mail->setFrom($email, $name);
$mail->addAddress('booking@intaxi.si');
$mail->Subject = 'New "'.$transfer_type.'" order from intaxi.si ';
$mail->msgHTML(''.$template_carrier.'');
$mail->send();
}else if ($email_carrier_mode = 'drivers'){
$driver_get = "SELECT * FROM drivers";
$check_driver = mysqli_query($connection, $driver_get);
ob_start();
include("html-template-driver-short.php");
$template_driver = ob_get_contents();
ob_end_clean();
while($row = mysqli_fetch_array($check_driver)){
$mail->setFrom('booking@intaxi.si', 'TransferWay - inTaxi.si');
$mail->addAddress($row['email']);
$mail->Subject = '[ CONFIRM RIDE ] - Your get new ride from TransferWay.';
$url = "https://intaxi.si/accepted.php?order_id=".$order_id."&driver_id=".$row['id'];
$mail->msgHTML(' Please confirm ride with this URL - '.$url.'');
$mail->send();
}
} else if($email_carrier_mode = 'automate'){
// интеграция с HiTaxi Dispatch System
}
// перенаправляем на success.php
header("Location: https://intaxi.si/success.php");
}else{
$msg = "Data insert into db ERROR";
// TODO: проверить последнюю оплату и если ошибка, сделать refund - commision - сохранить лог
header("Location: https://intaxi.si/cancel.php");
exit();
}
} else {
// TODO: проверить последнюю оплату и если ошибка, сделать refund - commision - сохранить лог
header("Location: https://intaxi.si/cancel.php");
exit();
}
}
mysqli_close($connection);
Код рабочий, но при попытке отправить email водителям происходит следующее:
Если в базе 10 водителей
водитель id1 - получит 10 мейлов в каждом будет сгенерирована ссылка.
водитель id2 - получит 9 мейлов в каждом будет сгенерирована ссылка.
...
водитель id10 - получит 1 эмайл со своей ссылкой.
я понимаю что проблема в
while($row = mysqli_fetch_array($check_driver)){
$mail->setFrom('booking@intaxi.si', 'TransferWay - inTaxi.si');
$mail->addAddress($row['email']);
$mail->Subject = '[ CONFIRM RIDE ] - Your get new ride from TransferWay.';
$url = "https://intaxi.si/accepted.php?order_id=".$order_id."&driver_id=".$row['id'];
$mail->msgHTML(' Please confirm ride with this URL - '.$url.'');
$mail->send();
}
но так и не понял как правильно реализовать :/
может для этого while() и не подходит ?
Прошу помощи знающих :)