Système de notification

Eléphanteau du PHP | 35 Messages

05 juil. 2016, 14:08

Bonjour a tous;
ça fait quelques temps que je développe en PHP.Actuellement je suis entrain de travailler sur un projet dans mon entreprise qui permettra de gérer les pannes informatiques qui s'y produisent. L'application dispose des interfaces clients où les simples utilisateurs peuvent enregistrer des informations concernant les pannes aux quelles ils sont confrontés.
J'aimerais alors mettre en place un système de notification qui me permettra à ce que si un utilisateur enregistre des informations liées à une panne, je reçois en retour une notification pour que je puisse consulter l'information enregistrée.
Autrement dit,chaque fois qu'il y a un enregistrement opéré dans une table, je reçois une notification en tant qu'administrateur.
Je vois pas par où commencer, c'est pour cela que je me suis tourné à ce forum pour voir s'il y a quelqu'un qui peut m'aider.
Merci à vous pour votre aide

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8756 Messages

05 juil. 2016, 14:20

salut,

il faut voir ce que tu entends par notification :
- par email ? => très utilise la fonction mail, ou mieux phpmailer, en fin de validation du formulaire d'insertion pour envoyer un mail avec l'info de consultation à une liste de diffusion (parce que tu as le droit de prendre des vacances et / ou de pas bosser seul ;))
- sur l'application en fonction du profile, la il te faut savoir si il y aune nouvelle panne. Pour cela il y a plein de solution. Par exemple alimenter un tableau dans un cookie (durée de vie longue) qui contient tout ce que la personne connectée à déjà vue.
- sur l'application en fonction du profile l'application affiche toute seule les notifications.
deux solutions à base de JS : un script qui requête régulièrement le serveur pour savoir s'il y a de nouvelle panne et le cas échéant l'indiquer
Le serveur pousse l'info via websocket

Dans toue les casle système le plus fiable est, à mon avis, une table d'association "panne - utilisateur" pour savoir si l'utilisateur à déjà, ou non affiché la panne.
S'il suffit que la chose soit vue par une seule personne il est possible de simplement ajouter un flag en base (une colonne) pour indiquer qu'elle a été lue (par exemple une colonne état : créée, lue, en cours, traité).

La partie la plus dure étant de déterminer comment l'on sait qu'il s'agit d'une nouvelle panne.
Moi j'utiliserais le système de table d'association stockant les "lectures" afin d'éviter les problèmes de multiple affichage de notification (cookie supprimé ou inexistant etc).

la requête pour avoir les pannes non lues est simple
select, les, champ from pannes where idpanne not in (select id_panne from panneslues where id_utilisateur=xxx) order by date_creation asc.
Où xxx est l'id de la personne connectée.
si la liste est vide pas de notification.

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 35 Messages

05 juil. 2016, 17:47

salut,
Merci beaucoup pour toutes les informations que tu viens de me donner. Pour l'application,je serai l'administrateur mais comme chaque fois qu'il y a une panne, j'aimerais que les autres informaticiens de mon équipe soient informés car on dispose d'un groupe de mail pour les informaticiens dans Exchange au sein de notre entreprise .Dès lors, l'option concernant la notification par mail me semble appropriée. Tu aurais une idée sur la façon d'implémenter une telle fonction sous PHP?
Merci encore pour tes informations.

il faut voir ce que tu entends par notification :
- par email ? => très utilise la fonction mail, ou mieux phpmailer, en fin de validation du formulaire d'insertion pour envoyer un mail avec l'info de consultation à une liste de diffusion (parce que tu as le droit de prendre des vacances et / ou de pas bosser seul ;))
- sur l'application en fonction du profile, la il te faut savoir si il y aune nouvelle panne. Pour cela il y a plein de solution. Par exemple alimenter un tableau dans un cookie (durée de vie longue) qui contient tout ce que la personne connectée à déjà vue.
- sur l'application en fonction du profile l'application affiche toute seule les notifications.
deux solutions à base de JS : un script qui requête régulièrement le serveur pour savoir s'il y a de nouvelle panne et le cas échéant l'indiquer
Le serveur pousse l'info via websocket

Dans toue les casle système le plus fiable est, à mon avis, une table d'association "panne - utilisateur" pour savoir si l'utilisateur à déjà, ou non affiché la panne.
S'il suffit que la chose soit vue par une seule personne il est possible de simplement ajouter un flag en base (une colonne) pour indiquer qu'elle a été lue (par exemple une colonne état : créée, lue, en cours, traité).

La partie la plus dure étant de déterminer comment l'on sait qu'il s'agit d'une nouvelle panne.
Moi j'utiliserais le système de table d'association stockant les "lectures" afin d'éviter les problèmes de multiple affichage de notification (cookie supprimé ou inexistant etc).

la requête pour avoir les pannes non lues est simple
select, les, champ from pannes where idpanne not in (select id_panne from panneslues where id_utilisateur=xxx) order by date_creation asc.
Où xxx est l'id de la personne connectée.
si la liste est vide pas de notification.

@+

Eléphanteau du PHP | 35 Messages

05 juil. 2016, 17:48

