Supprimer des anciennes données quand on en renseigne des nouvelles

Résolu
Dwight -  
 Dwight -
Bonjour,

Alors c'est compliqué à expliquer mais c'est pas grave ahah.
J'ai un site internet avec une page spécifique pour l'admin qui lui permet d'envoyer des factures à ses clients et quand il clique sur un client pour lui envoyer un mail, il peut choisir un email secondaire pour envoyer par exemple une facture en copie au comptable de l'autre société ou quelque chose comme ça.

J'aimerai donc qu'a chaque fois que nous renvoyons un mail à un client en choisissant que une adresse, que l'adresse en secondaire rentré la dernière fois ce supprime, j'aimerai donc en gros qu'a chaque fois qu'on re remplie l'adresse d'une personne, les précédentes données ce supprime.

Je ne sais pas si vous m'avez totalement compris mais je suis à disposition si jamais vous avez des questions et je remercie déjà les personnes qui vont m'aider à avancer.
A voir également:

6 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
bonjour,
j'imagine qu'il suffit d'adapter la requête UPDATE.
1
Dwight
 
Oui c'est ça, mais je ne sais pas trop comment faire pour bien l'adapter....
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > Dwight
 
peut-être y inclure l'adresse en secondaire.
0
Dwight > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
En fait imaginons hier j'envoie un mail aux deux adresses, et aujourd'hui j'envoie un mail que a une adresse, dans mon champ de mail sur mon site pour l'accusé de réception, ça prend en compte le dernier changement sauf que comme j'ai remplis qu'une adresse, la deuxieme qui avait été remplis hier va rester. Donc j'aimerai qu'a chaque changement, à chaque renvoie de mail, que ça supprime les anciennes données.
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > Dwight
 
cela devient plus clair.
précise maintenant dans quelle table et dans quels champs sont mémorisées ces deux adresses.
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
je suppose qu'il s'agit de la table gestionmail, que la seconde adresse est dans le champ mailCopie, mais je ne vois pas le champ de la première adresse.
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour,

Le problème ... c'est que nous ne savons rien du code que tu utilises pour faire ce traitement ..... c'est pour ça que les réponses d'yg_be sont aussi évasives...
Si tu ne nous montres pas comment c'est fait ( le code.. ) IMPOSSIBLE de te répondre !


NB: Pour poster ton code tu devras utiliser les balises de code.
Explications ( à lire ENTIEREMENT !!! ) disponibles ici https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
0
Dwight
 
//pour avoir les coordonnées du client
	$stmt = $pdo->prepare('SELECT * FROM clients WHERE id = :id');
		$stmt->bindValue(':id', (int)$_GET['id'], PDO::PARAM_INT);
		$stmt->execute();
		$client = $stmt->fetch();
		$stmt->closeCursor();
	
	//mettre le champ du dernier envoi mail de la table clients à jour
	$stmt = $pdo->prepare("UPDATE clients SET dernierEnvoiMail = :dernierEnvoiMail WHERE id = :id");
		$stmt->bindValue(':id', (int)$_GET['id'], PDO::PARAM_INT);
		$stmt->bindValue(':dernierEnvoiMail', date("j-m-Y H:i:s"), PDO::PARAM_STR);
		$stmt->execute();
		$stmt->closeCursor();
	
	//selectionner le modele d'email choisi
	$stmt = $pdo->prepare("SELECT * from gestionmail WHERE id = :id");
	$stmt->bindValue(':id', (int)$_POST['id'], PDO::PARAM_INT);
	$stmt->execute();
	$envoimail = $stmt->fetch();
0
Dwight > Dwight
 
$tmp_name = $_FILES["pieceJointe"]["tmp_name"];
	$name = basename($_FILES["pieceJointe"]["name"]);
	$ext = "pdf";
	$unique = uniqid(); //permet de générer un nom unique
	$newImg = $unique.'.'.$ext;
	$destination = 'piecesjointes/'.$newImg;
	move_uploaded_file($tmp_name,$destination); //envoyer vers $destination qui est le dossier "piecesjointes"
	$data = file_get_contents($destination);
	$base64 = base64_encode($data);

    if($_POST['email1']){ //S'il n'y a pas de deuxième email de renseigné
    
        $body = [
            'Messages' => [
                [
                'From' => [
                    'Email' => $envoimail['expediteur'],
                    'Name' => "a"
                ],
                'To' => [
                    [
                    'Email' => $_POST['email1'],
                    'Name' => $client['nom']
                    ]
                ],
                'Bcc' => [
            [
            'Email' => $envoimail['mailCopie'],
            'Name' => "a"
            ]
        ],
                'Subject' => $envoimail['titre'],
                'HTMLPart' => $envoimail['corpsMail'],
                'Attachments' => [
                            [
                            'ContentType' => 'application/pdf',
                            'Content' => $base64,
                            'Filename' => $_FILES['pieceJointe']['name'],
                            'Base64Content' => $base64
                            ]
                        ]
                ]
            ]
        ];
0
Dwight > Dwight
 
if($_GET['type'] == 'facturationMensuelle')
{

    $categorie = 'clients';

    $stmt = $pdo->prepare("UPDATE clients SET dernierMailjetId2 = :dernierMailjetId, dernierStatus2 = :dernierStatus WHERE id = :id");
    $stmt->bindValue(':id', (int)$_GET["id"], PDO::PARAM_INT);
    $stmt->bindValue(':dernierMailjetId', $messageId, PDO::PARAM_STR);
    $stmt->bindValue(':dernierStatus', $status, PDO::PARAM_STR);
    $stmt->execute();
    $stmt->closeCursor();


    $req = $pdo->prepare("
    INSERT INTO statusEmails(messageId, status, date, categorie, idCat,email)
    VALUES (:messageId, :status, :date, :categorie, :idCat, :email)",
    array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
    
$req->execute(
    array(
        ':messageId'=>$messageId,
        ':status'=>$status,
        ':date'=>date('Y-m-d H:i:s'),
        ':categorie'=>$categorie,
        ':idCat'=>$_GET["id"],
        ':email'=>$_POST['email2']
    ));
    

$req->closeCursor();


}
}
}
0
Dwight > Dwight
 
Je n'ai pas réussi à vous envoyez tout mon code car il y a des copier coller qui n'ont pas été accepté sur commentçamarche pour je ne sais quelle raison :/ mais je pense que j'ai envoyé le plus important, en espérant que vous puissiez m'aider avec ceci
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > Dwight
 
Donc le code semble plus concerné le PHP ... que les requêtes dans MYSQL à proprement parler non ?
Si tel est le cas, je déplacerai ta question dans le bon forum ( celui qui traite de php )

Ensuite, ben... tu nous colles des bouts de codes ... sans aucune explication....
Quelle partie, selon toi pose problème ?
Quel est le lien entre tes deux morceaux de code ( comment tu passes de l'un à l'autre ? )
Quel sont les noms des fichiers qui contiennent ces codes ?

Je suppose que ton souci se situe sur cette ligne :
   'Email' => $envoimail['mailCopie'],

et donc... d'où vient cette variable $envoimail ??

Il faudrait vraiment que tu fournisses tout ce qui est nécessaire à la résolution de ton souci au lieu de ne donner que des bribes d'informations.. Sinon on ne va pas avancer ...
0
Dwight
 
satutsEmail va récupérer les infos de distribution, savoir si l'email a été ouvert ou distribué directement depuis l'appli mailjet (c'est l'appli qui nous permet d'envoyer ces mails) et les infos date et heure pour ensuite renvoyer ces infos à "clients" et la table clients étant liée à facturationMensuelles (ma page internet où j'affiche mes clients) va afficher sur ma page les petits ronds de couleurs avec la date, l'heure et le niveau de distribution du mail.
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
C'est sacrément fouillis tes explications....

En plus.. j'ai d'avantage l'impression que c'est la façon de récupérer les données (pour afficher ou non les ronds.. ) que la façon d'insérer/supprimer d'éventuelles données...

