Résolu Compte à rebours PHP et MySQL

Statut
N'est pas ouverte pour d'autres réponses.

Yelloww

Joueur CS:GO bitch!
Premium
Inscription
11 Mars 2012
Messages
574
Réactions
160
Points
20 088
RGCoins
0
Bonjour!
Je viens ici en urgence
j'ai fait un compte à rebours qui bloque l'utilisation d'un formulaire en Javascript, mais le problème c'est que avec les fuseaux horaires ce n'est pas bon du tout .. :(
J'aimerais faire ça en php & mysql
J'ai changé ma méthode, avant je fonctionnais avec une date, maintenant avec une valeur
J'aimerai retirer -1 à ma valeur chaque seconde mais je ne sais pas comment faire..

Ma valeur dans ma BDD est 21600 ce qui correspond à 6 heures, et j'aimerais que maintenant elle soit à 21599, 21598, ... et ça de manière automatique
quelqu'un peut m'aider? :)
 

Paul GTP

Légende vivante
VIP
Inscription
15 Août 2013
Messages
6 194
Réactions
7 545
Points
24 772
RGCoins
0
Hey ;)

Il me semble que tu peux passer par une tâche cron :mmh:
C'est une opération MySQL qui s'occupe d’exécuter une requête automatiquement :p
Cependant, tu dois disposer des droits Administrateur sur ta bdd, ce qui n'est pas le cas avec un hébergeur classique je crois :mmh:

Sinon, ce n'est pas possible de le faire en PHP en principe D:
Tu dois passer par js. Mais je comprends pas vraiment ton problème de fuseau horaire :mmh:

Je te propose une alternative:
  • Créer un champ "date_formulaire" dans ta table "users"
  • Stocke-y la date (en timestamp) d'utilisation du formulaire (quand un membre fait le formulaire => le timestamp est enregistré)
  • Rajoute une condition: Si date_formulaire > timestampactuel+21600 il peut remplir le formulaire, Sinon message d'erreur: vous devez attendre 6h
Je pense que c'est relativement simple à coder, il me semble même l'avoir déjà fait :p

Bonne fin de nuit,
Paul GTP
 

Yelloww

Joueur CS:GO bitch!
Premium
Inscription
11 Mars 2012
Messages
574
Réactions
160
Points
20 088
RGCoins
0
Le problème, c'est que quelqu'un étant en Amérique n'a pas le même compte à rebours que moi, on vient de tester, donc c'est relativement gênant ..
J'ai un accès total à ma BDD, elle est sur mon VPS.
JS s'execute côté client, donc il prend l'heure du PC du client et se base à ça pour le compte à rebours, voici mon problème :/
Dans ma base de donnée, ma date c'est par exemple 2017-01-14 00:51:45, et je récupère cette valeur, j'ajoute 6h et à partir de cette nouvelle valeur je commence mon compte à rebours.
Une personne n'étant pas dans le même fuseau horaire que moi ne pourras pas utiliser le formulaire.

Ce que je cherche à faire, c'est bloqué pendant une durée de 6 heures un formulaire, peu importe où se trouve la personne, si chez moi il est 00h53 et que je fais l'action qui entraine le blocage du formulaire pendant 6 heure, et que si une autre personne où chez lui il est 12h53, il faut que dans les 6 heures qui suivent le formulaire soit aussi bloqué
 

Paul GTP

Légende vivante
VIP
Inscription
15 Août 2013
Messages
6 194
Réactions
7 545
Points
24 772
RGCoins
0
Ce que je cherche à faire, c'est bloqué pendant une durée de 6 heures un formulaire, peu importe où se trouve la personne, si chez moi il est 00h53 et que je fais l'action qui entraine le blocage du formulaire pendant 6 heure, et que si une autre personne où chez lui il est 12h53, il faut que dans les 6 heures qui suivent le formulaire soit aussi bloqué
D'où l'alternative que je t'ai proposé :p
Je te propose une alternative:
  • Créer un champ "date_formulaire" dans ta table "users"
  • Stocke-y la date (en timestamp) d'utilisation du formulaire (quand un membre fait le formulaire => le timestamp est enregistré)
  • Rajoute une condition: Si date_formulaire > timestampactuel+21600 il peut remplir le formulaire, Sinon message d'erreur: vous devez attendre 6h
Je pense que c'est relativement simple à coder, il me semble même l'avoir déjà fait :p
Tu n'as même pas besoin de js avec cette technique ;)
 

Yelloww

Joueur CS:GO bitch!
Premium
Inscription
11 Mars 2012
Messages
574
Réactions
160
Points
20 088
RGCoins
0
D'où l'alternative que je t'ai proposé :p

Tu n'as même pas besoin de js avec cette technique ;)
C'est sûrement du à la fatigue, j'en peux plus là mdrrr
Le date_formulaire correspondrait à quoi?
Parce que je ne comprend pas le raisonnement
Si le date_formulaire correspond à la dernière utilisation du formulaire, alors, si on fait un exemple
Dernière utilisation 01:01

01:01 > 01:01 + 6 donc 01:01 > 07:01, ce n'est pas possible ? Je dois mal comprendre ?
 

Yelloww

Joueur CS:GO bitch!
Premium
Inscription
11 Mars 2012
Messages
574
Réactions
160
Points
20 088
RGCoins
0
Après une nuit de sommeil, j'ai trouvé comment faire.

Je fais une requete MySQL pour obtenir l'heure de la base de donnée, je stock cette variable, puis je me sers de cette variable pour la base de mon compte à rebours, comme ça pas de problème de fuseau horaire :)
 

Rivals

Ancien staff
Inscription
27 Août 2016
Messages
1 706
Réactions
897
Points
13 104
RGCoins
0
Tu n'avais pas besoin d'utiliser de BDD, tu pouvais utiliser l'objet DateTime de PHP : il te permet de gérer plusieurs formats et configurer plusieurs fuseaux horaires : ::):
 

Paul GTP

Légende vivante
VIP
Inscription
15 Août 2013
Messages
6 194
Réactions
7 545
Points
24 772
RGCoins
0
C'est sûrement du à la fatigue, j'en peux plus là mdrrr
Le date_formulaire correspondrait à quoi?
Parce que je ne comprend pas le raisonnement
Si le date_formulaire correspond à la dernière utilisation du formulaire, alors, si on fait un exemple
Dernière utilisation 01:01

01:01 > 01:01 + 6 donc 01:01 > 07:01, ce n'est pas possible ? Je dois mal comprendre ?
Ton topic est résolu mais je développe mon id :p
Dans date_formulaire tu mets le timestamp (fais des recherches sur internet) :p
Le timestamp ne stocke pas "14/01/2017 20:43:17" mais "1484422997".
Définition rapide du timestamp: c'est le nombre de secondes écoulées depuis le 01/01/1970.
Tu as donc juste à rajouter 6h en secondes dans ta condition pour bloquer le formulaire :p

Edit: J'ai déplacé ta discussion en section Résolu .

Bonne soirée,
Paul GTP
 
Dernière édition:
Statut
N'est pas ouverte pour d'autres réponses.
Haut