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 :

une incrementation en trop


Sujet :

Langage PHP

  1. #1
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 467
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 467
    Points : 4 656
    Points
    4 656
    Par défaut une incrementation en trop
    Bonjour a tous,

    j'ai fais un simple compteur de visites ou le nombre de visites est stocke dans un .txt (cela evite des connexions a la BDD inutiles (certaines pages ne s'y connectent pas) et je n'avais pas envis de creer/modifier un table.
    donc... dans toutes mes pages, j'ai ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
     session_start();
     include("config.php");
     include("functions.php");
     if(!isset($_SESSION["updated"]))
     {
      View();
      $_SESSION["updated"]=1;
     }
    ?>
    et pour afficher : echo '<br />';ReadView();

    mes fonctions :
    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
    function View()
    {
     $file="view.txt";
    // Ouvrture en écirture-enregistrement du fichier
     $verif=@fopen($file,"r+");
    // Recuperation des donnees
     $val=fread($verif,filesize($file));
    // Preparation des donnees dans $new
     $val++;
    // Placement du curseur du fichier an début
     rewind($verif);
    // Insertion des nouvelles donnees
     fputs($verif,$val);
    // Fermeture du fichier
     fclose($verif);
    }
     
    function ReadView()
    {
      echo 'Site visit&eacute; '.file_get_contents('view.txt').' fois.';
    }
    je viens de verifier : SEULEMENT quand on provient de la page index.php (pour la #1 fois), le compteur s'increment de 2 au lieu de 1

    par exemple :
    - c'est la #1 fois que l'on arrive sur le site de index.php a une-page.php => le compteur = +2

    - c'est la #1 fois que l'on arrive sur le site de une-page.php a une-autre-page.php => le compteur = +1

    - c'est la #1 fois que l'on arrive sur le site de une-page.php a index.php => le compteur = +1


  2. #2
    Membre chevronné Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Points : 1 895
    Points
    1 895
    Par défaut
    regarde dans les logs d'Apache pour voir les appels qui sont fait quand tu vas sur la page index.php

    petite parenthèse au sujet de la fonction View, tu peux la réduire avec les fonctions http://php.net/file_get_contents et http://php.net/file_put_contents

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function View()
    {
        $file = 'view.txt';
     
        $val = file_get_contents($file);
        $val++;
        file_put_contents($file, $val);
    }

  3. #3
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 467
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 467
    Points : 4 656
    Points
    4 656
    Par défaut
    alors la... je suis sur mon posterieur (pour rester poli ^^)

    #1 merci pour le code simplifie (en effet, j'utilise peu les fichiers)
    #2 ta fonction ne fait plus bugger...

    => je ne vais pas chercher le pourquoi du comment, mais juste te dire
    Merci !

  4. #4
    Membre chevronné Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Points : 1 895
    Points
    1 895
    Par défaut
    Citation Envoyé par Doksuri Voir le message
    #2 ta fonction ne fait plus bugger...
    euuuhhhhhhh ma fonction remplace exactement ce que faisait ta fonction précédente donc ne crie pas victoire trop vite, le bug est sûrement encore là donc fait plein de tests pour vérifier

  5. #5
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 467
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 467
    Points : 4 656
    Points
    4 656
    Par défaut
    En effet... il est toujours la

    => j'avais pourtant fait 2-3 tests avant de dire que c'etait bon...

  6. #6
    Membre chevronné Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Points : 1 895
    Points
    1 895
    Par défaut
    si tu arrives sur la page index.php et que tu rafraîchis la page, le compteur s'incrémente ?
    même question si tu rafraîchis la page une 3e fois

    qu'est ce qui change sur cette page par rapport à la gestion des sessions sur les autres pages ?

  7. #7
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 467
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 467
    Points : 4 656
    Points
    4 656
    Par défaut
    bien vu pour le rafraichissement (je n'y avais pas du tout pense)

    apres tous les tests : les rafraichissement n'increment pas le compteur

    si je rafraichit index.php et que je vais sur une-page.php. il ne s'increment pas

    c'est vraiment uniquement entre index.php et une-page.php (pour plus de clarete s'appel topo.php)

    ps : j'ai change le nom de la fonction View() en AddView() qui est plus parlant

    voici donc mes 2 pages entieres :
    index.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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <?php
     session_start();
     include("config.php");
     include("functions.php");
     if(!isset($_SESSION["updated"]))
     {
      AddView();
      $_SESSION["updated"]=1;
     }
    ?>
    <html>
     <head>
      <link rel="stylesheet" type="text/css" href="<?php echo $config['path'].'style.css'; ?>" />
      <title> - Accueil</title>
     </head>
     <body>
    Bienvenu sur le site d'escalade de osef.<br />
    blabla</br >
    <img src="<?php echo $config['path'].'img/le-site.jpg'; ?>" alt="[image : le site]"/>
    <br />Cliquez sur les ronds rouges ou affichez la <a href="<?php echo $config['path'].'topo.php'; ?>">liste</a>
    <br /><?php ReadView(); ?>
     </body>
    </html>
    le truc de "cliquez sur les ronds rouge" c'est pour faire une image avec differentes zone cliquable (pas encore fait)

    topo.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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    <?php
     session_start();
     include("config.php");
     include("functions.php");
     if(!isset($_SESSION["updated"]))
     {
      AddView();
      $_SESSION["updated"]=1;
     }
    ?>
    <html>
     <head>
      <link rel="stylesheet" type="text/css" href="<?php echo $config['path'].'style.css'; ?>" />
      <title>Saint Vaast - Topo</title>
     </head>
     <body>
    <?php
    mysql_connect($config['dbConnection']['host'], $config['dbConnection']['user'], $config['dbConnection']['pass']) or die ("Connexion Sql impossible.");
    mysql_select_db($config['dbConnection']['name']) or die ("Connexion a la base impossible.");
     
    	$result=mysql_query("SELECT secteur.idsecteur, secteur.namesect, voie.idvoie, voie.namevoie FROM secteur, voie WHERE secteur.idsecteur=voie.idsecteur order by idsecteur,idvoie");
    	$num_rows=mysql_num_rows($result);
    	$num_secteur=0;
    	echo 'Liste des voies par secteur :<dl><dt>';
    	for($i=0;$i<$num_rows;$i++)
    	{
    		$row=mysql_fetch_assoc($result);
    		if($num_secteur!=$row["idsecteur"])
    		{
    			$num_secteur=$row["idsecteur"];
    			echo '</dt><dt><a href="'.$config['path'].'show.php?x='.$row['idsecteur'].'">'.$row["namesect"].'</a>';
    		}
    		echo '<dd><a href="'.$config['path'].'show.php?x='.$row['idsecteur'].'&y='.$row['idvoie'].'">'.$row["namevoie"].'</a></dd>';
     
    	}
    	echo '</dt></dl>';
    echo '<br /><a href="'.$config['path'].'">accueil</a>';
    echo '<br />';ReadView();
    ?>
     </body>
    </html>

Discussions similaires

  1. Réponses: 3
    Dernier message: 15/07/2006, 05h18
  2. Création d'une incrémentation personalisée
    Par MatMeuh dans le forum Access
    Réponses: 3
    Dernier message: 10/07/2006, 22h26
  3. Comment dériver d'une TList sans trop de peine ?
    Par WebPac dans le forum Langage
    Réponses: 19
    Dernier message: 31/03/2006, 18h53
  4. modélisation d'une base : table trop grande
    Par Shabata dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 22/11/2004, 11h44
  5. [sdl+glut] une console en trop
    Par khayyam90 dans le forum GLUT
    Réponses: 3
    Dernier message: 02/08/2004, 09h15

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