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 :

diminution stock en cas de commande [MySQL]


Sujet :

PHP & Base de données

  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 diminution stock en cas de commande
    Bonjour,

    J'aimerai diminuer la quantité en stock de chaque produit commandé. J'ai essayé quelque chose mais ça ne fonctionne pas. Et vu mon niveau et le temps que j'y ai déjà passé... je préfère me tourner vers vous.

    Table: ligne_commande
    id.......................int(11)
    num_commande....int(10)
    produit................int(10)
    prix....................float(5,2)
    quantite..............int(11)
    taille..................varchar(6)
    ss_ss_total_ttc.....float(7,2)

    LES VALEURS DE TAILLE : "unique", "36 (XS", "38 (S)", "40 (M)", "42(L)", "44 (XL"

    Table: produit
    id......................int(20)
    ...
    taille_unique........int(11)
    36_XS................int(11)
    38_S..................int(11)
    40_M..................int(11)
    42_L...................int(11)
    44_XL.................int(11)

    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
    <?php
    if ($response_code == 00){
    $paramcom_num = $order_id;
    mysql_select_db($database_xx, $xx);
    $query_num = sprintf("SELECT * FROM ligne_commande INNER JOIN produit ON produit.id = ligne_commande.produit WHERE ligne_commande.num_commande = %s", GetSQLValueString($paramcom_num, "int"));
    $num = mysql_query($query_num, $xxx) or die(mysql_error());
    $row_num = mysql_fetch_assoc($num);
    $totalRows_num = mysql_num_rows($num);
     
    if ($row_num['taille'] == "unique"){
    $stock_tu = $row_num['taille_unique'] - $row_num['quantite'];
    $prdt_tu = $row_num['produit.id'];
    $updatestock_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($updatestock_tu, $xxx) or die(mysql_error());
    }
    if ($row_num['taille'] == "36 (XS"){
    $stock_36 = $row_num['36_XS'] - $row_num['quantite'];
    $prdt_36 = $row_num['produit.id'];
    $updatesstock_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($updatestock_36, $xxx) or die(mysql_error());
    }
    if ($row_num['taille'] == "38 (S)"){
    $stock_38 = $row_num['38_S'] - $row_num['quantite'];
    $prdt_38 = $row_num['produit.id'];
    $updatestock_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($updatestock_38, $xxx) or die(mysql_error());
    }
    if ($row_num['taille'] == "40 (M)"){
    $stock_40 = $row_num['40_M'] - $row_num['quantite'];
    $prdt_40 = $row_num['produit.id'];
    $updatestock_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($updatestock_40, $xxx) or die(mysql_error());
    }
    if ($row_num['taille'] == "42 (L)"){
    $stock_42 = $row_num['42_L'] - $row_num['quantite'];
    $prdt_42 = $row_num['produit.id'];
    $updatestock_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($updatestock_42, $xxx) or die(mysql_error());
    }
    if ($row_num['taille'] == "44 (XL"){
    $stock_44 = $row_num['44_XL'] - $row_num['quantite'];
    $prdt_44 = $row_num['produit.id'];
    $updatestock_44 = sprintf("UPDATE produit SET 44_XL=%s WHERE id=%s",
                           GetSQLValueString($stock_44, "int"),
                           GetSQLValueString($prdt_44, "int"));
      mysql_select_db($database_xxx, $xxx);
      $Result7 = mysql_query($updatestock_44, $xxx) or die(mysql_error());
    } 
    } ?>
    Il n'y a pas encore de boucle. Mais je pensais que ça fonctionnerait pour le 1er produit de la table ligne_commande. Mais ça ne marche pas du tout.
    J'ai essayé de travailler dessus toute une journée... je suis un peu désespérée.

  2. #2
    Modérateur
    Avatar de Vil'Coyote
    Homme Profil pro
    Développeur adélia & Web
    Inscrit en
    Février 2008
    Messages
    4 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur adélia & Web
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2008
    Messages : 4 583
    Par défaut
    salut,

    if ($response_code == 0) plutôt non? sinon '00'

    par contre au cas ou tu peux toujours te faire un echo de tes requête pour vérifier leur contenu.
    la vie n'est pas cirrhose des foies ...

    Avant de poster un message Rechercher n'est pas qu'une option.
    FAQ Web - Tuto Web

  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 pour ta réponse. C'est OK pour ce problème !

    Par contre, maintenant le stock de chaque taille commandée est bien diminué de la quantité commandée sauf la taille 38. J'ai pourtant l'impression d'avoir fait la même chose que pour les autres tailles...

    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
     
    //réduir la quantité en stock des produits commandés
    //$paramcom_num = 128;
    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 = 123");
    $num = mysql_query($query_num, $xxx) or die(mysql_error());
    $row_num = mysql_fetch_assoc($num);
     
    $totalRows_num = mysql_num_rows($num);
    echo $totalRows_num ;
     
    $compteurlignes = 0;
     
    while ($row_num = mysql_fetch_assoc($num) and $compteurlignes < $totalRows_num) {	
     
    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'];
    $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_xxx, $xxx);
      $Result7 = mysql_query($query_44, $xxx) or die(mysql_error());
    echo '44 ok <br>';
    } 
    $compteurlignes = $compteurlignes+1;
    }
    Si quelqu'un arrive à voir pourquoi ça m'aiderait vraiment.
    J'en ai tellement marre que je passe sûrement à côté de quelque chose d'énorme.

  4. #4
    Membre expérimenté Avatar de firehist
    Homme Profil pro
    Intégrateur Web Freelance
    Inscrit en
    Février 2008
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Intégrateur Web Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2008
    Messages : 151
    Par défaut
    Bonjour,

    Modifie ton bloc de la façon suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if ($row_num['taille'] == "38 (S)"){
       echo 'Test réussi | valeur de la variable => '.$row_num['taille'];
    } else {
       echo 'Test échoué| valeur de la variable => '.$row_num['taille'];
    }
    Peut-être le problème vient que ton $row_num['taille'] ne contient pas exactement "38 (S)"

    Si il affiche réussi, c'est que le problème vient de l'intérieur de ce bloc, sinon, c'est ta variable qui n'a pas la bonne forme.

  5. #5
    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
    Bonjour,

    Merci pour ta réponse.

    Ca y est j'ai enfin identifié le vrai problème.
    J'ai fait plusieurs tests et ce n'est pas la taille 38 qui pose un problème mais la première ligne de chaque commande qui n'est pas destockée.
    (Si je commande 1 seul produit il n'est pas destocké non plus.)

    Je ne comprends pas pourquoi. Est-ce que vous pensez que ça pourrai venir de la boucle ? Je ne dois pas commencer à 0 ?!

    Il ne me manque plus que ce déstockage automatique pour ouvrir mon site... Et ça fait déjà 3 jours que j'essaie sans succès. Je suis vraiment découragée là.
    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
     
    mysql_select_db($database_x, $x);
    $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);
    $num = mysql_query($query_num, $x) or die(mysql_error());
    $row_num = mysql_fetch_assoc($num);
     
    $totalRows_num = mysql_num_rows($num);
     
    $compteurlignes = 0;
     
    while ($row_num = mysql_fetch_assoc($num) and $compteurlignes < $totalRows_num) {	
     
    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_x, $x);
      $Result2 = mysql_query($query_tu, $x) 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_x, $x);
      $Result3 = mysql_query($query_36, $x) or die(mysql_error());
     
      echo '36 ok <br>';
    }
     
    if ($row_num['taille'] == "38 (S)"){
    $stock_38 = $row_num['38_S'] - $row_num['quantite'];
    $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_xk, $x);
      $Result4 = mysql_query($query_38, $x) 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_x, $x);
      $Result5 = mysql_query($query_40, $x) 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_x, $x);
      $Result6 = mysql_query($query_42, $x) 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_x, $x);
      $Result7 = mysql_query($query_44, $x) or die(mysql_error());
    echo '44 ok <br>';
    } 
    $compteurlignes = $compteurlignes+1;
    }

  6. #6
    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
    Ce problème là est résolu.

  7. #7
    Membre expérimenté Avatar de firehist
    Homme Profil pro
    Intégrateur Web Freelance
    Inscrit en
    Février 2008
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Intégrateur Web Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2008
    Messages : 151
    Par défaut
    Bonne ouverture de site alors.

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

Discussions similaires

  1. Choix du langage pour logiciel de gestion de stock et commandes
    Par plex dans le forum Langages de programmation
    Réponses: 7
    Dernier message: 15/09/2017, 16h29
  2. Réponses: 1
    Dernier message: 26/07/2006, 11h23
  3. Réponses: 2
    Dernier message: 03/03/2006, 13h41
  4. Procédures stockées : EXEC vs ADODB.command
    Par glidez dans le forum ASP
    Réponses: 2
    Dernier message: 13/12/2005, 10h59
  5. Commande d'exécution d'une procedure stockée SQL sur vb
    Par tseg dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 04/11/2003, 12h47

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