Bonjour,
SVP comment faire pour afficher des notifications suite à une modifications dans une base de données ( ajout, suppression et mise à jour)
Bonjour,
SVP comment faire pour afficher des notifications suite à une modifications dans une base de données ( ajout, suppression et mise à jour)
Tu utilises ajax ? ou un formulaire classique en get ou post ?
tu utilises une librairie de type jquery ?
J'utilise des formulaires en post et une bibliothèque JQuery.
Merci d'avance SpaceFrog
Bonjour,
J'ai l'impression que la réponse à ton besoin serait plus à chercher du côté serveur.
Si tu utilises un serveur PHP, JSP, ASP, etc, il serait plus judicieux pour toi de poster ta demande dans le forum correspondant.
si tu utilises jquery je te conseillerais de faire tes mises à jour en ajax et d'utiliser le callback de l'ajax pour afficher tes messages de mise à jour.
le message étant lui généré par le serveur
Bonjour,
merci SpaceFrog pour ton aide, mais mon problème est que la base de données peut être modifier soit par un admin ou par un user. Par exemple, un admin ajoute un nouveau projet à la table projet (en remplissant un formulaire), alors tous les champs seront remplis sauf celle qui contient un id vers un user ( le user c'est celui auquel l'admin a assigné ce projet), et ce champ ne sera rempli qu’après que le projet soit accepté par le user. Donc au moment ou le user accepte le projet: ce champ sera rempli et je doit afficher une notification sur la page web de l'admin pour l'informer que le user à accepté le projet.
cela n'a pas grand rapport avec js...
c'est une question de gestion de profils ça se gère coté serveur avec une gestion des droits etc ...
Bonjour,
SpaceFrog, est ce que tu peux me donner plus de détails , puisque la partie gestion et accès à la BD est déjà fait, mais ce qui me reste c'est l'affichage des notifications et je ne sais pas comment le faire.
On voit ici qu'il s'agit de 2 PERSONNES DIFFERENTES !
Rien à voir avec une "notification en temps réel".
Il s'agit ici de "garder une trace" des actions réalisées, et consultables par les admins.
=> EN BASE DE DONNEES
Il faut :
1/ "au moment ou le user accepte le projet" :
=> enregistrer EN BASE DE DONNEES, pour le projet dans un champ "projet_accepte" = true/false (ou oui/non ou 0/1)
2/ QUAND l'admin se connectera, il suffit de TESTER la valeur du champ "projet_accepte" pour afficher ou non une notification :
"Projer accepté par l'utilisateur".
N.B. Et SI cela ne correspond pas (non plus) à ton besoin, c'est SANS DOUTE que tu l'as MAL EXPLIQUE...
Bonjour,
Merci jreaux62 pour ton aide.
Pour bien expliquer mon pb: dans l'application, il y a deux partie: une partie web qui fait la gestion ( par un administrateur) et l'autre partie mobile ( user) .
et les deux partie ont accès à la BD. donc moi je veux que l'administrateur soit au courant qd un user accepte le projet.
La solution que ns avons déjà adapté c'est celle que vs avez proposé: Dans l'historique l'admin peut consulter tous les projets, mais nous nous voulons que les notifications soient en temps réel: l'admin doit s'informer une fois un projet est accepté
Toute modif. en base de données est quasi-instantanée, donc consultable de suite par l'admin.
Je ne vois pas où est le problème...
Que signifie pour toi "en temps réel", puisque l'admin et le user ne sont pas sur la même machine, ni forcément connectés en même temps ?
A moins que...
... l'on envisage un fonctionnement du type Facebook ? (des "alertes" apparaissent quand un autre ajoute un message, ou autre)
Dans ce cas, sauf erreur, il faut passer par AJAX, qui va effectuer A INTERVALLE REGULIER des requêtes en base de données pour vérifier si des modifications ont été apportées.
C'est bien ça ?
J'ai dit en temps réel , car l'administrateur a pour mission de gérer les taches et de suivre le user ( c une application de webtracking) et l'administrateur et le user sont connectés en même temps.
Et qu'est ce qui empeche de fair eune mise a jour régulière de l'affichage de l'admin ?
A priori, avec ce qui t'a été répondu à ta question, et ce malgré les informations parcellaires et au compte-goutte que tu as donné, tu devrais pouvoir avancer.
Comme cela a déjà été dit, il faut que tu fasses une recherche du côté de l'AJAX et plus précisément de l'objet XMLHttpRequest qui te permettra d'appeler à intervalle régulier un script PHP qui lui-même devra renvoyer un résultat au format XML.
Le script PHP sera celui qui ira interroger l'historique des changements de ta BD pour savoir s'il y a quelques notifications à afficher sur l'espace web de l'administrateur.
Voici un petit script de mon cru :
Ce script affiche toutes les 2 secondes (pour l'exemple) une ligne du type : "21/08/2013 19:10:28 - notification 8 - X"
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 <html> <head> <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script> <script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script> <script> $(document).ready(function(){ showNotification(); }); var i = 0; // compteur function showNotification() { // ICI : on peut faire un appel AJAX vers un fichier PHP, qui va interroger la Base de données. // S'il y a une notification à afficher, on l'affiche : var datehoraire = $.datepicker.formatDate('dd/mm/yy', new Date())+' '+new Date().toLocaleTimeString(); var spanX = ' - <span onclick="delNotification('+i+');">X</span>'; var reponse = '<div id="notif' + i + '">' + datehoraire + ' - notification ' + i + spanX + '</div>'; $('#notification').prepend(reponse); // prepend : on l'affiche en tête du div i++; if(i<10){ // pour TEST window.setTimeout(showNotification, 2000); // Toutes les 2 secondes } // pour TEST } function delNotification(i) { // suppression de la notification au clic sur le "X" $('#notif'+i).remove(); } </script> </head> <body> <div id="notification"></div> </body> </html>
Je te laisse le soin de créer l'appel AJAX et le fichier PHP qui effectuera et traitera la requête.21/08/2013 19:10:30 - notification 9 - X
21/08/2013 19:10:28 - notification 8 - X
21/08/2013 19:10:26 - notification 7 - X
21/08/2013 19:10:24 - notification 6 - X
21/08/2013 19:10:22 - notification 5 - X
21/08/2013 19:10:20 - notification 4 - X
21/08/2013 19:10:18 - notification 3 - X
21/08/2013 19:10:16 - notification 2 - X
21/08/2013 19:10:14 - notification 1 - X
21/08/2013 19:10:12 - notification 0 - X
Bonjour,
Voici le fichier notifications.php :
Code php : 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 <?php include_once('../../Models/Query_project.class.php'); $obj1 = new Query_project(); $json = array(); session_start(); $st='moved'; $obj1->search_assigned($st); $data = $obj1->get_data(); while($data) { $reponse='Le projet'.$data['id_projet'].'du client '.$data['nom_client'].' est assigné à'.$data['nom_user'].$data['prenom_user']; } ?>
Et le fichier requete-ajax.js :
Et dans le code de l'interface standard j'ai ajouté dans l'en tête :
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 $(document).ready(function() {rafraichissement();}) function rafraichissement(){ $.ajax({ type: "POST", url:"notifications.php", success:function(reponse) { $('#notifications').html(reponse); setTimeout("rafraichissement()", 5000); } }); };
Code html : Sélectionner tout - Visualiser dans une fenêtre à part <script type="text/javascript" src="doc_js/requete-ajax.js"></script>
Puis :
Code html : Sélectionner tout - Visualiser dans une fenêtre à part <div id="notifications"></div>
Quand j’exécute le code, rien ne s'affiche.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager