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 :

Décompte dans une Boucle For


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2004
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 41
    Par défaut Décompte dans une Boucle For
    Bonjour,

    je gallère pour solutionner le problème ci-dessous, j'aimerai en téhorie obtenir le même nombre d'articles à décompter quand les 1er chiffres d'une réference sont similaire, petit schéma,

    ID----Model---Ventes---Unités---Stock---Décompte--Nouveau Stock----
    74---11111.6----1--------6------900--------6-----------894-----------
    75---11111------1--------1------900--------1-----------899----------
    76---22222------1--------1------800--------1-----------799----------

    "11111.6" est une référence indépendente de "11111" mais en réalité il s'agit du même produit, l'un est vendu par lot de 6 définit dans la base de données, l'autre par 1, logiquement j'ai vendu en tout 7 articles de la référence 11111, j'aimerai donc que ça décompte 7 articles de la référence "11111.6" et 7 de la référence "111111" et ainsi obtenir,

    ID----Model---Ventes---Unités---Stock---Décompte--Nouveau Stock----
    74---11111.6----1--------6------900--------6-----------893-----------
    75---11111------1--------1------900--------1-----------893----------
    76---22222------1--------1------800--------1-----------799----------

    j'ai un petit bout de code exemple avec lequel je joue sur la référence,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    for ($i=0, $n=sizeof($order->products); $i<$n; $i++){ // faire une boucle sur les articles 
    if (strstr($order->products[$i]['model'], ".")){ // si détection du caractère "." dans model 
    $model = substr($order->products[$i]['model'], 0, strpos($order->products[$i]['model'], "-")); // "11111.6" devient "11111" 
    echo $stock_left = $stock_values['stock'] - ($order->products[$i]['ventes']*$stock_values['unites']); // déduit 7 articles du stock
    } 
    elseif ($model == $order->products[$i]['model']){ // si la 2ème référence article est = à la 1ère "11111" 
    echo $stock_left; // déduit aussi 7 articles du stock pour cette référence
    } 
    else{ 
    echo $stock_left = $stock_values['stock'] - ($order->products[$i]['ventes']*$stock_values['unites']); // déduit 1 article du stock 
    pour la référence 22222 
    } 
    }
    je pense qu'il y a d'autres méthodes...

    merci pour vos réponses..

  2. #2
    Membre émérite Avatar de stunti
    Inscrit en
    Mai 2006
    Messages
    520
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mai 2006
    Messages : 520
    Par défaut

  3. #3
    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
    Il faudrait préciser un peu parce que
    mais je suis pas certain et il fonctionne mal..
    c'est pas génial pour nous guider

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2004
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 41
    Par défaut
    Citation Envoyé par JWhite
    Il faudrait préciser un peu parce que

    c'est pas génial pour nous guider
    Slt JWhite,

    j'avoue que mon problème n'est pas très simple à expliquer n'étant pas expert, par contre j'ai ajouté un 2ème résultat pour essayer de faire comprendre au mieux ce que je souhaite obtenir sans tenir compte du code..

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Par défaut
    franchement pour en arriver la ...mauvaise conception des tables mais ce n'est que mon humble avis

  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
    Je suppose que tu fais un UPDATE quelque part pour mettre ton stock à jour, il suffit peut-être de modifier la condition pour avoir ce que tu souhaites (tu comptes le nombre à enlever et après UPDATE table SET ... WHERE ref LIKE 'ref%')...

    Et +1 avec Boo, à mon avis tu devrais avoir un champ ref pour les 5 chiffres et un champ sous-ref pour l'éventuelle suite.

Discussions similaires

  1. multi ouverture de la console dans une boucle for
    Par jamesleouf dans le forum C++
    Réponses: 2
    Dernier message: 16/03/2006, 21h26
  2. Shell - Erreur dans une boucle for
    Par claralavraie dans le forum Linux
    Réponses: 4
    Dernier message: 11/01/2006, 13h45
  3. Problème avec une DLL dans une boucle For
    Par BraDim dans le forum Langage
    Réponses: 5
    Dernier message: 20/09/2005, 12h22
  4. [batch] incrémentation dans une boucle for
    Par bart64 dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 08/09/2004, 20h05
  5. Réponses: 3
    Dernier message: 06/07/2004, 10h21

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