Afficher un PopUp à la fin d'un chargement

Résolu/Fermé
lzermin - 1 mars 2021 à 11:22
 lzermin - 4 mars 2021 à 15:11
Bonjour,

J'ai un site internet avec un bouton qui permet de rafraichir des etats mails (distribué, ouvert, ...) sauf que la page met du temps à charger comme le rafraichissement prend du temps, j'aimerai afficher un message, un popup par exemple qui s'afficherai pendant peut être 5 secondes à la fin du chargement avec écrit par exemple "Rafraichissement des états mails terminés".

3 réponses

jordane45
Messages postés
36047
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 août 2022
4 275
1 mars 2021 à 16:17
Bonjour,

Le souci, c'est que tu mets ça un peu n'importe où ...

Si tu veux que la popup d'affiche à la fin du traitement..... il faudrait déjà nous montrer avec quel code tu fais ce traitement...
Sachant que si il se fait dans le fichier checkEmail.php ... c'est dans ce fichier qu'il faut mettre la popup ...




1
Mon checkEmail.php contient seulement ce qui me permet de voir si un mail a été ouvert ou délivré, ...

Ce bouton ou je veux mettre ce popup me permet de rafraichir la page pour que par exemple si un mail était en délivré et qu'il a été ouvert, il passera en ouvert.

Ce bouton est dans mon header et c'est juste un lien avec une icon mais quand je clique dessus, je reste sur ma page de licence, ça ne m'envoie pas sur la page checkMail, et dans ma page checkmail j'ai uniquement un code php qui me permet d'aller chercher les infos (ouvert, délivré, ...) sur mailjet et j'ai ensuite des requêtes qui permettent d'envoyer ces infos dans ma base de donnée.

Donc je pense que j'ai juste à faire ça dans mon header et non dans ma page checkEmail, mais dans ce code où il faut mettre l'URL de la page, je sais pas si je dois mettre checkEmail ou si je dois mettre la page où je suis (comme je n'entre pas dans checkEmail) mais j'ai essayé les deux cas et dans les deux cas ça n'a pas marché..
0
jordane45
Messages postés
36047
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 août 2022
4 275 > lzermin
2 mars 2021 à 11:34

bouton qui permet de rafraichir des etats mails (distribué, ouvert, ...)

Et ce bouton.. il déclenche quoi exactement si ce n'est pas une redirection ? Un code Javascript ? Code qui fait peut-être un appel ajax ??

Il faudrait vraiment que tu nous montres l'intégralité de ton code si tu veux avoir de l'aide... par ce que là, avec si peu d'informations.. difficile de t'apporter une réponse !
0
yg_be
Messages postés
20031
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
12 août 2022
1 185
1 mars 2021 à 12:04
bonjour,
sais-tu comment faire cela en HTML?
0
non :/
0
Mais si c'est possible de faire ça en HTML, c'est encore mieux ahah :)
0
yg_be
Messages postés
20031
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
12 août 2022
1 185 > lzermin
1 mars 2021 à 13:09
le PHP ne peut qu'envoyer du HTML au navigateur.
tu dois donc d'abord déterminer comment faire cela en HMTL (ou dans un script inclus dans le HTML).
0
lzermin > yg_be
Messages postés
20031
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
12 août 2022

1 mars 2021 à 13:14
Et tu sais comment faire ça ? Tu pourrais m'aider à faire ça ?
0
yg_be
Messages postés
20031
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
12 août 2022
1 185 > lzermin
1 mars 2021 à 14:21
0
Voila mon code de la page checkEmail :

<?php
include('pdo.php');



        require 'mailjet/vendor/autoload.php';
        use \Mailjet\Resources;

    $stmt = $pdo->prepare('SELECT * FROM statusEmails where status in ("sent","queued")');
    
	$stmt->execute();
    $status = $stmt->fetchAll();

    foreach($status as $res)
    {

        $id = $res['messageId'];
        

        $mj = new \Mailjet\Client('bce86e9943d59ded740db2a28c2f3083', 'a1db2837eee29a897454015828aba390');
        $response = $mj->get(Resources::$Message, ['id' => $id]);
        $response->success();
        foreach($response->getData() as $res2)
        {
            $dateT = str_replace('T',' ',$res2['ArrivedAt']);
            $date = str_replace('Z','',$dateT);
            $status = $res2['Status']; 
        }
       

               $stmt = $pdo->prepare("UPDATE statusEmails SET status = :status, date = :date  WHERE id = :id");
               $stmt->bindValue(':id', (int)$res["id"], PDO::PARAM_INT);
               $stmt->bindValue(':status', $status, PDO::PARAM_STR);
               $stmt->bindValue(':date', $date, PDO::PARAM_STR);
               $stmt->execute();
               $stmt->closeCursor();

               $table = $res['categorie'];

               if($table == 'clients')
               {
                   //pour avoir les coordonnées du client
                    $stmt = $pdo->prepare('SELECT * FROM clients WHERE dernierMailjetId = :dernierMailjetId');
                    $stmt->bindValue(':dernierMailjetId', $id, PDO::PARAM_STR);
                    $stmt->execute();
                    $client = $stmt->fetch();
                    
                    
                    if(!empty($client))
                    {
                        var_dump('mail1');
                    
                        $stmt = $pdo->prepare("UPDATE $table SET dernierStatus = :dernierStatus WHERE id = :id");
                        $stmt->bindValue(':id', (int)$res["idCat"], PDO::PARAM_INT);
                        $stmt->bindValue(':dernierStatus', $status, PDO::PARAM_STR);
                        $stmt->execute();
                        $stmt->closeCursor();
                    }
                    else {
                        
                        $stmt = $pdo->prepare("UPDATE $table SET dernierStatus2 = :dernierStatus WHERE id = :id");
                        $stmt->bindValue(':id', (int)$res["idCat"], PDO::PARAM_INT);
                        $stmt->bindValue(':dernierStatus', $status, PDO::PARAM_STR);
                        $stmt->execute();
                        $stmt->closeCursor();
                        
                    }
                    

               }
               else {
              
               $stmt = $pdo->prepare("UPDATE $table SET dernierStatus = :dernierStatus WHERE id = :id");
               $stmt->bindValue(':id', (int)$res["idCat"], PDO::PARAM_INT);
               $stmt->bindValue(':dernierStatus', $status, PDO::PARAM_STR);
               $stmt->execute();
               $stmt->closeCursor();
                    
                
            }




    }


    header('Location:'.$_SERVER['HTTP_REFERER']);
     ?>
