Menu

Email auto après time(7j par exemple) [Résolu]

Amnexia 83 Messages postés samedi 19 novembre 2016Date d'inscription 6 février 2018 Dernière intervention - 23 janv. 2018 à 00:27 - Dernière réponse : Amnexia 83 Messages postés samedi 19 novembre 2016Date d'inscription 6 février 2018 Dernière intervention
- 23 janv. 2018 à 17:54
Bonjour,


Voila je voudrai envoyé un mail automatiquement après une non connexion depuis 7j par exemple,
je ne sais pas trop par ou commencer
Afficher la suite 

Votre réponse

10 réponses

jordane45 21138 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 24 mai 2018 Dernière intervention - 23 janv. 2018 à 14:04
+1
Utile

Je sais faire tout ça par miracle mais quel calcule faire pour avoir un bon résultat

De quels calculs parles tu ?

Si tu as stocké les connexion en BDD ... il te suffit de faire une requête pour récupérer les personnes non connectés depuis au moins 7 jours.
Par exemple .. si tu as une table pour gérer les connexions de ce genre

CREATE TABLE IF NOT EXISTS `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `nom` varchar(50) DEFAULT NULL,
  `lastconnexion` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;


DELETE FROM `users`;
/*!40000 ALTER TABLE `users` DISABLE KEYS */;
INSERT INTO `users` (`id`, `nom`, `lastconnexion`) VALUES
	(1, 'J', '2018-01-23 13:55:20'),
	(2, 'T', '2018-01-15 13:55:20'),
	(3, 'X', '2018-01-03 13:55:20'),
	(4, 'Y', '2017-01-03 13:55:20');



Alors la requête pour récupérer ceux qui ne se sont pas connecté depuis au moins 7 jours serait du style
SELECT *
FROM users U
WHERE U.lastconnexion < NOW() - INTERVAL 1 WEEK


Pour le reste .. tu nous dis savoir le faire.. donc ça devrait aller...

Quoi qu'il en soit, si tu désires plus d'aide... il faudra revenir nous voir avec :

1 - La structure de ta table
2 - Le code que tu auras commencé à réaliser
Cette réponse vous a-t-elle aidé ?  
Amnexia 83 Messages postés samedi 19 novembre 2016Date d'inscription 6 février 2018 Dernière intervention - 23 janv. 2018 à 15:52
Voilà pour insérer j'ai tout simplement fais :

last.php
$id = $_SESSION['id'];

$requser = $bdd->prepare("UPDATE membres SET last_connection = NOW() WHERE id = ?");
$requser->execute(array($id))


check.php
Mais pour check je bug sur un truc :
$requser = $bdd->prepare("SELECT * FROM membres WHERE last_connection < NOW() - INTERVAL 1 WEEK");
$requser->execute(array());


Je met quoi dans le array ?
jordane45 21138 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 24 mai 2018 Dernière intervention > Amnexia 83 Messages postés samedi 19 novembre 2016Date d'inscription 6 février 2018 Dernière intervention - 23 janv. 2018 à 16:34
ben tu ne mets rien..

Au passage .. si je ne te l'ai pas déjà dit ... applique ceci :
http://www.commentcamarche.net/faq/46512-pdo-gerer-les-erreurs


$sql = "SELECT * FROM membres WHERE last_connection < NOW() - INTERVAL 1 WEEK";
$datas = NULL;  // ou si tu as des variables à passer : $datas = array(':variable'=>'unevaleur',':variableN'=>'uneautrevaleur')
try{
  $requser = $bdd->prepare($sql);
  $requser->execute($datas);
}catch(Exception $e){
  echo " Erreur : ".$e->getMessage();
}
Amnexia 83 Messages postés samedi 19 novembre 2016Date d'inscription 6 février 2018 Dernière intervention - 23 janv. 2018 à 17:54
Du coup j'ai un peu tout changé :
$membres = $bdd->query('SELECT * FROM membres WHERE last_connection < NOW() - INTERVAL 1 WEEK');


while($m =$membres->fetch())
{
	$id = $m['id'];
	$day_7 = $m['day_7'];
	$pseudo = $m['pseudo'];
	$recup_mail = $m['mail'];
	if($day_7 == 0)
	{
		$update_day_7abs = $bdd->prepare('UPDATE membres SET day_7 = 1 WHERE id = ?');
		$update_day_7abs->execute(array($id));

		mail($recup_mail, "Vous nous manquez - amnexia.fr", $message, $header);
	}
}
Commenter la réponse de jordane45
jordane45 21138 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 24 mai 2018 Dernière intervention - 23 janv. 2018 à 08:15
0
Utile
Déjà
Comment stockes tu les dates de connexions ? En bdd ?
Si oui sais tu écrire la requête qui te liste les personnes non connectées depuis 7 jours ?

Ensuite... Sais tu envoyer des mails en php ?

Et enfin... Serts toi des crons pour la mise en œuvre

Amnexia 83 Messages postés samedi 19 novembre 2016Date d'inscription 6 février 2018 Dernière intervention - 23 janv. 2018 à 12:57
Je sais faire tout ça par miracle mais quel calcule faire pour avoir un bon résultat
Amnexia 83 Messages postés samedi 19 novembre 2016Date d'inscription 6 février 2018 Dernière intervention - 23 janv. 2018 à 12:59
Et comment vérifier automatique sans que l'utilisateur aille sur le site, genre un script qui tourne h24 ?
Exileur 1258 Messages postés mercredi 31 août 2011Date d'inscription 21 mai 2018 Dernière intervention - 23 janv. 2018 à 13:19
Salut,

Il te faudra un CRON qui appel un script PHP (tous les Xsec/min/heure) exemple check_last_connection.php

Ce fichier devra contenir les requetes SQL et les calcules permettant de vérifier que l'utilisateur c'est connecté il y a moins de 7 jours sinon, on lui envoie un mail avec la fonction PHP http://php.net/manual/fr/function.mail.php

A plus :)
jordane45 21138 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 24 mai 2018 Dernière intervention > Exileur 1258 Messages postés mercredi 31 août 2011Date d'inscription 21 mai 2018 Dernière intervention - 23 janv. 2018 à 13:50
Bonjour Exileur,
C'est en effet la réponse que je lui ai donné.... et que je vais désormais étoffé suite à ses réponses à mes questions.
Exileur 1258 Messages postés mercredi 31 août 2011Date d'inscription 21 mai 2018 Dernière intervention - 23 janv. 2018 à 15:22
Hmm, limite, il y a même pas besoin de PHP.
Tout pourrait ce faire en bash.

Enfin a voir :)
Commenter la réponse de jordane45