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 ne marche pas ! [MySQL]


Sujet :

PHP & Base de données

  1. #1
    GYK
    GYK est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 406
    Points : 94
    Points
    94
    Par défaut Update ne marche pas !
    Bonjour,

    Je faire un petit script tout bête et ça marche pas.
    Je voudrais connaitre le nombre de fois que se connecte mes membres sur un site.
    J'ai créer une table avec simplement deux champs: pseudo et ctr.
    Quand le pseudo n'est pas trouvé je le crée dans la table en mettant 1 dans ctr, sinon, je veux ajouter 1 à ctr.
    Comme vous voyez c'est tout bête et certainement très simple pour qui maitrise PHP.
    Ma connexion à la base étant déjà effectuée je vous livre uniquement le script basique que j'ai fait:
    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
     
        mysql_select_db("compteur");
        $query = "SELECT pseudo FROM compteur WHERE pseudo='".$loginUsername."'" ; 
        $result = (mysql_query($query));
     
        IF (!$result) 
          {   DIE('Échec de la requête : ' . mysql_error());
     
        mysql_query("UPDATE compteur SET ctr = ctr++ where pseudo='".$loginUsername."'");
        }
        else
        {
     
        mysql_query("INSERT INTO compteur(pseudo, ctr) VALUES('".$loginUsername."', 1);");
        }  
        mysql_close("compteur");
    Apparemment, systématiquement un enregistrement est inséré, même si le pseudo existe.

    Quelqu'un peut-il m'aider.

    Merci

  2. #2
    Membre chevronné Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Points : 2 232
    Points
    2 232
    Par défaut
    Ce que tu teste en faisant ça
    c'est est ce que la requete à fonctionné (qu'il y est un résultat ou pas). Ce que tu peux faire c'est compter le nombre de ligne du résultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $query = "SELECT pseudo FROM compteur WHERE pseudo='".$loginUsername."'" ;
    $result = (mysql_query($query));
    if (mysql_num_rows($result)==0)
    { UPDATE
    }else{INSERT}
    autant l'hiver éclate que l'hétéroclite
    le vrai geek c'est celui qui croit qu'il y a 1024 mètres dans un kilomètre

  3. #3
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Bonjour

    mysql_query renvoi toujours quelque chose, sauf si la requête a planté, et même si il n'y a aucun résultat.
    Donc il vaut mieux que tu rgardes par exemple le nombre de lignes renvoyées par ta requête grace à mysql_num_rows()

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $query = "SELECT pseudo FROM compteur WHERE pseudo='".$loginUsername."'" ; 
    $result = mysql_query($query) or die ('Echec de la requete '.$query.' : '.mysql_error());
     
    IF (mysql_num_rows($result)!=0) 
    { 
      $rq_update = "UPDATE compteur SET ctr = ctr++ where pseudo='".$loginUsername."'"; 
      mysql_query($rq_update) or die ('Echec de la requete '.$rq_update.' : '.mysql_error());
    }
    else
    {
      $rq_insert = "INSERT INTO compteur(pseudo, ctr) VALUES('".$loginUsername."', 1)" ;
      mysql_query($rq_insert) die ('Echec de la requete '.$rq_insert.' : '.mysql_error());
    }

    EDIT : grillée Mais on met à jour si il y a un pseudo donc si le nombre de lignes est différent de 0
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  4. #4
    GYK
    GYK est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 406
    Points : 94
    Points
    94
    Par défaut
    Bonjour à vous deux,

    J'ai fais comme vous me l'avez dit.

    Je créé bien l'enregistrement si celui-ci est nouveau, ça ca marche, mais l'incrément ne se fait pas si l'enregistrement est trouvé!

    Ou, mon ctr++ na marche pas, ou c'est carrément l'update!
    Vous avez une idée?

    A+

  5. #5
    Membre chevronné Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Points : 2 232
    Points
    2 232
    Par défaut
    C'est peut être le ++ qui n'est pas reconnu
    Tu peux faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      $rq_update = "UPDATE compteur SET ctr = ctr+1 where pseudo='".$loginUsername."'";
    autant l'hiver éclate que l'hétéroclite
    le vrai geek c'est celui qui croit qu'il y a 1024 mètres dans un kilomètre

  6. #6
    GYK
    GYK est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 406
    Points : 94
    Points
    94
    Par défaut
    salut guigui,

    Modif faite, pas de changement!

    A+

  7. #7
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Est-ce que tu obtiens une erreur en utilisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query($rq_update) or die ('Echec de la requete '.$rq_update.' : '.mysql_error());
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  8. #8
    Membre chevronné Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Points : 2 232
    Points
    2 232
    Par défaut
    Est ce qu'il y a un message d'erreur affiché?
    autant l'hiver éclate que l'hétéroclite
    le vrai geek c'est celui qui croit qu'il y a 1024 mètres dans un kilomètre

  9. #9
    GYK
    GYK est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 406
    Points : 94
    Points
    94
    Par défaut
    Je ne peux pas le dire car comme j'avais fait une modification manuelle, pour être plus sur je viens de faire un copie collé de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    IF (mysql_num_rows($result)!=0) 
    { 
      $rq_update = "UPDATE compteur SET ctr = ctr++ where pseudo='".$loginUsername."'"; 
      mysql_query($rq_update) or die ('Echec de la requete '.$rq_update.' : '.mysql_error());
    }
    else
    {
      $rq_insert = "INSERT INTO compteur(pseudo, ctr) VALUES('".$loginUsername."', 1)" ;
      mysql_query($rq_insert) die ('Echec de la requete '.$rq_insert.' : '.mysql_error());
    }

    et j'ai une parse erreur à la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query($rq_insert) die ('Echec de la requete '.$rq_insert.' : '.mysql_error());
    Et je ne vois pas laquelle!

  10. #10
    GYK
    GYK est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 406
    Points : 94
    Points
    94
    Par défaut
    J'ai trouvé ma parse, il manquait un OR

    Donc maintenant j'ai un message:
    Echec de la requete UPDATE compteur SET ctr = ctr++ where pseudo='GYK' : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'where pseudo='GYK'' at line 1
    A+

  11. #11
    GYK
    GYK est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 406
    Points : 94
    Points
    94
    Par défaut
    C'est bon, j'ai repris tout vos post et ma derniere erreur était bien du au ctr++ qui n'est pas reconnu, ca marche avec ctr +1

    Encore merci à vous deux et bonne journée!

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

Discussions similaires

  1. pas d'erreur mais update qui marche pas
    Par gloppy dans le forum Requêtes
    Réponses: 2
    Dernier message: 06/12/2006, 15h49
  2. [Conception] [débutant] Update ne marche pas
    Par yvandube dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 16/06/2006, 19h28
  3. inner join pour requete update ne marche pas
    Par Garra dans le forum Requêtes
    Réponses: 4
    Dernier message: 25/01/2006, 13h14
  4. Réponses: 3
    Dernier message: 12/10/2005, 20h54
  5. requête update qui marche pas
    Par MrsFrizz dans le forum Langage SQL
    Réponses: 4
    Dernier message: 01/12/2004, 08h16

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