[Html/Js] Envoyer une fonction quand on fait precedent

Envoyer une fonction quand on fait precedent [Html/Js] - HTML/CSS - Programmation

Marsh Posté le 03-12-2007 à 16:52:23    

Bonjour, bon, je vais essayer d'etre clair, car c'est pas evident.
 
J'aimerais pouvoir faire en sorte que quand l'utilisateur fait un 'precedent' sur ma page, que je puisse executer un script juste avant que la page ne change.
Precent par bouton de navigation, fonction souris, ou que sais je encore.
 
Pourquoi ?
 
en fait j'ai fait un système de saisi de job qui tombe.
la liste est mise a jour regulièrement, et j'ai mis un système de flag pour pas que 2 personnes remplissent le meme job en meme temps.
quand un personne va dans la fiche du job, un flag est posé pour que personne d'autre ne puisse l'editer en meme temps, quand il a fini ce flag est enlever.
Problème tres con que j'ai constaté, si la personne fait precedent, il revient a la liste, le job n'est pas remplis, mais le flag lui reste posé, du coup plus moyen de faire la modification.
j'aimerais donc pouvoir trouver un moyen pour enlever le flag, meme quand on fait precedent, via une fonction qui execute une requete mysql par exemple.
 
J'espere que c'est comprehensible.
Merci pour votre aide.

Reply

Marsh Posté le 03-12-2007 à 16:52:23   

Reply

Marsh Posté le 03-12-2007 à 17:26:18    

tu peux essayer avec l'evenement onUnload, mais c'est sans garantie


---------------
We deserve everything that's coming...
Reply

Marsh Posté le 03-12-2007 à 17:29:29    

et on l'utilise comment exactement.
je fait onunload de la page qu'on quitte ?
ca s'utilise du genre < body onunload=fonction() > c'est ca ?
 
je prefere demander la car tout mon boulot est rester au taff.

Reply

Marsh Posté le 03-12-2007 à 17:34:35    

oui c ca
c le meme principe que l'evenement load : window.onunload = taFonction;
 
Chtite doc : http://developer.mozilla.org/en/do [...] w.onunload
 
mais encore une fois, c sans garantie, j'ai jamais "joué" avec ca :spamafote:


---------------
We deserve everything that's coming...
Reply

Marsh Posté le 03-12-2007 à 17:40:16    

généralement sur le unload il est trop tard. Il vaut mieux utiliser beforeunload

Reply

Marsh Posté le 03-12-2007 à 17:42:03    

et c compatible avec autre chose que IE ca ? :??:

 

EDIT:
ah oui ! merci pour l'info ca peut servir :jap:


Message édité par SICKofitALL le 03-12-2007 à 17:44:02

---------------
We deserve everything that's coming...
Reply

Marsh Posté le 03-12-2007 à 18:11:05    

beforeunload, c'est un truc de base aussi ?
effectivement, je vient d'essayer le unload, ca donne rien.
 
edit : par contre comme un peu pas faire executer de requete mysql dans un JS, j'ai voulu lui faire aller sur une page php qui enleve le flag, mais comme on fait precedent, ca marche pas.
quelqu'un a une idée pour virer mon flag avec le onbeforeunload ? la je seche completement.
Merci

Message cité 1 fois
Message édité par chico008 le 03-12-2007 à 18:37:02
Reply

Marsh Posté le 03-12-2007 à 21:15:59    

chico008 a écrit :

beforeunload, c'est un truc de base aussi ?
effectivement, je vient d'essayer le unload, ca donne rien.
 
edit : par contre comme un peu pas faire executer de requete mysql dans un JS, j'ai voulu lui faire aller sur une page php qui enleve le flag, mais comme on fait precedent, ca marche pas.
quelqu'un a une idée pour virer mon flag avec le onbeforeunload ? la je seche completement.
Merci


C'est le moment d'utiliser l'AJAX ;)


---------------
We deserve everything that's coming...
Reply

Marsh Posté le 04-12-2007 à 06:14:11    

comment, connais pas AJAX (a part Lacroix)

Reply

Marsh Posté le 04-12-2007 à 07:34:54    

xmlhttprequest , il existe des tas de tuto sur le net

Reply

Marsh Posté le 04-12-2007 à 07:34:54   

Reply

Marsh Posté le 04-12-2007 à 09:30:02    

SICKofitALL a écrit :


C'est le moment d'utiliser l'AJAX ;)


moi j'aurais dit: "C'est le moment de comprendre comment fonctionne un site web"
 
AMHA, là tu essayes de faire quelque chose de complétement inutile|inefficace.

Reply

Marsh Posté le 04-12-2007 à 09:34:21    

anapajari a écrit :


moi j'aurais dit: "C'est le moment de comprendre comment fonctionne un site web"
 
