Invio dati database via email php

Maelstrom

Nuovo Utente
23 Nov 2022
1
0
1
Buonasera,



sto creando un e-commerce che utilizza sendgrid per l'invio di email.



In pratica non appena il cliente procede all'acquisto del prodotto, la funzione invia una mail al venditore indicando il numero di ordine, il prodotto acquistato ecc prendendo questi dati dal database. Fin qui tutto bene, difatti la funzione va benissimo finché si tratta di acquisto singolo. Appena si tratta di acquisto multiplo quindi due prodotti diversi la funzione invia due email. Ho provato di tutto per far si che venga inviata una sola mail ma non riesco in alcun modo.

Procedo a postare un pezzo di codice.



Spero che qualcuno riesca ad aiutarmi.

Funzione email

PHP:
function invioemail(string $nome_pdt, float $prezzo_pdt, int $valore, string $num_ordine){
$user=$_SESSION["username"];
$note=$_SESSION['note'];
$ora=$_SESSION['ora'];
    $email = "test@test";
    $name = "test";
     $cercaordine=query("SELECT * FROM rapporti WHERE numero_ordine='$num_ordine'");
    conferma($cercaordine);
      while($row=fetch_array($cercaordine)){
    $body = <<<STRINGA_BODY
                        <div style="padding: 30px; color:#134875">
                            <h2>Ordine n.ro:<br> {$num_ordine}</h2><br>
                            <h5>Cliente: <br> {$user}</h5><br>
                           
                            <h6>Prodotto:<br> {$nome_pdt}</h6><br>
                            <h6>Prezzo:<br> {$prezzo_pdt} €</h6><br>
                           
                            <h6>Quantita:<br> {$valore}</h6><br>
                            <h6>Note: <br> {$note}</h6><br>
                            <h6>Orario:<br> {$ora}</h6>
                            <hr>
                         <div>
    
    STRINGA_BODY;
    echo $body;
    }
    $subject = "Nuovo ordine";

    $headers = array(
        'Authorization: Bearer ',
        'Content-Type: application/json'
    );

    $data = array(
        "personalizations" => array(
            array(
                "to" => array(
                    array(
                        "email" => $email,
                        "name" => $name
                    )
                )
            )
        ),
        "from" => array(
            "email" => "test@test.com"
        ),
        "subject" => $subject,
        "content" => array(
            array(
                "type" => "text/html",
                "value" => $body
            )
        )
    );

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "https://api.sendgrid.com/v3/mail/send");
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $response = curl_exec($ch);
    curl_close($ch);

    echo $response;
}

Funzioni correlate alla precedente funzione:


[PHP]function query($sql){
global $link;
return mysqli_query($link, $sql);
}

function conferma($risultato){
global $link;
If(!$risultato){
die("richiesta fallita".mysqli_error($link));
}
}

function fetch_array($risultato){

return mysqli_fetch_array($risultato);
}
 

Discussioni simili