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 :

UPDATE PDO nombre de vu +1


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 71
    Par défaut UPDATE PDO nombre de vu +1
    Bonjour à tous,
    je voudrais ajouter +1 chaque fois que l'on consulte une page de mon site.
    Le problème c'est que c'est pas +1 qui est ajouté mais +2

    Je ne comprends pas comment c'est possible. Je vous joins le code que j'utilise :

    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
    $nb = $bdd->query("SELECT nb_vu FROM add_vu WHERE id_annonce=".$_GET['id']."");
    $nb_of_rows = $nb->rowCount(); 
     
    if($nb_of_rows == 0)
     
    	{
    $ajou = $bdd->prepare('INSERT INTO add_vu(id_annonce, nb_vu) VALUES(:id_annonce, :nb_vu)');
                      $ajou->execute(array(
                      'id_annonce' => $_GET['id'],
                      'nb_vu' => 1
    				  ));
    		}
    		else
    		{
    		$update = $bdd->prepare("UPDATE add_vu SET nb_vu=nb_vu+1 WHERE id_annonce= ? ");
    		$update->execute(array($_GET['id']));
     
     
    		}
    et la table que j'utilise :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE TABLE IF NOT EXISTS `add_vu` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `id_annonce` int(11) NOT NULL,
      `nb_vu` int(11) NOT NULL,
      KEY `id` (`id`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ;

    Merci de votre aide...

  2. #2
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    salut,

    c'est étrange de faire comme ça. Tu aurais largement pu faire beaucoup plus simple : dans ta table t_annonce, tu rajoutes une colonne nb_vue.
    A la création de l'annonce, nb_vue = 0 puis à chaque consultation :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE t_annonce SET nb_vue = nb_vue + 1 WHERE id_annonce = $id_annonce
    Ainsi quand tu sélectionnes une annonce, tu récupères en même temps que son détail, le nombre de vues.

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 71
    Par défaut
    oui effectivement, je n'y avais pas pensé je vais comme ça
    Cela dit, juste pour mon info, c'est quoi le problème de ce code ? pourquoi l'incrémentation est de 2 et pas de 1

  4. #4
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 71
    Par défaut
    Bonsoir,
    je viens de faire la modification de ma table annonces.
    Le problème reste le même, la table se met à jour avec +2 à chaque fois.
    Voici le nouveau code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
                    $id = $_GET['id'];		
    		$update = $bdd->prepare("UPDATE table_annonces SET nb_vu = nb_vu + 1 WHERE id= ? ");
    		$update->execute(array($id));
    Il y a pire, quand je laisse que cette requête dans mon fichier PHP, la mise à jour est aussi de +2 !?

    Je précise que je suis sous WAMP serveur

    Merci de votre aide

  5. #5
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    bah c'est que ton code est exécuté deux fois

    dans le navigateur fais F12, onglet réseau et vérifie ce qui se passe

  6. #6
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 71
    Par défaut
    Visiblement ça vient de chrome, j'ai fait le test sur internet explorer et c'est bon....
    Y-a-t-il un moyen pour solutionner le problème. Je sais que je ne dois pas être dans la bonne section du forum du coup mais bon si vous avez un début de debug

    Merci encore

  7. #7
    Membre éclairé Avatar de solo190
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2007
    Messages
    412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 412
    Par défaut
    hello cris84,
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $id = $_GET['id'];		
    $update = $bdd->prepare("UPDATE table_annonces SET nb_vu = nb_vu + 1 WHERE id= ? ");
    $update->execute(array($id));
    je pense que tu devrais plutot avoir ceci
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $id = $_GET['id'];		
    $update = $bdd->prepare("UPDATE table_annonces SET nb_vu = nb_vu + 1 WHERE id= ? ");
    $update->execute($id);
    comme rawsrc te l'a dit cette mise à jour s'execute 02 fois , montre le code global ou remonte un peu plus .
    A+

  8. #8
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 71
    Par défaut
    La question est de savoir pourquoi sur internet explorer la requête s’exécute une fois alors que sur google chrome 2 fois ?

    Le code donné génère une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning: PDOStatement::execute() expects parameter 1 to be array, string given in C:\wamp\www\test\view.php on line 27
    Je veux bien vous montré plus de code (après c'est la requête qui affiche l'annonce, rien de particulier, pas de redite du code nb_vu, ni dans le header.php) mais quand il y a que celui-la dans le fichier php l'incrémentation sur chrome est de 2 pour 1 sur internet explorer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php  session_start();
     
    $menu="view";
     
    require 'header.php'; 
     
    $update = $bdd->prepare("UPDATE table_annonces SET nb_vu = nb_vu + 1 WHERE id= ?");
    		$update->execute(array($_GET['id']));

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

Discussions similaires

  1. [PHP 5.4] Update PDO bizare vraiment bizare
    Par sinistrus dans le forum Langage
    Réponses: 9
    Dernier message: 10/09/2015, 11h42
  2. [PDO] pas de modification base avec update pdo
    Par jmch73 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 01/09/2014, 12h15
  3. [PDO] update pdo et poo impossible (id = null)
    Par laurentche dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 30/05/2014, 23h56
  4. [AC-2007] Update selon nombre de caractere
    Par Astragale dans le forum VBA Access
    Réponses: 3
    Dernier message: 14/05/2013, 03h46
  5. [MySQL] update pdo ne se fait pas
    Par serna dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 12/03/2013, 22h38

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