Merci beaucoup pour toutes les informations que tu viens de me donner. Pour l'application,je serai l'administrateur mais comme chaque fois qu'il y a une panne, j'aimerais que les autres informaticiens de mon équipe soient informés car on dispose d'un groupe de mail pour les informaticiens dans Exchange au sein de notre entreprise .Dès lors, l'option concernant la notification par mail me semble appropriée. Tu aurais une idée sur la façon d'implémenter une telle fonction sous PHP?
Merci encore pour tes informations.

Mammouth du PHP | 1365 Messages

05 juil. 2016, 17:55

mail("[email protected]", "Notification pb", "du texte");

Mammouth du PHP | 737 Messages

05 juil. 2016, 18:24

Salut,
Pourquoi vouloir réinventer la roue ? De mémoire il y en avait pas mal qui faisaient le taf en PHP en plus SVP : )
Un nom parmis d'autres ; mantis bug tracker (s'il est toujours gratuit)
C'était un bon produit, je dis ça, je dis rien ;)
Mega
;)
Dyslexics are teople poo

Petit nouveau ! | 1 Messages

05 juil. 2016, 21:49

Il existe aussi Bugzilla !!
un peu de configuration, mais ça répond à ton besoin, sinon comme l'a dit Megadeth, dans le code ou tu effectue la sauvegarde de la panne tu ajoutes de la fonction d’envoie mail

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8756 Messages

06 juil. 2016, 09:06

Merci beaucoup pour toutes les informations que tu viens de me donner. Pour l'application,je serai l'administrateur mais comme chaque fois qu'il y a une panne, j'aimerais que les autres informaticiens de mon équipe soient informés car on dispose d'un groupe de mail pour les informaticiens dans Exchange au sein de notre entreprise .Dès lors, l'option concernant la notification par mail me semble appropriée. Tu aurais une idée sur la façon d'implémenter une telle fonction sous PHP?
Merci encore pour tes informations.
Le plus efficace c'est d'utiliser PHPMailer ;)

après sans code on ne peux pas te dire exactement où utiliser cela (ou alors en trois lettres mais c'est pas sympa ;) ).
du coup je me répète, ainsi que les autres, à la validation du formulaire tu insère en base la saisie et ben juste après tu envois l'email ;)


pour ce qui est déjà existant Jira c'est le mieux :) (bon le prix est bien aussi ;) )

@+
Il en faut peu pour être heureux ......

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10467 Messages

06 juil. 2016, 11:02

Pourquoi vouloir réinventer la roue ?
Parce que ce n'est pas en améliorant la bougie qu'on a inventé l'ampoule ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Mammouth du PHP | 737 Messages

06 juil. 2016, 13:32

Pourquoi vouloir réinventer la roue ?
Parce que ce n'est pas en améliorant la bougie qu'on a inventé l'ampoule ;)
Image

Mega
;)
Dyslexics are teople poo

Eléphanteau du PHP | 35 Messages

08 juil. 2016, 15:39

Salut à tous,
Je reviens à vous pour vous demander encore de l'aide par rapport à l'envoie de mail en php.
J'ai réalisé un petit bout de code pour faire le test d'envoie du mail:
<?php
$from="[email protected]";
$email=$_POST['email'];
$sujet=$_POST['sujet'];
$message=$_POST['message'];
if(mail($email, $sujet, $message,"From:".$from))
echo "Message envoyé";
else
echo "Erreur";

?>
J'ai téléchargé sendmail et j'ai fait toutes les configurations au niveau de WampServer mais chaque que j'envoie un mail; il y a échec comme j'ai mis un if pour vérifier.
Quelqu'un aurait une idée à quoi est du ce problème.
Configuration dans sendmail.ini:
[sendmail]
smtp_server=smtp.gmail.com
smtp_port=587
smtp_ssl=auto
default_domain=gmail.com
error_logfile=error.log
auth_username=********
auth_password=********
pop3_server=
pop3_username=
pop3_password=
force_sender=*******
force_recipient=
hostname=
Modifié en dernier par moogli le 11 juil. 2016, 11:50, modifié 1 fois.
Raison : suppression email (histoire d'éviter de possible spam ;) )

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8756 Messages

11 juil. 2016, 11:54

salut,

Si tu n'as pas la main sur le serveur de production utilise plutôt phpmailer ;)

en dehors de cela : quel est l'erreur ?
As-tu testé sendmail seul ?
est ce qu'il y a des infos dans les logs de sendmail (/var/log/sendmail ?)

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 35 Messages

11 juil. 2016, 12:00

Ok merci,je vais essayer phpmailer pour voir si ça fonctionne

Eléphanteau du PHP | 35 Messages

14 juil. 2016, 12:12

Moogli,
Phpmailer que tu m'as proposé marche à merveille pour mes notifications, merci beaucoup.
Mais j'ai encore une petite question à te demander,lorsque j'intègre un lien dans le contenu du mail et que le mail de destination est yahoo.fr; le mail arrive avec le lien. Mais comme dans notre banque, on utilise Outlook,si j'intègre le lien dans le mail; ce mail n'arrive pas dans mon compte Outlook.
Voici le lien que j'ai mis dans le contenu du mail:
$mail->Body ="<a href='http://localhost/BcbHelpDesk/listeMater ... p'>Cliquez ici pour vous connecter a BCB HelpDesk</a>";
Ce problème tu penses qu'il est du à quoi?
Merci encore.