IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

verifier l'heure


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Octobre 2015
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Octobre 2015
    Messages : 69
    Points : 36
    Points
    36
    Par défaut verifier l'heure
    Bonjour je veux verifier si l'heure est inferieur a la date de la bdd si oui je veux la mettre a jours.

    Alors j'ai fais cette requete :
    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
     
    		switch ($vote_time) {
    			case 'vote1_time':
    				$dbh = mysql::getInstanceWebsite();
    				$sql = "SELECT *
    				FROM vote
    				WHERE pseudo = '".$pseudo."'";
    				$requete = $dbh->prepare($sql);
    				$requete->execute();
     
    				$row= $requete->fetch();
    				$time = time();
    				$can_revote_time = $time + 7200;
    				$new_vote_time = $row['vote1_time'] - time();
     
    				if ('vote1_time' < $time) {
    					$sql = "UPDATE vote
    							SET vote1_time = $new_vote_time,
    							vote1 = 0
    							WHERE pseudo = '".$pseudo."'";
    					$requete = $dbh->prepare($sql);
    					$requete->execute();
    				}
    				else ?> <a href="/vote1"><img alt="xtremtop100" src="/img/vote/xtremetop100.jpg"></a>
    				<?php
    			break;
     
    			default:
    				;
    			break;
    		}
    Mais je trouve pas d'erreur v ue que j'ai pas d'erreur affiché.

  2. #2
    Membre émérite Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Points : 2 286
    Points
    2 286
    Par défaut
    Bonjour,
    cela dépense de la BdD et du champ vote1_time de type timestamp, time ou ...?

    Basiquement pour insérer une date ou un timestamp dans une BdD,
    il faut utiliser des fonctions de conversion car 2017/05/28 ou 28/05/2017 ou 28052017 ou 20170528, 19:23 7:23M etc ... ça n'est que des possibilités
    de représentation de date ou heure, mais le stockage en base nécessite de passer par des passerelles ou fonctions

    Ainsi ici il faudrait convertir la chaine en un format time
    ex en mysql => https://dev.mysql.com/doc/refman/5.5...on_time-format
    Emérite, émérite je ne pense pas ... plutôt dans le développement depuis FORT FORT longtemps, c'est mon job, ça oui
    A part ça ... Il ne pleut jamais en Moselle !

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Octobre 2015
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Octobre 2015
    Messages : 69
    Points : 36
    Points
    36
    Par défaut
    Bonjour, alors voila mon sql;

    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
     
    CREATE TABLE `vote` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `pseudo` varchar(20) DEFAULT NULL,
      `ip` varchar(255) DEFAULT NULL,
      `vote1_time` varchar(255) DEFAULT '0',
      `vote1` varchar(50) DEFAULT NULL,
      `vote2_time` varchar(255) DEFAULT '0',
      `vote2` varchar(50) DEFAULT NULL,
      `vote3_time` varchar(255) DEFAULT '0',
      `vote3` varchar(50) DEFAULT NULL,
      `vote4_time` varchar(255) DEFAULT '0',
      `vote4` varchar(255) DEFAULT NULL,
      `dark_point` int(255) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM AUTO_INCREMENT=154 DEFAULT CHARSET=latin1;
    Et vous avez le script au dessus.

    Merci a m'aider svp

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Si je comprends bien tes "voteX_time" correspondent au dernier vote fait par l'utilisateur et tu veux limiter dans le temps la possibilité de revoter.
    Si oui, utilise un champ DATETIME et stocke donc la date entière du moment où il a voté. Ca sera beaucoup plus clair que ta tambouille sur des timestamp.
    Et met un NULL par défaut.

    Au passage également, faire une requête préparée sans paramètre, c'est inutile.
    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
    $sql = "SELECT vote1_time
    				FROM vote
    				WHERE pseudo = :pseudo";
    				$requete = $dbh->prepare($sql);
    				$requete->execute(array(':pseudo'=>$pseudo));
     				$row= $requete->fetch();
     
                                    $next_vote_time = new Datetime($row['vote1_time'] . ' + 2 hour');
                                    $now = new Datetime();
     
    				if ($now > $next_vote_time) {
    					$sql = "UPDATE vote
    							SET vote1_time = DATE_ADD(NOW(), INTERVAL 2 HOUR)
    							vote1 = 0
    							WHERE pseudo = :pseudo;
    					$requete = $dbh->prepare($sql);
    					$requete->execute(array(':pseudo'=>$pseudo);
    				}
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

+ Répondre à la discussion
Cette discussion est résolue.

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo