Afficher un PopUp à la fin d'un chargement

Résolu
lzermin -  
 lzermin -
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".
A voir également:

3 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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
lzermin
 
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > lzermin
 

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 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
bonjour,
sais-tu comment faire cela en HTML?
0
lzermin
 
non :/
0
lzermin
 
Mais si c'est possible de faire ça en HTML, c'est encore mieux ahah :)
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > lzermin
 
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 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
Et tu sais comment faire ça ? Tu pourrais m'aider à faire ça ?
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > lzermin
 
0
lzermin
 
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Et le code de ta page qui contient ton bouton (le code complet !) ?
0
lzermin > jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 
<?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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > lzermin
 
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 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > lzermin
 
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