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 :

Petit soucis de calcul (1+1=3) [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2007
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Avril 2007
    Messages : 290
    Par défaut Petit soucis de calcul (1+1=3)
    Bonsoir

    Sur une page, j'affiche un petit compteur qui indique le nombre de fois ou celle-ci à été chargé. A chaque fois que quelqu'un charge la page, je récupère l'ancienne valeur dans ma bdd et j'y ajoute +1.

    Mais voila, j'ai ce genre de résulat quand j'actualise : 3+1 = 5 ; 5+1 = 7; 7+1 = 9 ... Il me monte le résulatde 2 par 2.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // On récupere la valeur du compteur actuel et on lui ajoute 1
    $compteur_actuel = $donnees['compteur'];
    $compteur = $compteur_actuel + 1 ;
     
    // On met à jour le compteur dans la base de données
    mysql_query("UPDATE requetes SET  compteur ='".$compteur."' WHERE id='".$id."'") or die(mysql_error());
    Le code est pourtant bon ^^

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Par défaut
    Bonsoir,
    pour incrémenter un champ MySQL, j'écris souvent une requête de ce style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req = 'UPDATE `requetes` SET `compteur` = `compteur`+1 WHERE `id` = '.$id;
    En ce qui concerne une incrémentation PHP, le plus souvent je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      $i = 1;
      $i++;
     
      echo $i; // retourne 2
    Cordialement,
    DaRiaN.

  3. #3
    Membre Expert Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Par défaut
    Bien qu'il puisse être un peu simplifié à mon avis au niveau de l'écriture, ton code me semble juste.
    Je simplifierai comme cela:
    ton Code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $compteur_actuel = $donnees['compteur'];
    $compteur = $compteur_actuel + 1 ;
    Celui que je te suggère:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $compteur = $donnees['compteur'] + 1 ;
    Bon c'est de la petite économie.

    Par contre pour ton pb, je regarderais si ta page n'est pas chargée 2 fois à un moment. Ce qui expliquerait que ton pb ne vient pas d'une erruer de calcul comme tu le pense, mais d'autre chose.
    Cela m'est déjà arrivé
    Fait un echo après l'envoye de ta requête.

  4. #4
    Membre éclairé
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2007
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Avril 2007
    Messages : 290
    Par défaut
    Merci pour vos réponses. Il y a bien un echo après ma requête qui m'indique bien l'évolution 2 par 2.

    C'est étrange oO

  5. #5
    Membre Expert Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Par défaut
    Ecris ce code et on vera, quand même ya un méchant truc là
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    echo $donnees['compteur']."<br>";
    $compteur_actuel = $donnees['compteur'];
    $compteur = $compteur_actuel + 1 ;
     
    $Query="UPDATE requetes SET  compteur ='".$compteur."' WHERE id='".$id."'";
    echo $Query."<br>";
    mysql_query($Query) or die(mysql_error());

  6. #6
    Membre éclairé
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2007
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Avril 2007
    Messages : 290
    Par défaut
    J'ai éffacé toutes les données de la bdd, et maintenant ca fonctionne correctement. Etrange. Merci pour votre aide en tout cas

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

Discussions similaires

  1. [Débutant] Petit souci avec calcul
    Par Attila54 dans le forum VB.NET
    Réponses: 31
    Dernier message: 11/10/2011, 08h49
  2. petit souci de calcul
    Par vinse dans le forum Delphi
    Réponses: 6
    Dernier message: 10/01/2007, 22h06
  3. Réponses: 6
    Dernier message: 21/01/2004, 13h25
  4. [DEBUTANT] petits soucis avec un prgm de chat
    Par LechucK dans le forum MFC
    Réponses: 8
    Dernier message: 19/01/2004, 16h52

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