AMHA, là tu essayes de faire quelque chose de complétement inutile|inefficace.


 
c pas faux :D
il faut surement revoir le concept, mais en creusant du cote du XHR, ca peut tjrs servir plus tard ;)


---------------
We deserve everything that's coming...
Reply

Marsh Posté le 04-12-2007 à 11:30:41    

Bah si vous avez d'autres moyen de gerer ca je suis preneur hein.
moi j'etait parti sur mon système de flag car ca me paraissait le plus simple, mais si vous avez d'autres methodes, je suis aussi preneur.

Reply

Marsh Posté le 04-12-2007 à 11:58:12    

tu considères ton flag comme périmé au bout de X minutes (en dehors du précédent, tu peux avoir le problème du mec qui reste sur un écran et se barre en congé 3 semaines).
A chaque demande de modifs tu vérifies que le propriétaire du flag est bien celui qui fait la modif.

Reply

Marsh Posté le 04-12-2007 à 12:21:32    

bah y'a pas de gestion de user deja, on bosse tous dans la meme equipe.
on est 8 au max a faire ca, tous les uns a coter des autres.
ca elimine aussi le truc du mec qui part en congé, car dans tout les cas si on constate que quelqu'un a pris un job et l'a toujours pas rempli au bout de X temps (20 minutes au max), on le lui rappellera (a coup de baffes generalement :p )


Message édité par chico008 le 04-12-2007 à 12:22:10
Reply

Marsh Posté le 06-12-2007 à 18:27:51    

Bon, j'ai essayer avec de l'AJAX, mais ca ne donne rien.
dans ma balise body j'ai un onbeforeunload=test('1')
 
ma fonction :
function test(job)
{
if(window.XMLHttpRequest) // Firefox  
   defl = new XMLHttpRequest();  
else if(window.ActiveXObject) // Internet Explorer  
   defl = new ActiveXObject("Microsoft.XMLHTTP" );
else { // XMLHttpRequest non supporté par le navigateur  
   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..." );
}
 
 defl.open('GET', './deflag.php?id='+job, true);
 defl.send(null);  
}
 
deflag.php
y'a rien de particulier, je recupere ma variable avec un $_GET['id'];
et je balance une requete simple type
update table set flag=0 where id='$id'
la requete marche aussi, en passant l'url a la main, ca fonctionne.
 
Par contre tout ca cumuler, ca marche pas.
J'ai remarquer qu'en faisant precedent, la fonction ne se declenchait pas, par contre si c'est un changement de page demander par un lien ou une autre fonction, la on passe bien dedans, sauf que moi c'est quand on fait un precedent que je veut qu'elle se declenche :s
 
la j'ai vraiement plus d'idée, si vous avez la solution, ou un autre methode pour ce genre de choses, je suis ouvert a toutes suggestion.


Message édité par chico008 le 06-12-2007 à 18:43:48
Reply

Marsh Posté le 06-12-2007 à 20:41:48    

chico008 a écrit :

si la personne fait precedent, il revient a la liste, le job n'est pas remplis, mais le flag lui reste posé

A mon avis, le clic sur "precedent" n'est qu'un cas parmi tant d'autres cas qui font que le flag reste pose ...

Reply

Marsh Posté le 07-12-2007 à 08:57:29    

bah pour le moment c'est le seul, le navigateur lui je craint pas la fermeture sauvage, on est tous sous FF et y'a toujours un onglet ou 2 avec une page internet.
y'a vraiement que le coup du precedent qui me gene,  
ok, on peut "eduquer" les collègues pour pas faire de precedent la dessus, mais ca arrive tellement vite aussi.


Message édité par chico008 le 07-12-2007 à 08:58:30
Reply

Marsh Posté le 07-12-2007 à 09:06:19    

Dans ce cas, voici une idee a la con : quand ton client charge la page de la liste de jobs, tu effaces tous les drapeaux associes a ce client. Ca resout localement ton probleme de "precedent" mais ca en cree de nouveaux, a toi de voir.

Reply

Marsh Posté le 07-12-2007 à 09:24:33    

bah ouais mais non, car quand tu fait precedent, tu revient a la page sans la charger, donc la requete ne s'executera pas.

Reply

Marsh Posté le 07-12-2007 à 09:45:54    

Quoi que tu fasses, y'aura toujours des problèmes.
 
Le seul moyen valable, c'est d'utiliser un timeout. Si au bout de 5 minutes pas d'activité, le flag se vire...
 
C'est dans ce genre de cas qu'on voit les limites du web pour les applications :(

Reply

Marsh Posté le 07-12-2007 à 11:10:15    

mmm, ma page avec le listing se rechargeant automatiquement toutes les 2 minutes, je pense que je fait opter pour ca, verification de la durée du flag, si c'est a plus de 5 minutes, RAZ.

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed