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

Administration MySQL Discussion :

where date() > date+24heures


Sujet :

Administration MySQL

  1. #1
    wjc
    wjc est déconnecté
    Nouveau membre du Club
    Inscrit en
    Avril 2004
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 56
    Points : 29
    Points
    29
    Par défaut where date() > date+24heures
    Bonjour,

    Je suis en train de développer un petit annuaire de lien.
    Pour eviter la triche au niveau du comptage des hit IN j'ai commencé à mettre en place à système de contrôle par ip.
    C'est à dire qu'un seul hit par visiteur ne sera compté par tranche de 24 heures.
    Donc avant de mettre à jour le nombre de hits in dans la base je fais ce type de contrôle

    Voici ma table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    links_history_ip_id      int(11)       Non        auto_increment      
    links_id                  int(11)          Non      0
    ip_hits                  varchar(15)    Non    0
    links_history_ip_date   datetime      Non   0000-00-00 00:00:00
    Voici mon code php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
      function tep_check_unique_hit($link_id) {
    $count_hit = false;
    $ip_address = tep_get_ip_address();
     
       $ip_count_query = tep_db_query("select count(*) as total from " . TABLE_LINKS_HISTORY_IP . " where ip_hits = '" . $ip_address . "' and links_id = '" . (int)$link_id . "'"); !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
       $ip_count = tep_db_fetch_array($ip_count_query);
     
    if ($ip_count['total'] == 0) {
     INSERT in table
      $count_hit = true;
    }
    return $count_hit;
     }
    Al'endroit ou j'ai mis les !!!!!!!!(dans la clause where) je souhaite mettre donc cette portion de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    and date_format(now(), '%Y%m%d %H:%i:%s') > date_format(links_history_ip_date, '%Y%m%d %H:%i:%s')+24 hours
    Le problème c'est que je ne parvient pas à mettre ça dans une syntaxe correcte merci de me filer un coup de main.

    Autrement je peux insérer cette portion de contrôle sur la date comme ceci
    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
     
      function tep_check_unique_hit($link_id) {
    	$count_hit = false;
    	$ip_address = tep_get_ip_address();
     
        $ip_count_query = tep_db_query("select * from " . TABLE_LINKS_HISTORY_IP . " where ip_hits = '" . $ip_address . "' and links_id = '" . (int)$link_id . "'");
     
    	if (tep_db_num_rows($ip_count_query)) { 
          while ($ip_count = tep_db_fetch_array($ip_count_query)) {
            !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
      if ( date('Y-m-d H:i:s') > ($ip_count['links_history_ip_date']+24) ) {
    	      tep_db_query("insert into " . TABLE_LINKS_HISTORY_IP . " (links_id, ip_hits, links_history_ip_date) values ('" . (int)$link_id . "', '" . $ip_address . "', now())");
    	      $count_hit = true;
    	    }
    	  }
    	}
    	return $count_hit;
      }
    Voilà donc si quelqun pouvait me filer un coup de main sur la syntaxe pour le controle sur les enreigstrements inférieures à 24 heures et me dire quelle solution utilisée entre la première et la deuxième ce serait sympathique

    Merci


  2. #2
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Le problème c'est que je ne parvient pas à mettre ça dans une syntaxe correcte merci de me filer un coup de main.
    La syntaxe SQL, c'est le forum d'à côté.
    Boost ftw

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    ça c'est bien vrai loufoque
    mais pour rester en php
    tu peut les stocker en timestamp
    et faire

    SELECT*FROM table WHERE date<timestamptoday-86400

  4. #4
    wjc
    wjc est déconnecté
    Nouveau membre du Club
    Inscrit en
    Avril 2004
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 56
    Points : 29
    Points
    29
    Par défaut
    Merci pour ta réponse désolé pour le post dans la mauvaise catégorie.

    Je préfère utiliser la syntaxe mysql pour ce code.

    Un admin peut -il déplacer le post dans la bonne rubrique ?

    Merci

  5. #5
    Membre confirmé Avatar de KibitO
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2004
    Messages
    616
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2004
    Messages : 616
    Points : 606
    Points
    606
    Par défaut
    Fais ta demande a un admin par mp, ça ira plus vite car il est pas censé etre sur tous les topics, dc il risque de passer à coté du tien.

  6. #6
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    SELECT * FROM table WHERE date<(UNIX_TIMESTAMP(NOW())-86400)
    Boost ftw

  7. #7
    wjc
    wjc est déconnecté
    Nouveau membre du Club
    Inscrit en
    Avril 2004
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 56
    Points : 29
    Points
    29
    Par défaut
    merci pour ta réponse loufoque mais en fait j'aurais aimé avec la syntaxe exacte de ce type.
    C'est plus pour me fomer à un syntaxe correcte que de faire fonctionner le script.

    and date_format(now(), '%Y%m%d %H:%i:%s') > date_format(links_history_ip_date, '%Y%m%d %H:%i:%s')+24 hours

    Certains vont dire que je suis chaint
    Mais c'est important pour moi de comprendre et être capable de respecter une syntaxe.

    Merci

  8. #8
    Membre expert
    Avatar de Alexandre T
    Homme Profil pro
    Chef de projets AMO
    Inscrit en
    Mai 2002
    Messages
    1 213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets AMO
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 213
    Points : 3 001
    Points
    3 001
    Par défaut
    J'ai fait un annuaire de lien avec cette fonctionnalité : www.clublegendes.com
    Tu peux voter une fois par jour avec la mêm ip. Tu peux tester

    La méthode est bien plus simple :
    Je crée une table avec vote

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    CREATE TABLE `a_vote` (
     `id_site` mediumint(8) unsigned NOT NULL default '0',
     `vote_pour` tinyint(3) unsigned NOT NULL default '0',
     `vote_contre` tinyint(3) unsigned NOT NULL default '0',
     `ip` int(10) unsigned NOT NULL default '0',
     `jour_vote` date NOT NULL default '0000-00-00',
     PRIMARY KEY  (`id_site`,`ip`,`jour_vote`)
    ) TYPE=MyISAM COMMENT='Stockage quotidien des votes.'
    L'astuce est que j'insère la date du jour l'ip et l'id du site. Tu remarqueras dans le code une contrainte d'unicité sur date, ip , id_site. Ainsi un php, j'insère ma ligne. Si mysql me retourne une erreur 1064 ca veut dire que c'est un doublon alors message d'insulte !
    IP est un mediumint(8) car j'utilise les fonctionnalités PEAR qui me compresse mon ip en medium.
    Alexandre Tranchant
    Chef de projet AMO pour le Cerema.
    Retrouvez mes articles sur PHP et Symfony

  9. #9
    wjc
    wjc est déconnecté
    Nouveau membre du Club
    Inscrit en
    Avril 2004
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 56
    Points : 29
    Points
    29
    Par défaut
    Salut,

    Je me suis replongé dans le code aujourd'hui :

    la synthaxe propre dans la lignée de mon code est il me semble :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    and date_format(links_history_ip_date, '%Y%m%d %H:%i:%s') > date_format(SUBDATE(now(), INTERVAL 24 HOUR), '%Y%m%d %H:%i:%s')
    En tout cas cela fonctionne.

    Comment on fait pour mettre le topic comme "réglé" ?

    ++

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

Discussions similaires

  1. Clause where avec une date..
    Par bobic dans le forum Requêtes
    Réponses: 3
    Dernier message: 09/04/2008, 16h12
  2. Réponses: 3
    Dernier message: 19/06/2007, 22h34
  3. Ajout d'heure a une date, probleme de 24heures
    Par morgan47 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 04/07/2006, 12h01
  4. Recupérer une donnée avec un WHERE concernant la date
    Par benlasavate dans le forum Access
    Réponses: 1
    Dernier message: 23/01/2006, 08h18
  5. Clause Where sur une Date
    Par Zebulonn dans le forum Installation
    Réponses: 31
    Dernier message: 20/10/2005, 11h56

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