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 :

Destockage après paiement accepté pour une commande


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 97
    Par défaut Destockage après paiement accepté pour une commande
    Bonjour,

    J'aimerai obtenir ceci :

    1- sélectionner les lignes de la table ligne_commande cad récupérer les produits de la dernière commande d'un client donné.

    2- pour chaque produit commandé : diminuer la quantité en stock de la taille commandée.

    J'arrive à le faire pour 1 mais dès que j'insère ma boucle ça fonctionne sauf pour le premier produit de la commande.
    (j'ai testé avec un ORDER BY id DESC et ASC : c'est le même produit qui n'est pas traité.)

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
     
    $order_id = 146;
    mysql_select_db($database_xxx, $xxx);
    $query_num = sprintf("SELECT ligne_commande.*, produit.* 
    					FROM ligne_commande 
    					INNER JOIN produit 
    					ON produit.id = ligne_commande.produit 
    					WHERE ligne_commande.num_commande = ". $order_id ." 
    					ORDER BY ligne_commande.id ASC");
    $num = mysql_query($query_num, $xxx) or die(mysql_error());
    $row_num = mysql_fetch_assoc($num);
     
    $totalRows_num = mysql_num_rows($num);
    echo ' nombres darticles ';
    echo $totalRows_num ;
     
    $compteurlignes = 0;
     
    while ($compteurlignes < $totalRows_num) {	
     
    echo ' nb compteur ';
    echo $compteurlignes ;
     
    if ($row_num['taille'] == "unique"){
    $stock_tu = $row_num['taille_unique'] - $row_num['quantite'];
    $prdt_tu = $row_num['id'];
    $query_tu = sprintf("UPDATE produit SET taille_unique=%s WHERE id=%s",
                           GetSQLValueString($stock_tu, "int"),
                           GetSQLValueString($prdt_tu, "int"));
      mysql_select_db($database_xxx, $xxx);
      $Result2 = mysql_query($query_tu, $xxx) or die(mysql_error());
     
      echo 'TU ok <br>';
    }
     
    if ($row_num['taille'] == "36 (XS"){
    $stock_36 = $row_num['36_XS'] - $row_num['quantite'];
    $prdt_36 = $row_num['id'];
    $query_36 = sprintf("UPDATE produit SET 36_XS=%s WHERE id=%s",
                           GetSQLValueString($stock_36, "int"),
                           GetSQLValueString($prdt_36, "int"));
      mysql_select_db($database_xxx, $xxx);
      $Result3 = mysql_query($query_36, $xxx) or die(mysql_error());
     
      echo '36 ok <br>';
    }
     
    if ($row_num['taille'] == "38 (S)"){
    $stock_38 = $row_num['38_S'] - $row_num['quantite'];
    echo 'npuveau stock en 38';
    echo $stock_38 ;
    $prdt_38 = $row_num['id'];
    $query_38 = sprintf("UPDATE produit SET 38_S=%s WHERE id=%s",
                           GetSQLValueString($stock_38, "int"),
                           GetSQLValueString($prdt_38, "int"));
      mysql_select_db($database_xxx, $xxx);
      $Result4 = mysql_query($query_38, $xxx) or die(mysql_error());
     
    echo '38 ok <br>';
    }
     
    if ($row_num['taille'] == "40 (M)"){
    $stock_40 = $row_num['40_M'] - $row_num['quantite'];
    $prdt_40 = $row_num['id'];
    $query_40 = sprintf("UPDATE produit SET 40_M=%s WHERE id=%s",
                           GetSQLValueString($stock_40, "int"),
                           GetSQLValueString($prdt_40, "int"));
      mysql_select_db($database_xxx, $xxx);
      $Result5 = mysql_query($query_40, $xxx) or die(mysql_error());
     
    echo '40 ok <br>';
    }
     
    if ($row_num['taille'] == "42 (L)"){
    $stock_42 = $row_num['42_L'] - $row_num['quantite'];
    $prdt_42 = $row_num['id'];
    $query_42 = sprintf("UPDATE produit SET 42_L=%s WHERE id=%s",
                           GetSQLValueString($stock_42, "int"),
                           GetSQLValueString($prdt_42, "int"));
      mysql_select_db($database_xxx, $xxx);
      $Result6 = mysql_query($query_42, $xxx) or die(mysql_error());
     
    echo '42 ok <br>';
    }
     
    if ($row_num['taille'] == "44 (XL"){
    $stock_44 = $row_num['44_XL'] - $row_num['quantite'];
    $prdt_44 = $row_num['id'];
    $query_44 = sprintf("UPDATE produit SET 44_XL=%s WHERE id=%s",
                           GetSQLValueString($stock_44, "int"),
                           GetSQLValueString($prdt_44, "int"));
      mysql_select_db($database_xxxk, $xxx);
      $Result7 = mysql_query($query_44, $xxx) or die(mysql_error());
    echo '44 ok <br>';
    } 
    $compteurlignes = $compteurlignes+1;
    }
    Ce qui s'affiche:
    nombres d'articles 5
    36 ok
    42 ok
    44 ok
    TU ok
    PROBLEME : Il n'y a que 4 tailles passées en revue alors qu'il y 5 produits de tailles différentes qui ont été commandés.


    Et si je remplace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while ($row_num = mysql_fetch_assoc($num) and $compteurlignes < $totalRows_num + 1)
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while ($compteurlignes < $totalRows_num)
    Voici ce qui s'affiche :
    nombres d'articles 5
    38 ok
    38 ok
    38 ok
    38 ok
    38 ok
    Là ce qui marche c'est que la boucle recommence autant de fois qu'il y a de produits commandés. Mais voici les problèmes :

    n°1 : c'est que dans cette commande il y a 1 article commandé en taille 42 et 1 autre en 44. J'ai testé avec d'autres commandes et il n'y a qu' 1 ligne de commande lue (et répétée) à chaque fois.

    n°2 : le stock n'est diminué qu'une seule fois (au 1er passage de la boucle).

    Je suis coincée depuis plusieurs jours, j'aurai bien besoin d'aide...

    Merci

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 92
    Par défaut
    Si j'ai bien compris, je pense qu'il te faut utiliser une fonction. Mais aprés je suis vraiment limité

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 97
    Par défaut
    merci de t'être intéressé à mon problème. A quel genre de fonctions tu penses ?

    J'ai réédité le message original (pour donner plus de précisions).

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 92
    Par défaut
    Peut tu remmetre le contenu de tes tables ?
    Et puis, dans tes tables a tu le nombre de produits restants du type 24 M
    Ou etc ? :p

  5. #5
    Membre émérite Avatar de micetf
    Homme Profil pro
    Professeur des Ecoles
    Inscrit en
    Mai 2009
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur des Ecoles
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2009
    Messages : 557
    Par défaut
    Il me semble avoir répondu à la même question ici.
    Fred

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 92
    Par défaut
    Bon je sèche, j'avais prévenu mais je pense sincèrement que ta réponse se trouve du coté des fonctions
    Ah ! tant mieux si on t'a dépanné

Discussions similaires

  1. Fichier de log pour une commande DOS
    Par Grulf dans le forum Windows XP
    Réponses: 3
    Dernier message: 16/04/2009, 19h05
  2. Besoin d'aide pour une commande
    Par maxwell86 dans le forum PL/SQL
    Réponses: 0
    Dernier message: 20/10/2008, 12h44
  3. Réponses: 1
    Dernier message: 11/02/2008, 11h25
  4. [Xpath] Expression XPath pour une commande
    Par nicolas66 dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 20/04/2007, 19h10
  5. [UML] Use Case pour une 'commande'
    Par _Kiro dans le forum Cas d'utilisation
    Réponses: 15
    Dernier message: 22/11/2006, 00h46

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