Reprenons dans l'ordre :
En premier.... avec quel code affiches tu ta liste ( et les ronds ) ( code COMPLET ! et en précisant le nom du/des fichier(s) )



0
Dwight
 
Voici mon code où j'affiche ma liste : facturationMensuelle.php

<!DOCTYPE html>
<html lang="fr">
	<head>
		<meta charset="UTF-8">
		<title>Gestion interne clients</title>
		<link rel="stylesheet" media="screen" href="style.css">
		<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
		<link rel="shortcut icon" type="image/png" href="../images/favicon1.jpg" />
	</head>
	
	<body class="fond3">
	<?php 
	session_start();
	include('pdo.php');
	include('headeradmin.php');
	if ($_SESSION['niveau']!="admin"){ 
		header('Location:index.php?acces=interdit');
	}
	?>
	<br>
	<div style="text-align:center">
			<h1 class="h1liste">Facturation Mensuelle</h1>
	</div>
	<br>
	<div class="container" style="text-align:left; position:relative; bottom:10px">
		<a href="admin.php" class="retour"><img class="imagehome" src="icones/retour.png"></a>
	</div>
	<br>
	<?php
		$stmt = $pdo->prepare('SELECT * from modeledefaut where id = 1');
		$stmt->execute();
		$maildef=$stmt->fetch();
	?>
	<div style="text-align:center">
		<form action="mailDefautReq.php" name="form" method="POST">
			<label for="choix">Mail par défaut : </label>
			<input type="number" style="width:40px; text-align:center" name="choix" value="<?php echo $maildef['choix'] ?>">
			<button type="submit" name="submit" style="width:85px" class="btn"><img src="icones/accept.png" width="30"></button>
		</form>
	</div>
	<?php if(isset($_GET['acces']) AND $_GET['acces']=="interdit"){ ?>
		<div style="text-align:center; color:red"> Vous n'avez pas les droits d'accès à cette page ! </div><br>
	<?php } ?>
	<br>
		<?php
			$stmt = $pdo->prepare('SELECT * from clients WHERE facturationMensuelle = "oui" ORDER BY codeClient ASC');
			$stmt->execute();
			$resu=$stmt->fetchALL();
			
			// POUR LE TRI PAR CODE CLIENT
			if(isset($_GET['triCode'])){
				if($_GET['triCode']=="codeAsc"){
				$stmt = $pdo->prepare('SELECT * from clients WHERE facturationMensuelle = "oui" ORDER BY codeClient ASC');
				$stmt->execute();
				$resu=$stmt->fetchALL();
				}
				
				if($_GET['triCode']=="codeDesc"){
				$stmt = $pdo->prepare('SELECT * from clients WHERE facturationMensuelle = "oui" ORDER BY codeClient DESC');
				$stmt->execute();
				$resu=$stmt->fetchALL();
				}
			}
			
		?>
			<?php if(count($resu)==0){ ?>
				<div style="text-align:center">Aucun résultat.</div>
			<?php }else{ ?>
		<div style="text-align:center">Nombre de clients dans la liste : <?php echo count($resu) ?></div><br>
		<table>
			<tr>
				<th>
					<form method="get" action="facturationMensuelle.php">
						<?php 
						if ((!isset($_GET['triCode'])) OR isset($_GET['triCode']) AND ($_GET['triCode'] == "codeAsc")){
						?>
						<button name="triCode" value="codeDesc" style="font-weight:bold; border:none;background-color: rgba(255,255,255,0);">Code client <img style="padding-bottom:4px; width:13px" src="icones/up.png"></button>
						<?php
						}
						if (isset($_GET['triCode']) AND ($_GET['triCode'] == "codeDesc")){ 
						?>
						<button name="triCode" value="codeAsc" style="font-weight:bold; border:none;background-color: rgba(255,255,255,0);">Code client <img style="padding-bottom:4px; width:13px" src="icones/down.png"></button>
						<?php }
						?>
					</form>
				</th>
				<th>Nom</th>
			
				<th>Facture Mail</th>
                <th>Etat Mail</th>
			</tr>
			<?php 
					
				
			foreach ($resu as $res)
			{
			?>
				<tr class="trlist">
					<td style="width:150px; text-align:left; padding-left:4%"><?php echo $res['codeClient']?></td>
					<td style="width:400px; text-align:left; padding-left:10%"><?php echo $res['nom']?></td>
					
					<td style="width:200px; text-align:center"><a href="choisirPieceJointe.php?id=<?php echo $res['id']?>"> <img src="icones/mail.png" style="margin-left:5px; margin-bottom:2px; width:20px"></a></td>
                    <td style="width:200px; text-align:center">
                        <?php
                        
                        //pour avoir les coordonnées du client
                            $stmt = $pdo->prepare('SELECT * FROM statusEmails WHERE messageId = :id');
                            $stmt->bindValue(':id', (int)$res['dernierMailjetId'], PDO::PARAM_INT);
                            $stmt->execute();
                            $mailSent = $stmt->fetch();
                            $stmt->closeCursor();

                            


                        if($res['dernierStatus'] == 'queued')
                        {
                        ?>
                        <span class="badge badge-primary" style="height:10px; width:10px" data-toggle="tooltip" data-placement="top" title="<?=$res['dernierEnvoiMail']?> - <?=$mailSent['email']?>"> </span>
                            <?php
                        }
                        ?>
                    <?php
                    if($res['dernierStatus'] == 'opened')
                    {
                        ?>
                        <span class="badge badge-success" style="height:10px; width:10px" data-toggle="tooltip" data-placement="top" title="<?=$res['dernierEnvoiMail']?> - <?=$mailSent['email']?>"> </span>
                        <?php
                    }
                    ?>

                    <?php
                    if($res['dernierStatus'] == 'sent')
                    {
                        ?>
                        <span class="badge badge-secondary" style="height:10px; width:10px" data-toggle="tooltip" data-placement="top" title="<?=$res['dernierEnvoiMail']?> - <?=$mailSent['email']?>"> </span>
                        <?php
                    }
                    ?>
                    <?php
                        if($res['dernierStatus'] == 'softbounced')
                        {
                            ?>
                            <span class="badge badge-warning" style="height:10px; width:10px" data-toggle="tooltip" data-placement="top" title="<?=$res['dernierEnvoiMail']?> - <?=$mailSent['email']?>"> </span>
                            <?php
                        }
                        ?>
                    <?php
                        if($res['dernierStatus'] == 'hardbounced')
                        {
                            ?>
                            <span class="badge badge-danger" style="height:10px; width:10px" data-toggle="tooltip" data-placement="top" title="<?=$res['dernierEnvoiMail']?> - <?=$mailSent['email']?>"> </span>
                            <?php
                        }
                        ?>
                        <?php
                        if($res['dernierStatus'] == 'bounced')
                        {
                            ?>
                            <span class="badge badge-danger" style="height:10px; width:10px" data-toggle="tooltip" data-placement="top" title="<?=$res['dernierEnvoiMail']?> - <?=$mailSent['email']?>"> </span>
                            <?php
                        }
                        ?>
                        <?php
                        if($res['dernierStatus'] == 'spam')
                        {
                            ?>
                            <span class="badge badge-danger" style="height:10px; width:10px" data-toggle="tooltip" data-placement="top" title="<?=$res['dernierEnvoiMail']?> - <?=$mailSent['email']?>"> </span>
                            <?php
                        }
                        ?>
                        <?php
                            if (!empty($res['dernierMailjetId2'])){
                         //pour avoir les coordonnées du client
                         $stmt = $pdo->prepare('SELECT * FROM statusEmails WHERE messageId = :id');
                         $stmt->bindValue(':id', (int)$res['dernierMailjetId2'], PDO::PARAM_INT);
                         $stmt->execute();
                         $mailSent = $stmt->fetch();
                         $stmt->closeCursor();


                        if($res['dernierStatus2'] == 'queued')
                        {
                        ?>
                        <span class="badge badge-primary" style="height:10px; width:10px" data-toggle="tooltip" data-placement="top" title="<?=$res['dernierEnvoiMail']?> - <?=$mailSent['email']?>"> </span>
                            <?php
                        }
                        ?>
                    <?php
                    if($res['dernierStatus2'] == 'opened')
                    {
                        ?>
                        <span class="badge badge-success" style="height:10px; width:10px" data-toggle="tooltip" data-placement="top" title="<?=$res['dernierEnvoiMail']?> - <?=$mailSent['email']?>"> </span>
                        <?php
                    }
                    ?>

                    <?php
                    if($res['dernierStatus2'] == 'sent')
                    {
                        ?>
                        <span class="badge badge-secondary" style="height:10px; width:10px" data-toggle="tooltip" data-placement="top" title="<?=$res['dernierEnvoiMail']?> - <?=$mailSent['email']?>"> </span>
                        <?php
                    }
                    ?>
                    <?php
                        if($res['dernierStatus2'] == 'softbounced')
                        {
                            ?>
                            <span class="badge badge-warning" style="height:10px; width:10px" data-toggle="tooltip" data-placement="top" title="<?=$res['dernierEnvoiMail']?> - <?=$mailSent['email']?>"> </span>
                            <?php
                        }
                        ?>
                    <?php
                        if($res['dernierStatus2'] == 'hardbounced')
                        {
                            ?>
                            <span class="badge badge-danger" style="height:10px; width:10px" data-toggle="tooltip" data-placement="top" title="<?=$res['dernierEnvoiMail']?> - <?=$mailSent['email']?>"> </span>
                            <?php
                        }
                        ?>
                        <?php
                        if($res['dernierStatus2'] == 'bounced')
                        {
                            ?>
                            <span class="badge badge-danger" style="height:10px; width:10px" data-toggle="tooltip" data-placement="top" title="<?=$res['dernierEnvoiMail']?> - <?=$mailSent['email']?>"> </span>
                            <?php
                        }
                        ?>
                        <?php
                        if($res['dernierStatus2'] == 'spam')
                        {
                            ?>
                            <span class="badge badge-danger" style="height:10px; width:10px" data-toggle="tooltip" data-placement="top" title="<?=$res['dernierEnvoiMail']?> - <?=$mailSent['email']?>"> </span>
                            <?php
                        }
                    }
                        ?>
                    </td>
				</tr>				
									
			<?php
			}
			?>		
		</table>
		<br><br>
	<?php }
	?>

	<script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous"></script>
    <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script>
	</body>
</html>
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > Dwight
 
ce qui semble confirmer que le soucis vient du champ dernierStatus2 de la table clients.
c'est la couleur du rond correspondant qui n'est pas correcte? à quoi correspond cette couleur, quel est le status correspondant à cette couleur?

peux-tu partager le code complet (et le nom) du fichier dont tu as partagé une partie en #8?
tu peux aussi publier le fichier sur internet, et partager ici un lien vers le fichier.
0
Dwight > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
La couleur du rond se modifier toute seule, là par exemple si quelqu'un à son rond en gris (délivré), dès qu'il va ouvrir son mail le statut va changer et le rond va devenir vert (ouvert)

Voici mon code de envoyerMailMens.php, qui me permet une fois les emails rentrés dans mon formulaire d'envoyer toutes les données à ma liste et dans ma base de données :

https://drive.google.com/file/d/1WNrcybovsnqMXFsfa8Wku2mgKgPSVeEO/view?usp=sharing

J'ai du la mettre sur google drive car impossible de copier la page de code ici.
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > Dwight
 
si j'ai compris, le deuxième rond correspond au statut de l'envoi du mail à la deuxième adresse.
est-ce correct?
quelle est la couleur (et le status) dans le cas où le mail n'a pas été envoyé à la deuxième adresse parce qu'une deuxième adresse n'a pas été fournie?
quelle couleur souhaites-tu dans ce cas-là?
est-ce le seul soucis que tu veux résoudre?
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > Dwight
 
le fichier publié sur google drive n'est pas public.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
je pense que dans l'UPDATE de la ligne 104 de envoyerMailMens.php, il faut mettre à jour le champ dernierStatus2.
que contient-il pour les clients pour lesquels on n'a jamais utilisé la seconde adresse?
0
Dwight
 
Ah maintenant que j'y réfléchis tu as peut être raison car pour l'UPDATE de dernierStatus2, il se fait uniquement si il y a quelque chose de remplis dans mail2.

Pour les clients pour lesquels on n'a jamais utilisé la seconde adresse, ils ont uniquement un seul rond
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
en regardant mieux, je pense qu'il faut surtout vider le champ dernierMailjetId2.
0
Dwight > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
Comment faire ça ? Oui le but c'est vraiment de vider dernierMailjetId2 quand il y a seulement 1 seul destinataire de renseigné.
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > Dwight
 
en ajoutant ce champ dans l'UPDATE de la ligne 104.
quelle est la valeur de ce champ pour les clients pour lesquels on n'a jamais utilisé la seconde adresse?
0
Dwight > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
Pour tous les clients pour lesquels on n'a jamais utilisé la seconde adresse, dernierMailjetId2 et dernierStatus2 restent des champs vides.
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Je pense que le code n'est pas bien pensé.
Et il manque, à mon avis, une table intermédiaire.

Il aurait fallu que tu stockes stockes dans une table chaque envoie ( mail simple ou mail avec copie )
La table pourrait être de la forme :
envoi ( id, date )
Puis, pour chaque adresse à laquelle tu as envoyer ton mail, que tu indiques l'id dans ta table statusEmails
Table qui aurait à minima, les colonnes
messageId, id_ennvoie (l'id de l'autre table), email

De cette façon, tu n'auras plus besoin d'avoir deux requête distinctes pour récupérer les infos
et ça limiterait également les requêtes dans des boucles php (chose à éviter au maximum ! )


Au niveau de ton code php .. il serait pas mal également de factoriser un peu et éviter de dupliquer ton code html inutilement..
par exemple, quand on voit
 if($res['dernierStatus'] == 'queued')
                        {
                        ?>
                        <span class="badge badge-primary" style="height:10px; width:10px" data-toggle="tooltip" data-placement="top" title="<?=$res['dernierEnvoiMail']?> - <?=$mailSent['email']?>"> </span>
                            <?php
                        }
                        ?>
                    <?php
                    if($res['dernierStatus'] == 'opened')
                    {
                        ?>
                        <span class="badge badge-success" style="height:10px; width:10px" data-toggle="tooltip" data-placement="top" title="<?=$res['dernierEnvoiMail']?> - <?=$mailSent['email']?>"> </span>
                        <?php
                    }
                    ?>

                    <?php
                    if($res['dernierStatus'] == 'sent')
                    {
                        ?>
                        <span class="badge badge-secondary" style="height:10px; width:10px" data-toggle="tooltip" data-placement="top" title="<?=$res['dernierEnvoiMail']?> - <?=$mailSent['email']?>"> </span>
                        <?php
                    }
                    ?>

(je n'ai pris que les premiers... )
On voit que la seule chose qui change.. c'est une CLASS
Tu aurais donc pu l'écrire plus proprement comme ceci
  switch($res['dernierStatus']){
                            case "queued":
                              $class = "primary";
                              break;
                          case "opened":
                              $class = "success";
                              break;    
                          case "sent":
                              $class = "secondary";
                              break;
                          //etc...
                            
    }
 ?>
<span class="badge badge-<?php echo $class;?>" 
  style="height:10px; width:10px;" 
  data-toggle="tooltip" 
  data-placement="top" 
  title="<?=$res['dernierEnvoiMail']?> - <?=$mailSent['email']?>"> 
</span>


ça fait moins fouillis non ?

De plus, vu que tu fais du PDO, applique ce qui est indqiué dans ce lien
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Et aussi ça :
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code

0