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 en fonction de deux autres champs [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 13
    Points : 7
    Points
    7
    Par défaut UPDATE en fonction de deux autres champs
    Bonjour à tous, ou plutôt bonsoir :p

    J'ai eu un petit problème il y a de ça une semaine environ, on m'a acceuilli les bras ouverts, et aidé de manière très efficace.
    Aujourd'hui, j'ai de nouveau un problème, c'est donc ici que je viens demander de l'aide

    J'ai une table composée des champs suivants :
    _ pseudo
    _ votes
    _ backlinked
    _ total

    Je voudrais faire un système de top des membres (pseudo), en fonction du champ total (ORDER BY total DESC), qui lui est en fonction des deux autres champs : votes, et backlinked.

    Le problème, c'est que je ne vois pas (ne connais pas ?) la fonction qui permet de remplir un champ de la valeur somme des deux autres.

    En gros, je voudrais faire un UPDATE sur le champ total, de la valeur votes + backlinked, et ce, pour chaque champ pseudo.

    J'ai pensé à faire une boucle, affichant :
    _ Pseudo : (valeur du champ pseudo)
    _ Votes : (valeur du champ votes)
    _ Backlinked : (valeur du champ backlinked)
    _ Total : (valeur du champ votes + valeur du champ backlinked)

    Pour ensuite pouvoir mettre à jour le champ total de la valeur issue de l'opération (la somme).
    - (L'affichage de ces données n'est pas utile à mon script, c'est seulement pour se rendre compte du comportement de celui-ci, et des valeur des variables à un moment précis) -

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $query01 = mysql_query("SELECT * FROM myspaceranker ORDER BY backlinked DESC") or die("query01");
    while ($query02 = mysql_fetch_array($query01))
    {
    	$backlinked = $query02['backlinked'];
    	$votes = $query02['votes'];
    	$total = $votes + $backlinked;
    	$pseudo = $query02['pseudo'];								
    	echo 'Pseudo : ' . $pseudo . '<br>Votes : ' . $votes . '<br>Backlinked : ' . $backlinked . '<br>Total : ' . $total . '<br><br>';
    	mysql_query("UPDATE myspaceranker SET total = '$total'");
    }

    Ce que je voudrais, c'est pouvoir, ici, afficher le Total par une variable $total non pas égale à :
    $total = $votes + $backlinked;
    Mais à une variable égale à :
    $total = $query02['total'];

    Le problème vient de l'UPDATE, qui met à jour le champ total de chaque ligne de la même valeur, et non pas d'une valeur correspondante à chaque ligne.

    Ce que je cherche, c'est don un moyen de mettre à jour le champ total de chaque ligne de la valeur correspondant à votes + backlinked de la même ligne.


    J'espère que je m'exprime suffisamment clairement pour que vous compreniez mon problème, et que vous pourrez ensuite m'aider.

    N'hésitez pas à demander des précisions si besoin est.

    Merci d'avance, Noxstyle.

  2. #2
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2007
    Messages : 66
    Points : 45
    Points
    45
    Par défaut
    Il te suffit de rajouter une condition WHERE à ton update en fonction de la clé primaire de la table...
    Par exemple si ta clé primaire est ton pseudo, tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query("UPDATE myspaceranker SET total = '$total' WHERE pseudo = '$pseudo'");

  3. #3
    Membre confirmé Avatar de papyphp
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    438
    Détails du profil
    Informations personnelles :
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 438
    Points : 587
    Points
    587
    Par défaut
    Bonjour,

    1) Pourquoi enregistrer dans une table la somme de deux champs de cette table ?
    Il me semble plus simple, au moment ou vous avez besoin des enregistrements de demander à Mysql de faire le travail à votre place
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $requ = 'select pseudo, votes, backlinked, (votes + blaklinked) as total from ...'
    2) Si pour une raison que je ne perçois pas, vous avez besoin de ce champs dans votre table, alors la solution de Takis fonctionnera. Je vous propose cependant de faire travailler Mysql en lieu et place de php pour cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req = 'update myspaceranker SET total=votes + blaklinked'

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Merci beaucoup, ça marche maintenant.
    En fait, j'avais déjà essayé avec le WHERE, mais je l'avais placé avant le SET, et donc ça ne fonctionnait pas.

    Mon problème est donc résolu, je vous en remercie grandement.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/04/2012, 00h37
  2. Réponses: 15
    Dernier message: 02/05/2007, 18h04
  3. Réponses: 4
    Dernier message: 25/09/2006, 14h36
  4. [VBA] Remplir un champ en fonction d'un autre champ
    Par Amanck dans le forum Access
    Réponses: 6
    Dernier message: 18/05/2006, 10h12
  5. Réponses: 7
    Dernier message: 06/01/2006, 10h47

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