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 :

Calculer % Et Update de la bdd


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2008
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 67
    Par défaut Calculer % Et Update de la bdd
    Bonjour,

    Voila je voudrais calculer les points des filleuls d'un membre , dans un jeux , après de faire 10 % de ces points .D'accumuler le résultat de tous les filleuls et d'ajouter ce résultat au point du parrain .

    L'erreur est :
    You can't specify target table 'membre' for update in FROM clause
    Le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $pseudo = mysql_real_escape_string($_SESSION['pseudo']);
    $sql = "UPDATE membre SET pointtotal = pointtotal + ((SELECT SUM(pointtotal) FROM membre WHERE referent = '{$pseudo}')*0.1) WHERE pseudo = '{$pseudo}' ";
    mysql_query($sql) or die(mysql_error());
    Merci

  2. #2
    Membre émérite Avatar de vorace
    Homme Profil pro
    Développeur
    Inscrit en
    Août 2010
    Messages
    573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Août 2010
    Messages : 573
    Par défaut
    tu peux pas :
    Currently, you cannot update a table and select from the same table in a subquery.
    tu peux le faire en deux requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $pseudo = mysql_real_escape_string($_SESSION['pseudo']);
    $sqlPoint = "SELECT SUM(pointtotal)*0.1 as totalPoint FROM membre WHERE referent = '{$pseudo}'";
    $resultat = mysql_query($sql1) or die(mysql_error());
    $totalPoint = mysql_result($resultat, 0,"totalPoint");
    $sql = "UPDATE membre SET pointtotal = pointtotal + $totalPoint WHERE referent = '{$pseudo}'";
    mysql_query($sql) or die(mysql_error());

  3. #3
    Membre averti
    Inscrit en
    Décembre 2008
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 67
    Par défaut
    Quoi ? Dsl mais je n'ai pas compris , où est le problème ?

  4. #4
    Membre émérite Avatar de vorace
    Homme Profil pro
    Développeur
    Inscrit en
    Août 2010
    Messages
    573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Août 2010
    Messages : 573
    Par défaut
    revoila :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $pseudo = mysql_real_escape_string($_SESSION['pseudo']);
    $sqlPoint = "SELECT SUM(pointtotal)*0.1 as totalPoint FROM membre WHERE referent = '{$pseudo}'";
    $resultat = mysql_query($sql1) or die(mysql_error());
    $totalPoint = mysql_result($resultat, 0,"totalPoint");
    $sql = "UPDATE membre SET pointtotal = pointtotal + $totalPoint WHERE pseudo = '{$pseudo}'";
    mysql_query($sql) or die(mysql_error());
    non tu ne peux pas imbriquer une requete sur ta table membre pour updater la table membre...

  5. #5
    Membre averti
    Inscrit en
    Décembre 2008
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 67
    Par défaut
    Ah d'accord . Mais 2 choses , je ne comprends pas pourquoi tu mets

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $pseudo = mysql_real_escape_string($_SESSION['pseudo']);
    $sqlPoint = "SELECT SUM(pointtotal)*0.1 as totalPoint FROM membre WHERE referent = '{$pseudo}'"; // point total 
    $resultat = mysql_query($sql1) or die(mysql_error());
    $totalPoint = mysql_result($resultat, 0,"totalPoint"); // totalPoint , pourquoi ces 2 nom ? dans ma table je n'ai que pointtotal .
    $sql = "UPDATE membre SET pointtotal = pointtotal + $totalPoint WHERE pseudo = '{$pseudo}'";
    mysql_query($sql) or die(mysql_error());
    Et quand j'essays sa me marque :

    Query was empty

    Dsl je suis débutant je ne sais pas trop qu'est ce que ça veut dire .

  6. #6
    Membre émérite Avatar de vorace
    Homme Profil pro
    Développeur
    Inscrit en
    Août 2010
    Messages
    573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Août 2010
    Messages : 573
    Par défaut
    ma faute dsl, c'est pas $sql1 mais $sqlPoint à la troisième ligne, l'erreur te dit que la requete est vide et effectivement $sql1 est vide...
    dans un premier temps je fais le calcul que tu veux faire, c a d que je récupere le résultat de la somme des point des membres dont $pseudo est le réferent * 0.1 ensuite je l'additionne au point de $pseudo dans un second temps...
    et pour totalPoint c'est juste un alias, une variable si tu veux dans laquelle je stock le resultat du calcul...

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

Discussions similaires

  1. [SQL2K] Procedure calcul du poids de ma BDD
    Par sir_ben dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 13/09/2009, 17h33
  2. Calcule du stock dans un bdd
    Par Salsaboy60 dans le forum Modélisation
    Réponses: 12
    Dernier message: 16/01/2009, 14h56
  3. [Update d'une BDD 8.1.7 en 10.2]
    Par ApprentiOracle dans le forum Débuter
    Réponses: 4
    Dernier message: 29/08/2008, 11h28
  4. [SGBD] [PHP/MySQL] pb d'UPDATE dans la bdd
    Par sagitarium dans le forum Requêtes
    Réponses: 7
    Dernier message: 19/05/2006, 17h25
  5. [VB] faire un update avec une bdd en xml
    Par ekmule dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 01/02/2006, 22h41

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