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

PHP & Base de données Discussion :

un record par IP mais visite qui incrémente [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre actif Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Points : 241
    Points
    241
    Par défaut un record par IP mais visite qui incrémente
    Bonjour.

    Je me suis fait une page statistiques et présentement, je n'utilise que INSERT INTO pour n'ajouter qu'une seule fois un IP avec quelques autres détails. Mais je voudrais incrémenter un champ sans incrémenter des lignes de records.

    Exemple: pour le IP 192.168.1.5 qui apparait seulement une fois dans ma base de données avec un autre champ qui lui incrémente selon le nombre de fois qu'il visite le site. Genre visite unique pour 24h.

    visites: 10
    ip: 192.168.1.5
    etc.

    Voici ce que j'ai fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    if(substr($ip, 0, 12) !== '192.168.197.' && $ip !== '127.0.0.1'){
     
    $resultat=$connexion->query("SELECT count(*) nip FROM ip WHERE ip='$ip'");
    $nbre=$resultat->fetch_array();
     
      if ($nbre['nip']==0) {
        $resultat = $connexion->query("INSERT INTO `wwwip`.`ip` (`ip`, `hn`, `ua`, `dt`) VALUES ('$ip','$hn','$ua',CURDATE())") or die('Error');
      }
     
    }
    Je ne sais pas si je pourrais utiliser UPDATE à la place de INSERT INTO afin de pouvoir ajouter de nouvelle visite qui n'existe pas dans ma base. J'ai déjà vu ça à quelque part.

    Bien à vous!
    On oublie souvent la simplicité ou la base dans la vie: Maslow

  2. #2
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Hello

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    UPDATE `wwwip`.`ip` SET `count`=`count`+1 WHERE `ip`='$ip'

  3. #3
    Membre éprouvé
    Homme Profil pro
    Touche à tout informatique autodidacte
    Inscrit en
    Janvier 2007
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Touche à tout informatique autodidacte

    Informations forums :
    Inscription : Janvier 2007
    Messages : 808
    Points : 912
    Points
    912
    Par défaut
    Bonjour,
    Il y a bien la commande REPLACE mais elle ne peut effectuer ce que tu veux que si l'ip est en primary key ou unique.
    Je te propose de lire ici http://dev.mysql.com/doc/refman/5.0/fr/replace.html

  4. #4
    Membre actif Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Points : 241
    Points
    241
    Par défaut
    Merci pour vos réponse, c'est apprécié.

    Je pense que les deux réponses pourrait m'aider et je vais tenter d'expliquer plus clair ma question :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO `wwwip`.`ip` (`ip`, `hn`, `ua`, `dt`) VALUES ('$ip','$hn','$ua',CURDATE())
    $ip reste le même, mais à chaque visite du même ip, dans le champ "nb" qui
    n'est pas encore créé, s'ajoute 1. En surplus, si le $ip vient 10 fois dans le mois, je verrais 10 dans le champ "nb".

    Le $ip peut être attribué à une autre personne et c'est alors que les autres détails peuvent changer. Mais le but principal du code est de détecter s'il y a des robots ou autres qui visite la page en question.

    Je vais essayer et tester si je peux combiner les deux REPLACE et COUNT.
    Je donne des nouvelles si je réussi.
    On oublie souvent la simplicité ou la base dans la vie: Maslow

  5. #5
    Membre actif Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Points : 241
    Points
    241
    Par défaut
    Replace ne fonctionne pas avec moi, j'ai changer INSERT INTO par REPLACE INTO. Je vais créer un condition :

    si la donnée n'existe pas, la créer, si non, faire la mise à jour.

    Cela devrait bien fonctionner. Et inclure la comannde `count`=`count`+1

    Merci.
    On oublie souvent la simplicité ou la base dans la vie: Maslow

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 18/03/2011, 11h17
  2. Réponses: 0
    Dernier message: 04/03/2011, 12h16
  3. Réponses: 0
    Dernier message: 05/03/2010, 22h14
  4. Réponses: 3
    Dernier message: 30/05/2008, 13h55
  5. [CR]grouper des dates par semaines, mais semaines FR !
    Par neo.51 dans le forum SAP Crystal Reports
    Réponses: 11
    Dernier message: 18/05/2004, 20h43

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