0
jordane45
Messages postés
36047
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 août 2022
4 275
3 mars 2021 à 07:15
Et le code de ta page qui contient ton bouton (le code complet !) ?
0
lzermin > jordane45
Messages postés
36047
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 août 2022

3 mars 2021 à 10:54
<?php
		//Créer la variable $droit qui servira a chaque page si l'utilisateur (basique ou technicien) peut accèder à la page
		$stmt = $pdo->prepare('SELECT * FROM droits');
		$stmt->execute();
		$droit = $stmt->fetch();
	$stmt->closeCursor();
	
	//Créer pour chaque page la condition : si on n'est pas connecté, on retourne a l'acceuil
	if (!isset($_SESSION['niveau'])){ 
		header('Location:../index.php?erreur=acces');
	}?>
	<script>
function subb(){
    if ( confirm("Êtes-vous sûr de vouloir sauvegarder la bdd ?") )
        return true ;
    else
        return false ;
}
</script>
		<table style="width:100%">
			<tr>
			<td style="text-align:left">
				<a href="index.php"><img src="../images/S_logo_stripe.png" style="margin-left:5%" height="80" width="80" alt=""></a><br>
			</td>
			
			<td style="text-align:center">
				<br><h1>GestInfo</h1>
			</td>

			<td style="text-align:right; padding-right:1%">
						<?php
						echo $_SESSION['nom'] ;?> <a href="deconnexionReq.php" class="deconnexion"> <img src="icones/deconnexion.png" style="width:30px"></a>
						<?php if(($_SESSION['niveau']=="admin") OR ($_SESSION['niveau']=="technicien" AND $droit['techAccesAdmin']=="oui") OR ($_SESSION['niveau']=="basique" AND $droit['basiqueAccesAdmin']=="oui")){ ?>
						<a href="admin.php"><img src="icones/gearblack.png" style="width:30px"></a>
						<?php } ?>
						<a href="informations.php"><img src="icones/information.png" style="width:30px"></a>
						<?php if(($_SERVER['PHP_SELF']=='/INT/gestionclients/facturationMensuelle.php') OR ($_SERVER['PHP_SELF']=='/INT/gestionclients/esetLicences.php')){ ?>
						<a href="checkEmail.php"><img src="icones/modifier1.png" style="width:30px"></a>
						<? } ?>
						<a href="sauvegardeBdd/sauvBdd.php" onclick="return subb()"><img src="icones/disquette.png" style="width:30px"></a><br>
			</td>
			</tr>
		</table>
	<br>
0
jordane45
Messages postés
36047
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 août 2022
4 275 > lzermin
3 mars 2021 à 11:33
Ouais..
Donc, on est bien d'accord que ton "bouton" est en fait un lien qui redirige vers ton fichier php
<a href="checkEmail.php">

Je pense que pour éviter que ta page mette trois plombes à se réafficher ... qu'il serait préférable de déclencher l'appel de ton code php via de l'ajax.

Tu trouveras de nombreux exemples/tutos pour ça sur le net.
Et au cas où, voici un code qui montre l'ajax ( via jquery ) https://codes-sources.commentcamarche.net/source/102253-exemple-ajax-en-jquery
0
lzermin > jordane45
Messages postés
36047
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 août 2022

3 mars 2021 à 11:36
Merci beaucoup pour ton aide, je vais regarder ça de suite ! :)

Sauf qu'actuellement, on m'a demandé d'afficher un popup pendant le long du chargement de la page ou une fois le chargement terminé :/ Du coup pour le coup là je vais juste afficher mon popup mais je me servirai de ce que tu m'as envoyé pour mes prochaines pages de code :)
0
jordane45
Messages postés
36047
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 août 2022
4 275 > lzermin
3 mars 2021 à 22:59
Sans Ajax .. tu ne pourras afficher un popup qu'une fois terminé ..
Donc pour ça, il suffit, dans ton script checkEmail d'ajouter avant la ligne
    header('Location:'.$_SERVER['HTTP_REFERER']);

de mettre
echo "<script>alert('FINI');</script>";
0