IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Email automatique pour date expiration


Sujet :

PHP & Base de données

  1. #1
    Membre éprouvé
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Par défaut Email automatique pour date expiration
    bonjour,
    j ai utiliser le tuto : http://matthieu.developpez.com/execution_periodique

    car je v ai executer un script pour envoyer a mes annonceur un email automatique quand la date de leur fin de compte approche:
    j ai creer la page Email_auto.php:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    <?php
    set_time_limit(0);/*permet au script de s'éxécuter indéfiniment */
    ignore_user_abort(1);//La fermeture du navigateur peut être ignorée par
     
    function fini()
    {
    	fopen('./ERREUR', 'w');
    }
     
    register_shutdown_function(fini());
     
    while(1)
    {
    	if file_exists('STOP') { die("script arrêté. Effacez le fichier STOP avant de reprendre") }
     
    	$next = getNextExecutionTime();			/* on récupère l'heure (timestamp) de la prochaine éxécution */
    	$indexScript = getNextExecutionScript();	/* on récupère le numéro du prochain script à éxécuter */
    	$dodo = $next - time();				/* le temps en seconde qu'il faut pour arriver à $next */
    	sleep($dodo);					/* on dort jusqu'à ce qu'il soit temps d'éxécuter le script */
    	fopen($scripts[$indexScript]['EmailAutomatique.php'], 'r') /* on lance le script. */
    							/* fopen peut être remplacé par une autre méthode, (shell_exec...) */
    	$scripts[$indexScript]['prochain'] = setNextExecutionTimeForScript($indexScript); /* prochaine éxécution */ 
    }
    function getNextExecutionScript()
    {
    	global $scripts;
     
    	foreach($scripts as $index => $script)
    	{
    		if($script['prochain'] < $min || !(isset($min)))
    		{
    			$min = $script['prochain'];
    			$minIndex = $index;
    		}
    	}
    	return $minIndex;
    }
    function setNextExecutionTimeForScript($indexScript)
    { 
    	global  $scripts, $a, $m, $j, $h, $min;
     
    	$aNow = date("Y");
    	$mNow = date("m");
    	$jNow = date("d");
    	$hNow = date("H");
    	$minNow = date("i")+1;
     
    	$a = $aNow;
    	$m = $mNow - 1;
     
    	while(prochainMois($indexScript) != -1)			/* on parcourt tous les mois de l'intervalle demandé */
    	{							/* jusqu'à trouver une réponse convanable */
    		if ($m != $mNow || $a != $aNow)			/*si ce n'est pas ce mois ci */
    		{
    			$j = 0;
    			if (prochainJour($indexScript) == -1)	/* le premier jour trouvé sera le bon. */
    			{					/*  -1 si l'intersection entre jour de semaine */
    								/* et jour du mois est nulle */
    				continue;			/* ...auquel cas on passe au mois suivant */
    			}else{					/* s'il y a un jour */
    				$h=-1;
    				prochainHeure($indexScript);	/* la première heure et la première minute conviendront*/
    				$min = -1;
    				prochainMinute($indexScript);
    				return mktime($h, $min, 0, $m, $j, $a);
    			}
    		}else{						/* c'est ce mois ci */
    			$j = $jNow-1;					
    			while(prochainJour($indexScript) != -1)	/* on cherche un jour à partir d'aujourd'hui compris */
    			{
    				if ($j > $jNow)			/* si ce n'est pas aujourd'hui */
    				{				/* on prend les premiers résultats */
    					$h=-1;
    					prochainHeure($indexScript);
    					$min = -1;
    					prochainMinute($indexScript);
    					return mktime($h, $min, 0, $m, $j, $a);
    				}
    				if ($j == $jNow)		/* même algo pour les heures et les minutes */
    				{
    					$h = $hNow - 1;
    					while(prochainHeure($indexScript) != -1)
    					{
    						if ($h > $hNow)
    						{
    							$min = -1;
    							prochainMinute($indexScript);
    							return mktime($h, $min, 0, $m, $j, $a);
    						}
    						if ($h == $hNow)
    						{
    							$min = $minNow - 1;
    							while(prochainMinute($indexScript) != -1)
    							{
    								if ($min > $minNow) { return mktime($h, $min, 0, $m, $j, $a); }
     
    								/* si c'est maintenant, on l'éxécute directement */
    								if ($min == $minNow)
    								{
    									fopen($scripts[$indexScript]['URLScript'], 'r');
    								}
    							}
    						}						
    					}
    				}
    			}
    		}
    	}
    }
    ?>
    page qui fait appell le script:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    <?php
    include("include/session.php");
    $liste_annonce= ('SELECT * FROM annonce');
     
    $anonce	=  mysql_query($liste_annonce) or die('Erreur SQL !'.$liste_annonce.'<br>'.mysql_error());
     
    while($date = mysql_fetch_assoc($annonce))
    {
    	$date_Email=$date['date']+20 ;
    	$date_now=date("d m Y");
     
    	if($date_Email==$date_now)
    	{
    		echo 1;
     
    		$q = mysql_query("SELECT * FROM annonce,pro,annonceur where 
    annonce.num_annonceur=pro.ref_pro
    and annonceur.num_annonceur=pro.ref_pro"); // requete
    		$compteur=1; // variable pour compter les mails
    		while ($r = mysql_fetch_array($q)) { 
    			if($q["type_annonceur"]==1)
    			{
    				$e_mail = $r['email_pro']; //prend l'email de la table
    			}
    			else
    			{ 
    				$e_mail = $r['email']; //prend l'email de la table}
    			}
    			// 1 exemple de contenu du mail
    			$contenu = 'Bonjour! <br />Email : '.$e_mail.'<br /><br />';
    			$contenu .= 'Votre annonce arrive a expiration  le '.$q["date_expiration"].' <br />';
     
    			$contenu .= 'Au revoir <br /><br />';
     
    			// envoi du mail HTML
    			$from = "From: hello <www.idealeparution.fr>\nMime-Version:";
    			$from .= " 1.0\nContent-Type: text/html; charset=ISO-8859-1\n";
    			// envoie du mail
    			mail($e_mail,$titre,$contenu,$from);
     
     
    			$compteur++; // ajoute 1 à la variale du compteur
    		}  // fin du while 
     
    		// On se déconnecte de MySQL
    		mysql_close();
     
     
    	}
    	?>
    pouvez vous m aider car je n ai aucun mail envoyer alors que j ai remlacer par ca aucun mail envoyer. $date_Email=$date['date'];

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 60
    Par défaut
    A mon avis, on peut voir ça de deux façons :

    soit ton serveur n'est pas configurer pour envoyer les mail,
    soit le souci viens de ton script


    Est-ce que tu as déja réussi à envoyer des mails sur ton serveur ?

Discussions similaires

  1. Email automatique à la date d'échéance
    Par Lionel921 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 12/10/2012, 16h54
  2. [SP-2007] date de modification automatique pour une seule colonne
    Par Bois990 dans le forum SharePoint
    Réponses: 5
    Dernier message: 15/03/2012, 15h42
  3. Formule pour date automatique DEVIS
    Par ommadown dans le forum Excel
    Réponses: 1
    Dernier message: 16/09/2010, 08h14
  4. [AC-2007] Gérer une année automatiquement pour déduire une date
    Par tibofo dans le forum VBA Access
    Réponses: 8
    Dernier message: 16/07/2010, 19h47
  5. séparateur automatique pour les dates
    Par laurent53 dans le forum Excel
    Réponses: 3
    Dernier message: 27/09/2008, 17h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo