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 :

Problème d'initialisation de la valeur dans une table


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Inscrit en
    Août 2004
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 9
    Points : 7
    Points
    7
    Par défaut Problème d'initialisation de la valeur dans une table
    Bonjour,

    Dans ma table , je souhaite faire l'addition de certaines colonnes et ce pour chaque membre.Le resultat est rempli dans la colonne TOTAL.

    Voici ce que j'ai tout simplement fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $sql = 'SELECT w, x, y, z FROM tbl_session';  
     
    // on envoie la requête 
    $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());  
     
    // on fait une boucle qui va faire un tour pour chaque enregistrement 
    while($data = mysql_fetch_array($req))  
        {
    	// on additionne les colonnes
    	$sqla = "UPDATE tbl_session SET TOTAL = TOTAL + ".$data['w']." + ".$data['x']." + ".$data['y']." + ".$data['z']."";
      mysql_query($sqla);
     }
    Mais comment initialise-t-on la valeur de TOTAL à la fin de chaque ligne de la table ?
    Car à chaque fois, cette boucle prend la valeur du TOTAL de la ligne précédente et l'affiche sur l'ensemble de la colonne.

    Merci.

  2. #2
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    ben quand tu crées ta table, il y a DEFAULT
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  3. #3
    Futur Membre du Club
    Inscrit en
    Août 2004
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    excuse moi gorgonite,

    Je ne suis pas un expert, mais je ne comprend pas ce que je dois faire.

  4. #4
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    dsl
    mais ce n'est pas niveau expert

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE TABLE annonces (
    id BIGINT NOT NULL AUTO_INCREMENT,
    Title VARCHAR(10) DEFAULT 'Mon Titre',
    PRIMARY KEY (id)
    );
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  5. #5
    Futur Membre du Club
    Inscrit en
    Août 2004
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Oui c'est ce que je voulais dire, je suis un pure débutant

    Merci en tout cas !!

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Tu ne devrais pas faire un champ "total". En effet, c'est un champ en doublon car il est le total de champs déjà existants.
    Si tu as besoin du total, tu l'obtiens par un simple select, ce qui économise de l'espace dans ta bdd, et évite le risque d'erreurs dans le calcul du total (oubli de calcul, changement des champs entre leur sélection et l'affectation du total...).
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT w+x+y+z AS total FROM tbl_session WHERE ...

  7. #7
    Futur Membre du Club
    Inscrit en
    Août 2004
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Oui vg33 c'est une solution,
    j'y avais pas pensé mais je dois soustraire des choses plus tard et je pense que c'est donc mieux de stocker ce TOTAL quelque part.

    Je vais quand même de ce côté aussi.

  8. #8
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    normal que cela ne fonctionne pas, la requête faite dans la boucle update tous les champs de la table sans différence d'enregistrement.
    la table "tbl_session" devrait avoir un identifiant permettant l'udpate sur l'enregistrement.
    exemple :
    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
     
    // ici on recupere le champs id permettant de faire l'update sur cet enregistrement
    $sql = 'SELECT id, w, x, y, z FROM tbl_session';
     
    // on envoie la requête
    $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
     
    // on fait une boucle qui va faire un tour pour chaque enregistrement
    while($data = mysql_fetch_array($req))
    {
    // on additionne les colonnes sur l'enregistrement repere par l'id
    $sqla = "UPDATE tbl_session SET TOTAL = TOTAL + ".$data['w']." + ".$data['x']." + ".$data['y']." + ".$data['z']." WHERE id=".$data['id'];
     
    mysql_query($sqla);
     
    }

Discussions similaires

  1. Réponses: 9
    Dernier message: 08/08/2008, 20h06
  2. [VBA-A] Récupérer une valeur dans une table Access
    Par Dude2006 dans le forum VBA Access
    Réponses: 1
    Dernier message: 15/04/2006, 23h56
  3. problème de zero apres la virgule dans une table
    Par mosca_coroneja dans le forum Outils
    Réponses: 11
    Dernier message: 08/04/2006, 21h57
  4. Insertion valeure dans une table
    Par krfa1 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 29/03/2005, 10h50
  5. Test d'existence d'une valeur dans une table
    Par dleu dans le forum Bases de données
    Réponses: 9
    Dernier message: 29/12/2004, 10h38

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