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 :

Parcours Tableau et calcul


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Février 2009
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2009
    Messages : 140
    Par défaut Parcours Tableau et calcul
    Bonjour tout le monde.

    J'ai un probleme avec un tableau.
    Celui ci contient les données suivantes:

    DEBIT SENS COMPTE
    5 CR 100
    6 DB 100
    4 CR 101
    8 CR 102
    3 CR 102

    En fait je voudrais que, si le compte est le meme d'une ligne sur l'autre (il ne peut se repeter que sur 2 lignes), on additionne les 2 debits et on passe au compte suivant.

    Si le compte n'est pas le meme d'une ligne sur l'autre, alors la pas de problemes

    Pour le moment j'en suis la :
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    while(list($cle,$val) = each($arrRes)){ // Boucle sur comptes		
        $compte = $val["compte"]; // Compte en cours
        $total = 0;
     
        if ($val["SENS"]=="DB"){
            $total = $val["DEBIT"];
        }
        elseif($val["SENS"]=="CR"){
            $total = -$val["DEBIT"];
        }
     
        next($arrRes);	// On va voir la ligne suivante
     
        if ($val["compte"]==$compte){	// Si à la ligne suivante le compte est le meme que le compte en cours
            if ($val["SENS"]=="DB"){
                $total += $val["DEBIT"];
            }
            elseif($val["SENS"]=="CR"){
                $total -= $val["DEBIT"];
            }
     
        }
        else{	// Sinon on revient en arriere
            prev($arrRes);
        }
        echo $total." €";
    }
    Mais il semblerait que je passe toujours dans le if :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($val["compte"]==$compte){	// Si à la ligne suivante le compte est le meme que le compte en cours
    Je pense qu'il y à un probleme avec next et prev, ca fait bien avancé d'un cran dans le tableau, mais quand je lit la ligne j'ai toujours le même résultat

    Quelqu'un à t'il une idée ?

  2. #2
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    Slt,

    Il doit y avoir un souci d'algo à première vue car dans ta boucle la première chose que tu fais c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $compte = $val["compte"];
    donc forcément un peu plus loin quand tu testes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($val["compte"]==$compte)
    c'est toujours vrai vu que tu as justement initialisé $compte avec $val["compte"] juste avant.

    Je pense que tu te compliques bien la vie pour faire ton truc, quand j'ai besoin de faire ça je stocke dans une variable la valeur du compte précédent (il faut juste que ton tableau soit trié par compte). A chaque tour de boucle tu regardes si le compte courant est le même que celui que le précédent (stockée dans la variable), et on fait les traitements en conséquence.

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Février 2009
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2009
    Messages : 140
    Par défaut
    Justement, je prend le compte de la 1ere ligne,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $compte = $val["compte"];
    Puis je vais a la ligne suivante
    Et enfin je teste les 2 comptes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($val["compte"]==$compte)

  4. #4
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    Ok, je comprends mieux.
    Mais tu es sûr qu'en faisant juste next comme ça la valeur de $val va être modifiée ? J'en doute même si je ne connais pas bien next, en lisant la doc je ne suis pas sûr du tout que ça fasse ce que tu attends...

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Février 2009
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2009
    Messages : 140
    Par défaut
    Et bien du coup je pense que non ca ne fait pas ce que je souhaite, on se deplace bien mais $val n'est malheureusement pas modifié.
    Je ne connais pas bien les tableaux et du coup je suis un peu bloqué la dessus

  6. #6
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    Tu dois pouvoir recharger $val en utilisant current je pense.
    http://php.net/manual/fr/function.current.php

    Mais bon le bricolage de tableaux comme ça j'ai jamais trop aimé je préfère faire un algo tout classique avec un pauvre foreach parce que là aller un coup en avant revenir un coup en arrière... quand tu arrives au bout il faut quoi d'ailleurs ? Sur le dernier élément quand tu vas faire next ?

Discussions similaires

  1. For Each - parcours tableau
    Par Aizen64 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/12/2007, 21h26
  2. [Tableaux] Parcours tableau associatif
    Par damien27000 dans le forum Langage
    Réponses: 2
    Dernier message: 03/10/2007, 15h33
  3. pb parcours tableau 2d
    Par baillador dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 15
    Dernier message: 30/03/2006, 16h20
  4. Réponses: 10
    Dernier message: 19/01/2006, 06h41
  5. Tableau et calculs
    Par isak dans le forum Composants
    Réponses: 1
    Dernier message: 30/06/2005, 10h33

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